c語(yǔ)言對(duì)HT單片機(jī)硬件操作說(shuō)明
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1、C語(yǔ)言中變量的定義方法
-C語(yǔ)言中變量定義語(yǔ)法為:
#pragma rambank0 ;即以關(guān)鍵詞#pragma開(kāi)始,rambank0指明資料區(qū)塊為第0塊。
unsigned char m_acc; ;定義一個(gè)無(wú)符號(hào)字符型變量m_acc。
unsigned char m_ststus; ;定義一個(gè)無(wú)符號(hào)字符型變量m_status。
.............
#pragma norambank ;norambank關(guān)鍵詞表示變量在數(shù)據(jù)區(qū)塊0的定義結(jié)束。
-如果要指明某個(gè)變量的具體地址,那么定義方法如下:
#pragma rambank0 ;即以關(guān)鍵詞#pragma開(kāi)始,rambank0指明資料區(qū)塊為第0塊。
unsigned char m_Flag0 @ 0x4f ;此行定義了一個(gè)無(wú)符號(hào)字符型變量m_Glag0,它的地址位于區(qū)塊0的0x4f單元
#pragma norambank ;norambank關(guān)鍵詞表示變量在數(shù)據(jù)區(qū)塊0的定義結(jié)束。
-數(shù)組變量定義如下:
#pragma rambank0 ;即以關(guān)鍵詞#pragma開(kāi)始,rambank0指明資料區(qū)塊為第0塊。
unsigned long g_RfRef[12] @ 0x50 ;定義一個(gè)無(wú)符號(hào)長(zhǎng)整形數(shù)組變量g_RfRef[12],其首地址為0x50。
unsigned long g_RfSs[12]@ 0x68 ;定義一個(gè)無(wú)符號(hào)長(zhǎng)整形數(shù)組變量g_RfSs[12],其首地址為0x68。
#pragma norambank ;norambank關(guān)鍵詞表示變量在數(shù)據(jù)區(qū)塊0的定義結(jié)束。
2、C語(yǔ)言中旗標(biāo)定義和操作方法
unsigned char _status @ 0x0a ;定義了一個(gè)_status變量。
#degine _c 0a_0 ;C指向status的bit0。
#define _ac 0a_1 ;ac指向status的bit1。
#define _z 0a_2 ;z指向status的bit2。
#define _ov 0a_3 ;ov指向status的bit3。
#define _pdf 0a_4 ;pdf指向status的bit4。
#degine _to 0a_5 ;to指向status的bit5。
若需將status之bit0設(shè)為1,操作方法如下:
_c=1;
若需將status之bit0設(shè)為0,操作方法如下:
_c=0;
若需判斷status之bit0位是否為1,操作方法如下:
If(_c=1)
{
...........
};
3、C語(yǔ)言中宏定義的方法
以下定義了push和pop兩個(gè)宏指令,如果宏定義語(yǔ)句在一行內(nèi)無(wú)法寫(xiě)完,那么在一行未要加上反敘杠()。
#define push { m_acc=_acc;
m_status=_status;
m_mp0=_mp0;
m_mp1=mp1;}
#define pop {_mp1=m_mp1;
mp0=m_mp0;
status=m_status;
acc-m_acc;}
宏調(diào)用方法如下:
push;
...........
pop;
4、C語(yǔ)言常數(shù)的定義方法
常數(shù)定義是給一個(gè)字符串賦一個(gè)值,常數(shù)定義也是宏定義,也是用#define來(lái)定義。
#define c_TimeMode 0x80
#define c_TimeOn 0x10
5、C語(yǔ)言I/O口操作方法
-I/O口地址定義如下:
unsigned char pa @0x12 ;PA口地址定義。
unsigned char pac @0x13 ;PA口控制緩存器地址定義。
-I/O口操作方法:
pac=0x00 ;PA口設(shè)為輸出口。
pa=0xff ;PA口全輸出1。
6、C語(yǔ)言定時(shí)器操作方法
-定時(shí)器地址的設(shè)定:
unsingned char _tmr @0x0d ;
unsigned char _tmrc @0x0e;
-定時(shí)器控制緩沖器和定時(shí)器初值的設(shè)定:
tmrc=0x22 ;設(shè)置控制緩沖器初值。
tmr=0x55 ;設(shè)置定時(shí)器。
7、C語(yǔ)言中斷處理方法
-中斷控制緩沖器地址定義:
unsigned cahr intcl @0x1e ;
-中斷控制緩沖器設(shè)定:
intc0=0x01;
intc1=0x01;
-中斷向量地址定義:
#pragma vector isr_timer1 @ 0x10 ;此語(yǔ)句定義了Timer A中斷向量位址。ist_timer1()是一個(gè)函數(shù),當(dāng)定
時(shí)器發(fā)生中斷時(shí),轉(zhuǎn)入執(zhí)行此函數(shù)。
8、C語(yǔ)言Reset程序入口地址
上現(xiàn)講述了Timer A產(chǎn)生中斷以后,執(zhí)行的是iar_timer1()函數(shù),當(dāng)Reset以后,mian()函數(shù)是程序的入口,這里不需要定義main()函數(shù)的向量地址。
9、C語(yǔ)言查表處理方法
C語(yǔ)言數(shù)據(jù)表的建立是建立一個(gè)數(shù)組,并給此數(shù)組賦上初值,并且要用Const加以標(biāo)識(shí)。如下所示,
Const unsigned char T_Da
以上建立了一個(gè)含12個(gè)數(shù)據(jù)的T_Da
10、C語(yǔ)言嵌入?yún)R編語(yǔ)言,其語(yǔ)法規(guī)則如下:
#asm
[labl1:] opcode [operands]
...............
#endasm
#asm和#endasm是內(nèi)嵌式匯編語(yǔ)言的預(yù)處理伙指令,其間的代碼可用匯編語(yǔ)言直接書(shū)寫(xiě)。
11、C語(yǔ)言中數(shù)據(jù)類(lèi)型說(shuō)明
在利用C語(yǔ)言完成控制類(lèi)軟件書(shū)定時(shí),我們常用到的數(shù)據(jù)類(lèi)型有三種,即:
-bit對(duì)應(yīng)匯編中的位(1bit)操作
-unsigned char 對(duì)應(yīng)匯編中的單字節(jié)(8bit) 操作
-unsigned long 對(duì)應(yīng)匯編中的雙字節(jié)(16bit)操作
以上是如何使用C語(yǔ)言對(duì)HTMCU的資源進(jìn)行操作。