4.5中斷程序編寫_外部舉例_第1頁
4.5中斷程序編寫_外部舉例_第2頁
4.5中斷程序編寫_外部舉例_第3頁
4.5中斷程序編寫_外部舉例_第4頁
4.5中斷程序編寫_外部舉例_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Sunplus SPCE061A 微控制器帶中斷處理的外部中斷程序編寫的基本過程講解目的通過舉例了解SPCE061A帶中斷編程的方法。通過舉例對中斷編程進行歸類,提高學(xué)習(xí)效率。鞏固中斷編程知識,為后面的系統(tǒng)編程打好基礎(chǔ)。任務(wù)的提出通過中斷形式指示按鍵狀態(tài),如果是按鍵一按下,紅色的二極管點亮,如果是按鍵二按下,綠色的二極管點亮。分析SPCE061A可以使用的中斷源SPCE061A具有14個中斷源,可以使用EXT1,EXT2中斷源完成此任務(wù)。EXT1 接按鍵一,EXT2 接按鍵二,在程序中判斷是哪個中斷源引起的中斷,然后點亮對應(yīng)的二極管指示。EXT1EXT2硬件電路圖程序的設(shè)置問題根據(jù)硬件電路圖可

2、以設(shè)置IO口,由于前面已經(jīng)講述,這里略設(shè)置中斷寄存器中斷控制寄存器P_INT_Ctrl清除中斷標(biāo)志控制單元P_INT_Clear激活和屏蔽中斷控制單元P_INT_Ctrl_New中斷控制寄存器單元P_INT_Ctrl控制單元具有可讀可寫屬性寫中斷控制寄存器的某位為1時,即允許該位所代表的中斷被開放讀中斷控制寄存器確定CPU響應(yīng)的中斷P_INT_Ctrl寄存器的各位意義見下表P_INT_Ctrl單元表b7b6b5b4b3b2b1b0IRQ3_KEYIRQ3_4kHzIRQ3_2kHzIRQ3_1kHzIRQ3_4HzIRQ3_2HzIRQ3_TMB1IRQ3_TMB2b15b14b13b12b1

3、1b10b9b8FIQ_fosc/1024IRQ0_fosc/1024FIQ_TMAIRQ1_TMAFIQ_TMBIRQ2_TMBIRQ3_EXT2IRQ3_EXT1清除中斷標(biāo)志控制單元清除中斷標(biāo)志控制單元主要用于清除中斷控制標(biāo)志位,當(dāng)CPU響應(yīng)中斷后,會將中斷標(biāo)志置1,當(dāng)進入中斷服務(wù)程序后,要將其控制標(biāo)志清零,否則 CPU總是執(zhí)行該中斷。P_INT_Clear寄存器的每一位均對應(yīng)一個中斷,同上表。激活和屏蔽中斷控制單元當(dāng)寫P_INT_Ctrl_New單元時,與寫P_INT_Ctrl單元功能相似;當(dāng)讀該控制單元時,只作為了解激活那一中斷的功能使用,與其寫入值是一致的。根據(jù)任務(wù)設(shè)置寄存器_mai

4、n:int offR1 = 0 x0300; P_INT_CTRL = r1; int irq; 注意即使設(shè)置了中斷寄存器,打開中斷,程序還是不能進入中斷,需要使用中斷控制指令。FIQ ON:該指令用來開通FIQ中斷FIQ OFF:該指令用來屏蔽FIQ中斷IRQ ON:該指令用來開放IRQ中斷INT OFF:該指令用來屏蔽IRQ中斷INT:該指令是用來設(shè)置允許/禁止FIQ和IRQ中斷中斷控制指令舉例_main:int offR1 = 0 x0300; P_INT_CTRL = r1; int irq; 復(fù)習(xí) 中斷編程的共性共性一:主函數(shù)程序結(jié)構(gòu) 主函數(shù)的編程,基本的程序結(jié)構(gòu)是: 1、初始狀態(tài)的

5、設(shè)置。 2、打開中斷。 3、主循環(huán)中清看門狗。初始化IO開外部中斷1,2中斷進入循環(huán),等待中斷清看門狗模版初始化打開中斷進入循環(huán),等待中斷清看門狗實例主函數(shù)匯編程序基本模版.define xxx xxxx.code.public _main;_main: INT OFFxxxRx P_INT_Ctrl = Rx INT IRQLoop: P_Watchdog_Clear = 0 x0001 Jmp loop.PUBLIC _main_main:int offr1 = 0 xffff P_IOA_ATTRI = r1 P_IOA_DIR = r1 P_IOA_DATA = r1 .define

6、xxx xxxx.code.public _main;_main: INT OFFxxxRx P_INT_Ctrl = Rx INT IRQLoop: P_Watchdog_Clear = 0 x0001 Jmp loop r1 = 0 x0000; P_IOB_DIR = r1; P_IOB_ATTRI = r1; r1 = 0 x000c ; P_IOB_DATA = r1; R1 = 0 x0300; P_INT_CTRL = r1; int irq; 共性二:主函數(shù)中進行清狗與等待中斷處理在主循環(huán)里主要進行清看門狗操作,可以設(shè)置標(biāo)志位,標(biāo)志位在中斷中改變,循環(huán)中如果標(biāo)志滿足條件,執(zhí)行相

7、應(yīng)功能,不符合就等待中斷。實例L_Loop:r1 = 0 x0001 p_watchdog_clear = r1 jmp L_Loop共性三:中斷服務(wù)函數(shù)程序結(jié)構(gòu) 中斷服務(wù)函數(shù)的編程,基本的程序結(jié)構(gòu)是: 1、關(guān)閉中斷。 2、打開中斷。 3、主循環(huán)中清看門狗。中斷函數(shù)匯編程序基本模板與實例比較. text.public _IRQ5;_IRQ5:PUSH R1,R5 TO SPxxxRxP_INT_Clear = R1POP R1,R5 FROM SPRETI.TEXT.PUBLIC _IRQ3_IRQ3: push r1,r5 to sp r1 = 0 x0100 test r1,P_INT_CTRL jnz L_IRQ3_Ext1 r1 = 0 x0200 test r1,P_INT_CTRL jnz L_IRQ3_Ext2 r1 = 0 x0200 L_IRQ3_Key: r1 = 0 x0080 P_INT_CLEAR = r1 pop r1,r5 from sp reti總結(jié) 前面進行了外部中斷編程的講解,我們看到了一個帶中斷編程的基本過程,關(guān)于別的中斷編程,它們的編程框架類似,并且在開發(fā)環(huán)境下可找到各模塊編程的實例,這邊將不進行講解了,接下來將講一個多個模塊混合編

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論