|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
[轉(zhuǎn)貼]HC08 C語言程序設(shè)計(jì)(3) |
| 作者:JerryBJ 欄目:單片機(jī) |
周末在www.mcu123.com上讀到劉玉宏同志的這篇文章,覺得寫得很好,基本上涵蓋了使用C語言對HC(S)08微控制器編程的基本知識,推薦給大家。把這篇文章轉(zhuǎn)貼過來,沒有經(jīng)過原文作者和MCU123的允許,希望他們不會生氣。若作者和MCU123對此感到不適,請即告知,我們立刻刪除此轉(zhuǎn)貼。原文鏈接如下: http://www.mcu123.com/news/Article/uc/Motorola/200608/254.html 中斷服務(wù)程序定義 在HCS08 C 語言中中斷服務(wù)程序是用中斷函數(shù)來實(shí)現(xiàn)的。中斷函數(shù)即沒有入口參數(shù)也沒有返回值,但可以全局變量來實(shí)現(xiàn)。中斷函數(shù)的定義方法有3種 1)用預(yù)處理“#pragma TRAP_PROC”定義 這種定義方法分為兩步:首先在源程序中定義中斷函數(shù),其次在參數(shù)文件中指定各中斷函數(shù)在中斷向量表中的地址,即在參數(shù)文件中指定一個(gè)地址,該地址的內(nèi)容是中斷服務(wù)程序入口地址(向量)。 例如: unsigned int intCount = 1; #pragma TRAP_PROC void IntFunc(void) { intCount++; } #pragma TRAP_PROC void IntFunc2(void) { intCount--; } #pragma TRAP_PROC void IntFunc3(void) { intCount=intCount*5; } #pragma TRAP_PROC 僅對緊跟著它的函數(shù)有效,通知編譯器位于它下面的函數(shù)是中斷函數(shù),其返回指令是RTI,而不是RET,因此每個(gè)中斷函數(shù)前面都必需有這個(gè)預(yù)處理。 在參數(shù)文件中要加入以下內(nèi)容: VECTOR ADDRESS 0xFFF0 IntFunc1 /* 0xFFF0 包含 IntFunc1 的地址 */ VECTOR ADDRESS 0xFFF2 IntFunc2 /* 0xFFF2 包含 IntFunc2 的地址*/ VECTOR ADDRESS 0xFFF4 IntFunc3 /* 0xFFF4 包含 IntFunc3的地址 */ 2)用關(guān)鍵字“interrupt” 格式為: interrupt <函數(shù)名> /* 在參數(shù)文件中指定中斷類型號 */ { …/*代碼*/ } 關(guān)鍵字’interrupt’通知編譯器位于它后面的函數(shù)名是中斷函數(shù),同樣也要在參數(shù)文件中指定各中斷函數(shù)在中斷向量表中的地址。 例如: interrupt IntFunc2() { ….. } 在參數(shù)文件中加入: VECTOR ADRESS 0xFFF2 IntFunc2 3)用關(guān)鍵字“interrupt”和中斷向量號 格式為: interrupt <中斷向量號> <函數(shù)名> { …/*code*/ } 這種定義方法關(guān)鍵字’interrupt’通知編譯器位于它后面的函數(shù)名是中斷函數(shù),且通過中斷向量號指定了各中斷函數(shù)在中斷向量表中的地址。這種方法就不再需要修改參數(shù)文件,移植性較好。 中斷向量號與中斷向量表地址的對應(yīng)關(guān)系如下:復(fù)位向量為0號位于地址0xFFFE,1號緊跟著0號,位于地址0xFFFC,其余依此類推。 另外用預(yù)處理命令#pragma TRAP_PROC: SAVE_REGS可以確保在中斷函數(shù)中,所有CPU寄存器或編譯器使用的偽寄存器內(nèi)容不會被中斷函數(shù)破壞。 |
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |