流水灯程序:
/******************************************
程序的目的:流水灯
I/O口与LED的对应关系:
GPB5 LED0
GPB6 LED1
GPB8 LED2
GPB10 LED3
********************************************/
/*---------地址声明----------*/
#include "2440addr.h"
注释:在本程序的开头,引入一个2440addr.h的头文件,该文件中定义了我们要常用的寄存器的地址,以后的程序中,只需引入即可。引入的方法是将这个头文件直接放在ADS安装文件的include中就行了。
/*---------变量声明---------*/
#define uint unsigned int
/*---------函数声明----------*/
void delay(uint); //延时函数
#define LED0_ON() (rGPBDAT&=~(1<<5)) //LED0点亮
#define LED1_ON() (rGPBDAT&=~(1<<6)) //LED1点亮
#define LED2_ON() (rGPBDAT&=~(1<<8)) //LED2点亮
#define LED3_ON() (rGPBDAT&=~(1<<10)) //LED3点亮
#define LED0_OFF() (rGPBDAT|=(1<<5)) //LED0熄灭
#define LED1_OFF() (rGPBDAT|=(1<<6)) //LED1熄灭
#define LED2_OFF() (rGPBDAT|=(1<<8)) //LED2熄灭
#define LED3_OFF() (rGPBDAT|=(1<<10)) //LED3熄灭
注释:这种对LED的控制方式非常方便。
/*-----------主函数----------*/
int LSD_Main(void)
{
rGPBCON=0x1dd7fc; //将GPB5、GPB6、GPB8、GPB10设置为输出
rGPBUP=0xfff; //禁止GPB端口上拉
rGPBDAT=((1<<5)|(1<<6)|(1<<8)|(1<<10)); //让LED灯全灭
while(1) //程序进入流水灯死循环
{
LED0_ON();
delay(30);
LED0_OFF();
LED1_ON();
delay(30);
LED1_OFF();
LED2_ON();
delay(30);
LED2_OFF();
LED3_ON();
delay(30);
LED3_OFF();
delay(30);
}
return 0;
}
/*---------延时函数---------*/
void delay(uint x)
{
uint i,j,k;
for(i=0;i
for(j=0;j<=0xff;j++)
for(k=0;k<=0xff;k++);
}
到现在,流水灯的实验就做完了。但是这种流水灯太过于单调,我想让LED灯按照我要求的方式流动,那应该怎么实现呢?那么就是下面要实现的花样灯实验的内容了。
实验三 花样灯
花样灯的目的就是让LED灯可以随意流动。
/******************************************
程序的目的:花样灯
I/O口与LED的对应关系:
GPB5 LED0
GPB6 LED1
GPB8 LED2
GPB10 LED3
********************************************/
/*---------地址声明----------*/
#include "2440addr.h"
/*---------变量声明---------*/
#define uint unsigned int
/*---------函数声明----------*/
void Delay(uint); //延时函数
void BoardInit(void);
uint tab[]={
0x29E,0xffe,0xfde,0xfbe,
0xefe,0xbfe,0xefe,0xfbe,
0xfde,0xebe,0xbde,0xffe};
注释:用数组方式来实现花样灯。
/*-----------主函数----------*/
int HYD_Main(void)
{
BoardInit(); //板子初始化
注释:将初始化放在一个函数中,这样使程序看起来清晰明了。
while(1) //程序进入花样灯死循环
{
int i;
for(i=0;i<13;i++)
{
rGPBDAT=tab;
Delay(20);
}
}
return 0;
}
/*---------延时函数---------*/
void Delay(uint x)
{
uint i,j,k;
for(i=0;i
for(j=0;j<=0xff;j++)
for(k=0;k<=0xff;k++);
}
/*---------初始化函数-------*/
void BoardInit( )
{
rGPBCON=0x1dd7fc; //将GPB5、GPB6、GPB8、GPB10设置为输出
rGPBDAT=((1<<5)|(1<<6)|(1<<8)|(1<<10)); //让LED灯全灭
rGPBUP=0xfff; //禁止GPB端口上拉
}
到此,LED灯的实验基本就做完了。