接上篇:pic單片機采用定時器中斷的閃燈實驗報告:http://www.zg4o1577.cn/mcu/3996.html
1.
學習如何使用查找表
2. 任務要求
實現(xiàn)數(shù)字譯碼和動態(tài)顯示
實現(xiàn)數(shù)碼管顯示的滾動效果
用數(shù)碼管呈現(xiàn)實驗三中的外中斷
實現(xiàn)數(shù)碼管數(shù)字顯示
制作開機畫面
3. 實驗器材
單片機PIC16F886一片、LED燈一只、電阻任選、下載器(及相關(guān)的線)一個
4. 實驗方案
圖
圖
流程圖
圖
5. 實驗現(xiàn)象分析
先看到SEEd四個字母然后是0-9循環(huán)滾動,每次顯示4個數(shù)字或字符。電平變化中斷觸發(fā)后重新從0-9循環(huán)顯示。
程序中用查詢表的辦法,循環(huán)選擇數(shù)碼管,循環(huán)選擇要顯示的數(shù)字和字符,利用視覺暫留以展現(xiàn)四個字符同時存在的錯覺。利用TMR0定時選擇改變顯示的四個字符,由此做成字符滾動的效果。而電平變化中斷的作用則是重新選擇字符,使數(shù)碼管重新從0123開始顯示。開機顯示其實只是在最開始時選擇了顯示的字符,由于這部分字符不在TMR0的循環(huán)里,所以只出現(xiàn)一次。
整個實驗過程中有幾次硬件出現(xiàn)問題導致數(shù)碼管只顯示一個0,應該是接觸不良,不知道觸碰到哪里就又好了,這樣的事情發(fā)生了好幾次。其他的單步調(diào)試解決了,基本上沒什么問題。
備注:開機的SEEd顯示是許雙杰的觀點,我們不知道開機顯示什么就也做了這個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