上接:http://www.torrancerestoration.com/mcu/3983.html
1.
學(xué)習(xí)如何使用中斷
2. 任務(wù)要求
用定時(shí)器中斷方式完成閃燈實(shí)驗(yàn)
設(shè)計(jì)驗(yàn)證外部邊沿中斷/電平變化中斷
睡眠喚醒
3. 實(shí)驗(yàn)器材
單片機(jī)PIC16F886一片、LED燈一只、電阻任選、下載器(及相關(guān)的線)一個(gè)
4. 實(shí)驗(yàn)方案
圖
圖
圖
圖
5. 實(shí)驗(yàn)現(xiàn)象分析
基礎(chǔ)實(shí)驗(yàn)部分:
仿真模擬,在反轉(zhuǎn)PORTA的代碼部分加上斷點(diǎn),用STOP
。
然后下載至芯片,LED燈閃動(dòng)正常。
電平變化中斷實(shí)驗(yàn):
使用PORTB的RB5作為輸入端口,當(dāng)給RB5電平變化時(shí),RA端口上的燈閃爍4次,從頭到尾RC端上的燈只有亮一種狀態(tài)。
睡眠喚醒實(shí)驗(yàn):觸發(fā)一次喚醒,RA端燈亮滅四次,RC3改變一次狀態(tài)。
做電平變化中斷和睡眠喚醒實(shí)驗(yàn)時(shí)遇到兩個(gè)問(wèn)題:1.電平變化中斷標(biāo)志位清零前沒(méi)有對(duì)PORTB執(zhí)行讀寫(xiě)操作,導(dǎo)致清除無(wú)效;1,DELAY函數(shù)寫(xiě)在中斷內(nèi)部,總是提前RETURN破壞了現(xiàn)場(chǎng)且多執(zhí)行了DELAY操作。
附:
定時(shí)器中斷代碼:
#INCLUDE
__config
CONTEXT_SAVING
W_TMP
S_TMP
RESET
PAGESEL
GOTO
ISR
MOVWF
SWAPF
MOVWF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;以上保存現(xiàn)場(chǎng)
BANKSEL
BCF
BANKSEL
COMF
BANKSEL
MOVLW
MOVWF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;以下恢復(fù)現(xiàn)場(chǎng)
SWAPF
MOVWF
SWAPF
SWAPF
RETFIE
CODE
MAIN
MOVLW
MOVWF
BANKSEL
MOVLW
MOVWF
BANKSEL
BSF
BSF
;;;;;;;;;
BANKSEL
MOVLW
MOVWF
BANKSEL
CLRF
BANKSEL
MOVLW
MOVWF
BANKSEL
CLRF
LP
NOP
GOTO
END
外部中斷代碼:
#INCLUDE
__config
CONTEXT_SAVING
W_TMP
S_TMP
LP0
LP1
TIMES
RESET
PAGESEL
GOTO
ISR
MOVWF
SWAPF
MOVWF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;以上保護(hù)現(xiàn)場(chǎng)
BANKSEL
BSF
BANKSEL
BCF
MOVLW
MOVWF
MM
CALL
COMF
CALL
DECFSZ
GOTO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;以下恢復(fù)現(xiàn)場(chǎng)
SWAPF
MOVWF
SWAPF
SWAPF
RETFIE
CODE
DELAY
MOVLW
MOVWF
L0
MOVWF
L1
GOTO
DECFSZ
GOTO
RETURN
MAIN
BANKSEL
MOVLW
MOVWF
BANKSEL
MOVLW
XORWF
;;;;;;;;;;;;;;;;;;;;;;設(shè)置RC3標(biāo)志程序執(zhí)行,用于判斷程序是否被重復(fù)執(zhí)行
BANKSEL
BCF
BANKSEL
MOVLW
MOVWF
BANKSEL
CLRF
BANKSEL
MOVLW
MOVWF
BANKSEL
CLRF
BANKSEL
MOVLW
MOVWF
BANKSEL
MOVLW
MOVWF
BANKSEL
CLRF
BANKSEL
MOVLW
MOVWF
BANKSEL
CLRF
BANKSEL
MOVLW
MOVWF
LOOP
GOTO
END
睡眠喚醒代碼:
#INCLUDE
__config
CONTEXT_SAVING
W_TMP
S_TMP
LP0
LP1
TIMES
RESET
PAGESEL
GOTO
ISR
MOVWF
SWAPF
MOVWF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;以上保護(hù)現(xiàn)場(chǎng)
BANKSEL
BSF
BANKSEL
BCF
MOVLW
MOVWF
MM
CALL
COMF
CALL
DECFSZ
GOTO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;以下恢復(fù)現(xiàn)場(chǎng)
SWAPF
MOVWF
SWAPF
SWAPF
RETFIE
CODE
DELAY
MOVLW
MOVWF
L0
MOVWF
L1
GOTO
DECFSZ
GOTO
RETURN
MAIN
BANKSEL
BCF
BANKSEL
MOVLW
MOVWF
BANKSEL
CLRF
BANKSEL
MOVLW
MOVWF
BANKSEL
CLRF
BANKSEL
MOVLW
MOVWF
BANKSEL
MOVLW
MOVWF
BANKSEL
CLRF
BANKSEL
MOVLW
MOVWF
BANKSEL
CLRF
BANKSEL
MOVLW
MOVWF
BANKSEL
MOVLW
BANKSEL
CLRF
loop
BANKSEL
MOVLW
XORWF
CALL
SLEEP
NOP
GOTO
END
下一篇: pic單片機(jī)走馬燈動(dòng)態(tài)顯示實(shí)驗(yàn)報(bào)告 http://www.torrancerestoration.com/mcu/4080.html