接上篇:pic單片機(jī)采用定時(shí)器中斷的閃燈實(shí)驗(yàn)報(bào)告:http://www.torrancerestoration.com/mcu/3996.html
1.
學(xué)習(xí)如何使用查找表
2. 任務(wù)要求
實(shí)現(xiàn)數(shù)字譯碼和動態(tài)顯示
實(shí)現(xiàn)數(shù)碼管顯示的滾動效果
用數(shù)碼管呈現(xiàn)實(shí)驗(yàn)三中的外中斷
實(shí)現(xiàn)數(shù)碼管數(shù)字顯示
制作開機(jī)畫面
3. 實(shí)驗(yàn)器材
單片機(jī)PIC16F886一片、LED燈一只、電阻任選、下載器(及相關(guān)的線)一個(gè)
4. 實(shí)驗(yàn)方案
圖
圖
流程圖
圖
5. 實(shí)驗(yàn)現(xiàn)象分析
先看到SEEd四個(gè)字母然后是0-9循環(huán)滾動,每次顯示4個(gè)數(shù)字或字符。電平變化中斷觸發(fā)后重新從0-9循環(huán)顯示。
程序中用查詢表的辦法,循環(huán)選擇數(shù)碼管,循環(huán)選擇要顯示的數(shù)字和字符,利用視覺暫留以展現(xiàn)四個(gè)字符同時(shí)存在的錯(cuò)覺。利用TMR0定時(shí)選擇改變顯示的四個(gè)字符,由此做成字符滾動的效果。而電平變化中斷的作用則是重新選擇字符,使數(shù)碼管重新從0123開始顯示。開機(jī)顯示其實(shí)只是在最開始時(shí)選擇了顯示的字符,由于這部分字符不在TMR0的循環(huán)里,所以只出現(xiàn)一次。
整個(gè)實(shí)驗(yàn)過程中有幾次硬件出現(xiàn)問題導(dǎo)致數(shù)碼管只顯示一個(gè)0,應(yīng)該是接觸不良,不知道觸碰到哪里就又好了,這樣的事情發(fā)生了好幾次。其他的單步調(diào)試解決了,基本上沒什么問題。
備注:開機(jī)的SEEd顯示是許雙杰的觀點(diǎn),我們不知道開機(jī)顯示什么就也做了這個(gè)SEEd。
附:
#INCLUDE
__config
CONTEXT_SAVING
W_TMP
S_TMP
OFFSET
COFFSET
NUM
CNUM
PA
CNT
LP0
LP1
ISBLACK
RESET
PAGESEL
GOTO
ISR
MOVWF
SWAPF
MOVWF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PB_INT
BTFSC
CALL
TM0_INT
BTFSC
CALL
;COMF
;BTFSS
;CALL
;NOP
;BTFSC
CALL
BANKSEL
BCF
BANKSEL
MOVLW
MOVWF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SWAPF
MOVWF
SWAPF
SWAPF
RETFIE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CODE
INIT
BANKSEL
MOVLW
MOVWF
BANKSEL
MOVLW
MOVWF
BANKSEL
BSF
BSF
BSF
BANKSEL
CLRF
BANKSEL
MOVLW
MOVWF
BANKSEL
CLRF
BANKSEL
CLRF
BANKSEL
CLRF
BANKSEL
MOVLW
MOVWF
BANKSEL
MOVLW
MOVWF
BANKSEL
CLRF
BANKSEL
MOVLW
MOVWF
BANKSEL
MOVLW
MOVWF
BANKSEL
MOVLW
MOVWF
BANKSEL
MOVLW
MOVWF
MOVF
MOVWF
MOVLW
MOVWF
CLRF
PAGESEL
GOTO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;這里是函數(shù)區(qū);;;;;;;;;;;;;;;;;
SELECT:
BANKSEL
CLRF
BANKSEL
MOVLW
MOVWF
MOVLW
ADDWF
MOVLW
BTFSC
ADDLW
MOVWF
MOVF
CALL
MOVWF
RETURN
STABLE:
MOVWF
RETLW
RETLW
RETLW
RETLW
WRITE:
MOVLW
ADDWF
MOVLW
BTFSC
ADDLW
MOVWF
MOVF
CALL
MOVWF
RETURN
TABLE:
MOVWF
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
SETORIGIN:
MOVLW
MOVWF
MOVLW
MOVWF
MOVF
MOVWF
RETURN
SETPA:
MOVLW
MOVWF
RETURN
SETCOFFSET:
MOVLW
MOVWF
RETURN
DELAY:
MOVLW
MOVWF
L0
MOVWF
L1
GOTO
DECFSZ
GOTO
RETURN
DECRESE_COFFSET:
DECF
BTFSC
CALL
RETURN
BLACK:
BANKSEL
CLRF
CALL
RETURN
TMR0_INT:
DECF
BTFSC
CALL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;COFFSET減一
RETURN
PORTB_INT:
BANKSEL
BCF
BANKSEL
BCF
MOVLW
MOVWF
RETURN
;;;;;;;;;;函數(shù)區(qū)到此為止;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN
LOOP
MOVF
MOVWF
MOVF
MOVWF
CALL
CALL
DECF
BTFSC
CALL
INCF
DECF
BTFSC
CALL
GOTO
END