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