|
本帖最后由 yuri141 于 2020-12-26 16:38 编辑
我在进行一个秒表功能电路的仿真时,发现他的数码管不能正常显示数字,乱码,各位大佬帮帮忙指点一下啊!!!谢谢
附上我的仿真文件和汇编语言文件
- 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;不带小数点的共阳极数码表
- 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;带小数点的共阳极码表
- 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发送显示子模块--------------------
- 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计数溢出处理-------------------
- CS0 CLRF S0
- INCF S1
- RETURN
- ;-----------------S1计数溢出处理-------------------
- CS1 CLRF S1
- INCF S2
- RETURN
- ;-----------------S2计数溢出处理-------------------
- CS2 CLRF S2
- INCF S3
- RETURN
- ;-----------------S3计数溢出处理-------------------
- CS3 CLRF S3
- RETURN
- ;-----------------时钟中断服务程序--------------------
- 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 ;一下为中断现场回复
- 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
- ;------------------------系统初始化子程序----------------
- 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
- ;-----------------------------键盘服务子程序----------------
- 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
- ;---------------------------显示缓冲区处理子程序-----------------
- 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
复制代码
|
|