?? sddp.asm
字號:
;********************SDDP********************
;本程序?qū)崿F(xiàn)軟件模擬方式動態(tài)顯示N位數(shù)字。
;入口參數(shù):顯示緩沖區(qū)首地址在SADR中,顯示位數(shù)在CNT中。
;出口參數(shù):無。
;占用資源:W,FSR,STATUS,RC3,RC4,020H,023H,028H~02BH,兩重堆棧。
;說 明:1.這里采用的是共陰極數(shù)碼管。
; 2.要想得到持續(xù)的顯示效果,用戶必須不斷的調(diào)用本程序 。
; 3.顯示位數(shù)應(yīng)不大于8位。
; 4.顯示緩沖區(qū)的數(shù)據(jù)格式為非壓縮格式。
CLKBIT EQU 4
DATBIT EQU 3
IFNDEF SDDP1
#DEFINE SDDP1
include "dlynms.asm"
;*************顯示段碼表格*****************
TABLE ADDWF PCL,F
RETLW B'00111111' ;共陰極段碼表格
RETLW B'00000110'
RETLW B'01011011'
RETLW B'01001111'
RETLW B'01100110'
RETLW B'01101101'
RETLW B'01111101'
RETLW B'00000111'
RETLW B'01111111'
RETLW B'01101111'
; ………… ;用戶可在此處繼續(xù)添加
SDDP BSF STATUS,RP0
MOVLW 0E7H
ANDWF TRISC,F ;RC3,RC4設(shè)為輸出
BCF STATUS,RP0
BSF PORTC,CLKBIT ;時鐘靜態(tài)電平為高
MOVF SADR,W
MOVWF FSR ;FSR指向段碼首址
MOVLW B'11111110'
MOVWF TEMP3 ;TEMP3作為位碼產(chǎn)生器
NEXT56 MOVF INDF,W
CALL TABLE ;產(chǎn)生段碼
MOVWF TEMP1 ;TEMP1作為段碼送出緩沖器
;****************送出段碼****************
MOVLW D'8'
MOVWF TEMP2 ;8位段碼
BSF STATUS,C
NEXT58 RLF TEMP1,F ;段碼左移
BSF PORTC,DATBIT
BTFSS STATUS,C
BCF PORTC,DATBIT
NOP
NOP
BCF PORTC,CLKBIT ;發(fā)時鐘脈沖
NOP
NOP
BSF PORTC,CLKBIT
DECFSZ TEMP2,F
GOTO NEXT58
;****************送出位碼***********
MOVLW 8
MOVWF TEMP2 ;8位位碼
BCF STATUS,C
MOVF TEMP3,W
MOVWF TEMP4 ;TEMP4作為位碼移出緩沖器
NEXT57 BCF STATUS,C
RLF TEMP4,F
BSF PORTC,DATBIT
BTFSS STATUS,C
BCF PORTC,DATBIT ;將C送出
NOP
NOP
BCF PORTC,CLKBIT ;發(fā)時鐘脈沖
NOP
NOP
BSF PORTC,CLKBIT
DECFSZ TEMP2,F ;位碼送完嗎?
GOTO NEXT57
MOVF CNT,W
MOVWF TEMP2
MOVLW D'2' ;送完一位,延時2MS
MOVWF SOU
CALL DLYNMS
MOVF TEMP2,W
MOVWF CNT
DECFSZ CNT,F ;外部位計數(shù)器減1
GOTO NEXT59
RETURN
NEXT59 BSF STATUS,C
RLF TEMP3,F
INCF FSR,F
GOTO NEXT56
ENDIF
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -