求 基于44B0 裸机程序

tempusr   2010-1-18 22:50 楼主
写了几天都没写出来,还是请教各位大虾吧

基于44B0 的按键中断LED 裸机程序啊?发个给我好吗?

谢谢了

249191508@qq.com

回复评论 (6)


  1. /***************************************************************/
  2.        LED.c文件
  3. /*
  4.         本实验接口说明

  5.         GPB5  ------ LED0
  6.         GPB6  ------ LED1
  7.         GPB8  ------ LED2
  8.         GPB10 ------ LED3
  9. */

  10. /*------------------------地址声明---------------------------*/

  11. #define GPBCON (*(volatile unsigned *)0x56000010)
  12. #define GPBDAT (*(volatile unsigned *)0x56000014)
  13. #define GPBUP (*(volatile unsigned *)0x56000018)

  14. #define uchar unsigned char
  15. #define uint unsigned int

  16. /*-----------------------定义全局变量------------------------*/


  17. /*-----------------------函数声明----------------------------*/
  18. void Delay(int x);

  19. /*------------------------------------------------------------/
  20. 函数名称:        Delay
  21. 功能描述:        延时函数
  22. 传    参:        int x
  23. 返 回 值:        无
  24. -------------------------------------------------------------*/
  25. void Delay(int x)  
  26. {
  27.         int k, j;
  28.         while(x)
  29.         {
  30.                 for (k=0;k<=0xff;k++)
  31.                         for(j=0;j<=0xff;j++);
  32.                        
  33.                 x--;
  34.         }
  35. }
  36. /*-------------------------------------------------------------
  37. 函数名称:        ledMain
  38. 功能描述:        入口程序
  39.                         初始化后,进入跑马灯死循环
  40. 传    参:        无
  41. 返 回 值:        int 0
  42. -------------------------------------------------------------*/
  43. int ledMain(void)
  44. {       
  45.         GPBCON = 0x1dd7fc;        // GPB5,GPB6,GPB8,GPB10设置为输出
  46.         GPBDAT = ((1<<5)|(1<<6)|(1<<8)|(1<<10));        //使LED全灭
  47.         GPBDAT&=0xffe;                //关闭蜂鸣器
  48.         GPBUP = 0x00;
  49.        
  50.         while (1)                        // 死循环
  51.         {
  52.                
  53.                 GPBDAT = ~(1<<5);        //LED0亮
  54.                 Delay(500);
  55.                 GPBDAT = ~(1<<6);        //LED1亮
  56.                 Delay(500);
  57.                 GPBDAT = ~(1<<8);        //LED2亮
  58.                 Delay(500);
  59.                 GPBDAT = ~(1<<10);        //LED3亮
  60.                 Delay(500);
  61.         }
  62.         return 0;  
  63. }



  1. //Init.s 文件
  2. AREA |DATA|,CODE,READONLY
  3.   ENTRY
  4.   ldr r13, =0x1000
  5.   IMPORT ledMain
  6.   b ledMain
  7.   END


发个简单的跑马灯实验程序给你吧,按键中断LED,其实也很简单
只要加个判断语句就好了。例如
if(按键被按下)
GPBDAT = ~(1<<5);  //灯亮
点赞  2010-1-18 23:24
楼上 他要的是中断的,不是普通IO口查询的

楼主可以参考下面网页的程序
http://www.pudn.com/downloads31/sourcecode/embed/detail99594.html
点赞  2010-1-19 09:07
杯具~~~~网上很多demo的呀
点赞  2010-1-19 10:49
引用: 引用 3 楼 mxm1986 的回复:
杯具~~~~网上很多demo的呀

哈哈 杯具每天都有
点赞  2010-1-19 11:06
引用: 引用 3 楼 mxm1986 的回复:
杯具~~~~网上很多demo的呀

就是因为在网上找了半天,没找到,才来这里求助的啊
点赞  2010-1-20 19:35
我在网上还下过优龙的44b0的光盘呢,在电驴上面下的~~~有个FS BIOS的demo~~~
点赞  2010-1-21 09:17
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复