#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必須調用后兩者。否則編譯出錯!

|