標(biāo)題:
ARM 流水燈C語言
[打印本頁]
作者:
hongniu
時間:
2015-6-26 23:05
標(biāo)題:
ARM 流水燈C語言
#include"2440addr.h" //定義了各個特殊功能寄存器地址和名稱,要使用必須調(diào)用該頭文件
/*=== 如果不調(diào)用該頭文件,必須把要使用的定義名稱和地址語句在主程序前聲明
#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) //主函數(shù)名稱與主函數(shù)入口地址對應(yīng),在2440init.s中有定義
{ //不能隨意寫成main,或者Main等,要查看在2440init.s文件
(見下圖)
rGPBCON |=0x3fc00; //GPB5-8 able output
rGPBCON &=0x15400; //GPBCON兩位管理GPBDAT的方向(見下面對應(yīng)關(guān)系,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-關(guān)閉上拉電祖
while(1)
{
rGPBDAT|=0x1e0;//GPB7 output 0
rGPBDAT&=0xeff;
delay(50000000);//調(diào)用匯編語言編寫的延時程序
rGPBDAT|=0x1e0;//GPB7 output 0
rGPBDAT&=0xf7f;
delay(50000000);//調(diào)用匯編語言編寫的延時程序
rGPBDAT|=0x1e0;//GPB7 output 0
rGPBDAT&=0xfbf;
delay(50000000);//調(diào)用匯編語言編寫的延時程序
rGPBDAT|=0x1e0;//GPB7 output 0
rGPBDAT&=0xfdf;
delay(50000000);//調(diào)用匯編語言編寫的延時程序
}
}
下圖是不調(diào)用相關(guān)文件,但使用的sfr必須定義
下圖是不定義sfr,但必須使用頭文件2440addr.h,由于頭文件2440addr.h中的設(shè)置在Def.h和Option.h中進行了設(shè)置,所以,調(diào)用2440addr.h必須調(diào)用后兩者。否則編譯出錯!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1