单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:5218|回复:0

ARM 流水灯C语言

[复制链接]
ID:83710发表于 2015-6-26 23:05|显示全部楼层
#include"2440addr.h"   //定义了各个特殊功能寄存器地址和名称,要使用必须调用该头文件
/*=== 如果不调用该头文件,必须把要使用的定义名称和地址语句在主程序前声明
#define rGPBCON   (*(volatile unsigned *)0x56000010)//Port B control
#define rGPBDAT   (*(volatile unsigned *)0x56000014)//Port B data
#define rGPBUP     (*(volatile unsigned *)0x56000018)//Pull-up control */  
/*  自定义简单延迟程序  */
int delay(int times)
{
   int i;
   for(i=0;i<times;i++);
   return 0;
}

/*  主程序  */
void xmain(void)     //主函数名称与主函数入口地址对应,在2440init.s中有定义
{               //不能随意写成main,或者Main等,要查看在2440init.s文件(见下图)


       rGPBCON |=0x3fc00;             //GPB5-8  able output
       rGPBCON& =0x15400;           //GPBCON两位管理GPBDAT的方向(见下面对应关系,00-in,01-out, 10-other,11-无用);
       // 方向控制GPBCON          d21d20  d19d18 d17d16  d15d14d13d12  d11d10 d9d8  d7d6  d5d4  d3d2  d1d0
       // 输入输出sfr GPDAT         d10        d9      d8       d7      d6       d5     d4      d3    d2    d1    d0  
       rGPBUP  |=0x1e0;               //disable GPB5-8 pull up res,GPBUP一位管一位,0-链接上拉电阻,1-关闭上拉电祖



while(1)
   {

         rGPBDAT|=0x1e0;//GPB7 output 0
         rGPBDAT&=0xeff;    
         delay(50000000);//调用汇编语言编写的延时程序

         rGPBDAT|=0x1e0;//GPB7 output 0
         rGPBDAT&=0xf7f;    
         delay(50000000);//调用汇编语言编写的延时程序


         rGPBDAT|=0x1e0;//GPB7 output 0
         rGPBDAT&=0xfbf;    
         delay(50000000);//调用汇编语言编写的延时程序

         rGPBDAT|=0x1e0;//GPB7 output 0
         rGPBDAT&=0xfdf;    
         delay(50000000);//调用汇编语言编写的延时程序


   }
}



下图是不调用相关文件,但使用的sfr必须定义


下图是不定义sfr,但必须使用头文件2440addr.h,由于头文件2440addr.h中的设置在Def.h和Option.h中进行了设置,所以,调用2440addr.h必须调用后两者。否则编译出错!






手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网