mini2440裸机程序--LED灯(C语言)

来源:互联网 发布:跳跃网络财务 编辑:程序博客网 时间:2024/04/27 15:14
       看了mini2440配套光盘里面的例子,C语言的点亮LED程序略显复杂。当时打开工程,看到这么多文件,顿时傻了眼。还好自己能够有良好的心态,慢慢弄。   
      对于点亮LED灯的C语言程序,相对于汇编程序,除了MDK系统自动添加的启动代码S3C2440.S,其余的也就和汇编程序的步骤一样了。现在就把程序附在下面:

#define rGPBCON  (*(volatile unsignedlong *)0x56000010)
#define rGPBDAT  (*(volatile unsignedlong *)0x56000014)
#define rGPBUP   (*(volatile unsignedlong *)0x56000018)

#define GPB5_IN~(3<<10)
#define GPB6_IN~(3<<12)
#define GPB7_IN~(3<<14)
#define GPB8_IN~(3<<16)

#define GPB5_OUT(1<<10)
#define GPB6_OUT(1<<12)
#define GPB7_OUT(1<<14)
#define GPB8_OUT(1<<16)

#define LED1_ON~(1<<5)
#define LED2_ON~(1<<6)
#define LED3_ON~(1<<7)
#define LED4_ON~(1<<8)

#define LED1_OFF(1<<5)
#define LED2_OFF(1<<6)
#define LED3_OFF(1<<7)
#define LED4_OFF(1<<8)

voidLed_Port_Init(void);
void Delay(inttt);

voidmain()
{
Led_Port_Init();

rGPBDAT |=(LED1_OFF|LED2_OFF|LED3_OFF|LED4_OFF);

while(1)
{
rGPBDAT =rGPBDAT&(LED1_ON);
Delay(1000);
rGPBDAT =rGPBDAT|((LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF));
Delay(1000);

rGPBDAT =rGPBDAT&(LED2_ON);
Delay(1000);
rGPBDAT =rGPBDAT|((LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF));
Delay(1000);

rGPBDAT =rGPBDAT&(LED3_ON);
Delay(1000);
rGPBDAT =rGPBDAT|((LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF));
Delay(1000);

rGPBDAT =rGPBDAT&(LED4_ON);
Delay(1000);
rGPBDAT =rGPBDAT|((LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF));
Delay(1000);
}
}

voidLed_Port_Init(void)
{
rGPBCON &=~((3<<10)|(3<<12)|(3<<14)|(3<<16));
   rGPBCON |=(1<<10)|(1<<12)|(1<<14)|(1<<16);
}

void Delay(inttt)
{
inta,b;
for(a=0;a<=tt;a++)
for(b=0;b<=10000;b++);
}

原创粉丝点击