|
本帖最后由 yuri141 于 2020-12-26 16:38 編輯
我在進(jìn)行一個秒表功能電路的仿真時,發(fā)現(xiàn)他的數(shù)碼管不能正常顯示數(shù)字,亂碼,各位大佬幫幫忙指點一下啊!!!謝謝
附上我的仿真文件和匯編語言文件
51hei截圖_20201226160953.png (207.06 KB, 下載次數(shù): 71)
下載附件
2020-12-26 16:37 上傳
- INCLUDE "C:\Program Files (x86)\Microchip\MPASM Suite\p16f877.inc"
- ;----------------------------------------------------
- S0 EQU 20H
- S1 EQU 21H
- S2 EQU 22H;
- S3 EQU 23H;
- SREG EQU 24H;
- LEDF EQU 25H;
- XW_TEMP EQU 26H;
- XHOSTS EQU 27H;
- DEYH EQU 28H;
- DEYL EQU 29H;
- HOSTF EQU 30H;
- JIANR EQU 31H;
- TEMP EQU 32H;
- ORG 0000H;
- NOP
- GOTO MAIN;
- ORG 0004H;
- GOTO CLKINT
- ORG 0010H
- ;---------------------------------------------------
- CONVERT;不帶小數(shù)點的共陽極數(shù)碼表
- ADDWF PCL,1;
- RETLW 0XC0;0
- RETLW 0XF9;1
- RETLW 0XA4;2
- RETLW 0XB0;3
- RETLW 0X99;4
- RETLW 0X92;5
- RETLW 0X82;6
- RETLW 0XD8;7
- RETLW 0X80
- RETLW 0X90
- RETLW 0XBF
- RETLW 0XFF
- RETURN
- CONVERT2;帶小數(shù)點的共陽極碼表
- ADDWF PCL,1
- RETLW 0X40;
- RETLW 0X79
- RETLW 0X24
- RETLW 0X30
- RETLW 0X19
- RETLW 0X12
- RETLW 0X02
- RETLW 0X78
- RETLW 0X00
- RETLW 0X10
- RETURN
- ;--------------------SPI發(fā)送顯示子模塊--------------------
- TRANSMIT
- CLRF PORTA
- MOVWF SSPBUF
- WAIT
- BANKSEL PIR1
- BTFSS PIR1,SSPIF
- GOTO WAIT
- BCF PIR1,SSPIF
- RETURN
- ;---------------------顯示子程序模塊--------------------
- DISPLAY MOVLW 0X01
- MOVWF LEDF
- XIAND BTFSC S2,0
- GOTO ZXC
- MOVLW 0X0B
- GOTO VBN
- ZXC MOVLW 0X0A
- VBN CALL CONVERT
- INCF LEDF
- MOVF LEDF,W
- SUBLW 0X05
- BTFSS STATUS,Z
- GOTO XIAND ;顯示動畫
- MOVLW 0X01
- MOVWF LEDF
- MOVLW 0XA0
- MOVWF FSR
- AGAINXIAN MOVF LEDF,W
- SUBLW 0X02
- BTFSS STATUS,Z
- GOTO XIANB
- MOVF INDF,W
- CALL CONVERT2
- GOTO TRAN
- XIANB MOVF INDF,W
- CALL CONVERT
- TRAN CALL TRANSMIT
- INCF FSR
- INCF LEDF
- MOVF LEDF,W
- SUBLW 0X05
- BTFSS STATUS,Z
- GOTO AGAINXIAN
- BSF PORTA,5
- RETURN
- ;-----------------S0計數(shù)溢出處理-------------------
- CS0 CLRF S0
- INCF S1
- RETURN
- ;-----------------S1計數(shù)溢出處理-------------------
- CS1 CLRF S1
- INCF S2
- RETURN
- ;-----------------S2計數(shù)溢出處理-------------------
- CS2 CLRF S2
- INCF S3
- RETURN
- ;-----------------S3計數(shù)溢出處理-------------------
- CS3 CLRF S3
- RETURN
- ;-----------------時鐘中斷服務(wù)程序--------------------
- CLKINT MOVWF XW_TEMP
- SWAPF STATUS,W
- MOVWF XHOSTS
- MOVF FSR,W
- MOVWF HOSTF
- MOVLW 0X07
- MOVWF TMR0
- BCF INTCON,T0IF
- INCF SREG
- MOVF SREG,W
- SUBLW 0X05
- BTFSS STATUS,Z
- GOTO TIFAN
- CLRF SREG
- INCF S0
- MOVF S0,W
- SUBLW 0X0A
- BTFSC STATUS,Z
- CALL CS0
- MOVF S1,W
- SUBLW 0X0A
- BTFSC STATUS,Z
- CALL CS1
- MOVF S2,W
- SUBLW 0X0A
- BTFSC STATUS,Z
- CALL CS2
- MOVF S3,W
- SUBLW 0X0A
- BTFSC STATUS,Z
- CALL CS3
- TIFAN MOVF HOSTF,W ;一下為中斷現(xiàn)場回復(fù)
- MOVWF FSR
- SWAPF XHOSTS,W
- MOVWF STATUS
- SWAPF XW_TEMP,1
- SWAPF XW_TEMP,W
- RETFIE
- ;--------------------------TMRO初始化--------------------
- CLKINSUB
- BANKSEL OPTION_REG
- BCF OPTION_REG,T0CS
- BCF OPTION_REG,PSA
- BCF OPTION_REG,PS2
- BSF OPTION_REG,PS1
- BCF OPTION_REG,PS0
-
- BANKSEL INTCON
- BCF INTCON,T0IF
- BCF INTCON,GIE
- BSF INTCON,T0IE
- RETURN
- ;------------------------系統(tǒng)初始化子程序----------------
- MAINSUB
- BANKSEL TRISA
- BCF TRISA,5
- BCF TRISB,1
- BCF TRISB,2
- BSF TRISB,4
- BSF TRISB,5
- BCF TRISC,5
- BCF TRISC,3
- BCF INTCON,GIE
- MOVLW 0XC0
- MOVWF SSPSTAT
- BANKSEL SSPCON
- MOVLW 0X30
- MOVWF SSPCON
-
- BCF STATUS,IRP
- MOVLW 0X01
- MOVF TEMP
- MOVLW 0X00
- MOVWF JIANR
- RETURN
- ;-------------------鍵盤掃描子程序--------------------
- KEYSCAN CLRF PORTB
- NOP
- NOP
- MOVF PORTB,W
- ANDLW 0X30
- SUBLW 0X30
- RETURN
- ;--------------------鍵盤去抖子程序(8ms)-----------------
- KEYDELAY
- MOVLW 0X80
- MOVWF DEYH
- AGAIN2 MOVLW 0XFF
- MOVWF DEYL
- AGAIN1 DECFSZ DEYL,1
- GOTO AGAIN1
- DECFSZ DEYH,1
- GOTO AGAIN2
- RETURN
- ;-----------------------------鍵盤服務(wù)子程序----------------
- KEYSERVE MOVLW 0X00
- MOVWF JIANR
- MOVLW 0XFD
- MOVWF PORTB
- BTFSS PORTB,4
- GOTO S10
- BTFSS PORTB,5
- GOTO S9
- MOVLW 0XFB
- MOVWF PORTB
- BTFSS PORTB,4
- GOTO S12
- BTFSS PORTB,5
- GOTO S11
- GOTO TUICHU
- S10 MOVLW 0X02
- MOVWF JIANR
- GOTO TUICHU
- S9 MOVLW 0X01
- MOVWF JIANR
- GOTO TUICHU
- S12 MOVLW 0X04
- MOVWF JIANR
- GOTO TUICHU
- S11 MOVLW 0X03
- MOVWF JIANR
- TUICHU RETURN
- ;---------------------------顯示緩沖區(qū)處理子程序-----------------
- XIANHUAN MOVLW 0XA0
- MOVWF FSR
- MOVF S3,W
- MOVWF INDF
- INCF FSR
- MOVF S2,W
- MOVWF INDF
- INCF FSR
- MOVF S1,W
- MOVWF INDF
- INCF FSR
- MOVF S0,W
- MOVWF INDF
- RETURN
- ;-------------------------------------------------------------
- MAIN NOP
- CALL MAINSUB
- CALL CLKINSUB
- ;-----------------------------------------------------------
- DENJIAN
- BANKSEL S0
- CLRF S0
- CLRF S1
- CLRF S2
- CLRF S3
- CLRF SREG
- CLRF LEDF
- CALL XIANHUAN
- CALL DISPLAY
- DENAN BCF INTCON,GIE
- CALL KEYSCAN
- BTFSS STATUS,Z
- GOTO XIAODOU1
- GOTO DENAN
- XIAODOU1 CALL KEYDELAY
- CALL KEYSCAN
- BTFSC STATUS,Z
- GOTO DENAN
- CALL KEYSERVE
- MOVF JIANR,W
- SUBLW 0X01
- BTFSS STATUS,Z
- GOTO DENAN
- BANKSEL S0
- CLRF S0
- CLRF S1
- CLRF S2
- CLRF S3
- CLRF SREG
- WAITS CALL KEYSCAN
- BTFSS STATUS,Z
- GOTO WAITS
- ABC MOVLW 0X06
- MOVWF TMR0
- BSF INTCON,GIE
- HERE CALL XIANHUAN
- CALL DISPLAY
- CALL KEYSCAN
- BTFSS STATUS,Z
- GOTO XIAODOU
- GOTO HERE
- XIAODOU CALL DISPLAY
- CALL DISPLAY
- CALL DISPLAY
- CALL DISPLAY
- CALL DISPLAY
- CALL DISPLAY
- CALL DISPLAY
- CALL DISPLAY
- CALL DISPLAY
- CALL KEYSCAN
- BTFSC STATUS,Z
- GOTO HERE
- CALL KEYSERVE
- MOVF JIANR,W
- SUBLW 0X03
- BTFSS STATUS,Z
- GOTO HERE
- BCF INTCON,GIE
- CALL DISPLAY
- WAITR CALL KEYSCAN
- BTFSS STATUS,Z
- GOTO WAITR
- DENDAI CALL KEYSCAN
- BTFSC STATUS,Z
- GOTO DENDAI
- CALL KEYDELAY
- CALL KEYSCAN
- BTFSC STATUS,Z
- GOTO DENDAI
- CALL KEYSERVE
- MOVF JIANR,W
- SUBLW 0X03
- BTFSC STATUS,Z
- GOTO WAIT19
- MOVF JIANR,W
- SUBLW 0X03
- BTFSC STATUS,Z
- GOTO DENJIAN
- GOTO DENDAI
- WAIT19 CALL KEYSCAN
- BTFSS STATUS,Z
- GOTO WAIT19
- GOTO ABC
- END
復(fù)制代碼
|
|