基于MINI2440开发板的LED流水灯实验(裸机)_方便找的。

 

看完了S3C2140A的GPIO开发部分,然后对着2440的数据手册写了个LED的小程序,总结下,程序如下:

初始化部分程序: Init.s
IMPORT Main CODE32 AREA Init,
CODE,READONLY ENTRY
ldr r0, =0x53000000           ;关门狗 mov r1, #0x0                    
str r1, [r0]                         ;
关闭关门狗 ldr sp, =1024*4                 ;设置堆栈,由于main函数里调用了其他函数,所以一定要设置堆栈 bl Main main_loop b main_loop END
 
主程序:mian.c
/*  main.c  */
/*     实现mini2440 LED流水灯 */
/*     LED IO 控制器 */ #define GPBCON (*(volatile unsigned *)0x56000010) #define GPBDAT (*(volatile unsigned *)0x56000014) #define GPBUP  (*(volatile unsigned *)0x56000018)
/*     延时程序:Delay     入口参数:dly延时程序     功能描述:软件延时函数     出口函数:无 */ void delay(unsigned int dly);
/*     主函数:
Main() */
void Main()
{     GPBCON= 0x15400;
    GPBUP=0xFFFF;    
  while(1)    
  { GPBDAT&=~0x20;  
        delay(120);        
    GPBDAT&=~0x60;   
        delay(120);      
    GPBDAT&=~0xE0;     
       delay(120);        
   GPBDAT&=~0x1E0;       
       delay(120);
       GPBDAT|=0x20;     
       delay(120);        
   GPBDAT|=0x60;        
   delay(120);        
   GPBDAT|=0xE0;        
   delay(120);        
   GPBDAT|=0x1E0;  
     }
}
/*     实现延时程序 */
void delay(unsigned int dly)
{
   unsigned int i;
     for(;dly>0;dly--)
        for (i = 0;i < 1000; i++);
}
 
这里有个要注意的是,在VIVI里下载到SDRAM运行时,因为VIVI设置了系统时钟,发型程序运行异常时,可以将延时函数的参数设置大些,延长延时程序。反过来如果在SDRAM里运行正常,而用VIVI下载到NAND Flash里运行时异常,那是因为外部时钟相对要慢很多,可以将延时程序的参数设置小些,减少延时程序时间。

posted on 2012-09-26 16:28  Red_Point  阅读(1141)  评论(0)    收藏  举报

导航