#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必须调用后两者。否则编译出错!

|