📄 16c711电压表.asm
字号:
GOTO DISPLAY ;
BSF WEI1,6 ;有断路 快响
BCF WEI1,5 ;
BCF WEI1,7 ;
GOTO DISPLAY ;
;-------------------------------------------------------------------------
V16: ;16V-19.9V
BSF WEI1,6 ;快响
BCF WEI1,5 ;
BCF WEI1,7 ;
GOTO DISPLAY ;
;-------------------------------------------------------------------------
V_20:
BTFSC WEI1,1 ;判断是否有断路
GOTO $+6 ;
BSF WEI1,7 ;无断路 长响
BCF WEI1,6 ;
BCF WEI1,5 ;
CALL HH ;
GOTO START ;
BSF WEI1,6 ;有断路 快响
BCF WEI1,5 ;
BCF WEI1,7 ;
CALL HH ;
GOTO START ;
;-------------------------------------------------------------------------
;运算“显示值”
DISPLAY:
NOP ;
HUN:
MOVF WEI2,W ;
MOVWF WEI3 ;WEI2-100D的余值传给WEI3作为“十位值运算”的启始值
MOVLW D’100’
BCF STATUS,C ;清零“进位标志位”
SUBWF WEI2,F ;WEI2-100D余值传给WEI2
BTFSS STATUS,C ;判WEI2是否大于100D
GOTO TEN ;小于100D 跳到“十位值运算”处
INCF WEI5,F ;大于100D WEI5+1:百位值
GOTO HUN
TEN:
MOVF WEI3,W ;
MOVWF WEI4 ;
MOVLW D’10’ ;WEI3-10D的余值传给WEI4作为“个位值运算”的启始值
BCF STATUS,C ;清零“进位标志位”
SUBWF WEI3,F ;WEI3-10D余值传给WEI3
BTFSS STATUS,C ;判WEI2是否大于10D
GOTO NUMB ;小于10D 跳到“个位值运算”处
INCF WEI6,F ;大于10D WEI6+1:十位值
GOTO TEN
;------------------------------------------------------------------------
;显示“十位值”“小数点”
NUMB:
MOVF WEI6,W
CALL TABLE ;
MOVWF PORTB ;设置“十位值”
BCF PORTA,DP ;设置小数点
BCF PORTA,L ;打开显示“十位值”
CALL DELAY ;
MOVLW B’11111111’ ;
MOVWF PORTB ;清除“十位值”
BSF PORTA,DP ;清除小数点
BSF PORTA,L ;关闭显示“十位值”
;------------------------------------------------------------------------
;显示“个位值” “百位值”
MOVF WEI4,W
CALL TABLE
MOVWF PORTB ;设置“个位值”
BCF STATUS,Z ;清除“零标志位”
CLRW ;清除W
IORWF WEI5,W ;
BTFSS STATUS,Z ;判有无“百位值”
BCF PORTA,DP ;显示“百位值”
BCF PORTA,R ;打开显示“个位值”
CALL DELAY ;
MOVLW B’11111111’ ;
MOVWF PORTB ;清除“个位值”
BSF PORTA,DP ;清除“百位值”
BSF PORTA,R ;关闭显示“个位值”
CLRF WEI6 ;
CLRF WEI5 ;
GOTO START ;
;************************************************************************
;延时20MS秒程序
DELAY:
MOVLW D’10’ ;
MOVWF WEIE ;
DELAY1:
MOVLW D’10’ ;
MOVWF WEIF ;
DELAY2:
MOVLW D’10’ ;
MOVWF WEIG ;
DELAY3:
DECFSZ WEIG,F ;
GOTO DELAY3 ;
DECFSZ WEIF,F ;
GOTO DELAY2 ;
DECFSZ WEIE,F ;
GOTO DELAY1 ;
RETURN ;
;------------------------------------------------------------------------
;延时0.5秒程序
DELAYP5:
CLRF WEI9 ;
CLRF WEIA ;
BTFSS WEIA,2 ;
GOTO $-1 ;
CLRF WEI9 ;
CLRF WEIA ;
RETURN ;
;------------------------------------------------------------------------
;延时3秒程序
DELAY3S:
CLRF WEI9 ;
CLRF WEIA ;
BTFSS WEIA,4 ;
GOTO $-1 ;
CLRF WEI9 ;
CLRF WEIA ;
RETURN ;
;------------------------------------------------------------------------
CV:
BTFSS WEI1,0 ;
RETURN ;
MOVLW B’11100000’ ;
ANDWF WEI1,W ;
BTFSS STATUS,Z ;
RETURN ;
MOVF ADRES,W ;
XORWF WEI8,W ;
BTFSS STATUS,Z ;
GOTO CLEAR ;
BTFSS WEIA,4 ;
RETURN ;
BSF INTCON,RBIE ;使能PORTB引脚电平变化中断
BCF INTCON,GIE ;禁止全局中断
BCF INTCON,T0IE ;
MOVF PORTB,F ;读状态
SLEEP ;进入休眠状态
NOP ;
CLRF INTCON ;
BSF INTCON,GIE ;
BSF INTCON,T0IE ;
CLRF WEI9 ;
CLRF WEIA ;
RETURN ;
CLEAR:
CLRF WEI9 ;
CLRF WEIA ;
RETURN ;
;------------------------------------------------------------------------
LL:
MOVLW B’11000111’ ;
MOVWF PORTB ;
BCF PORTA,L ;
BCF PORTA,R ;
CALL DELAY ;
MOVLW B’11111111’ ;
MOVWF PORTB ;
BSF PORTA,L ;
BSF PORTA,R ;
RETURN
;------------------------------------------------------------------------
HH:
MOVLW B’10001001’ ;
MOVWF PORTB ;
BCF PORTA,L ;
BCF PORTA,R ;
CALL DELAY ;
MOVLW B’11111111’ ;
MOVWF PORTB ;
BSF PORTA,L ;
BSF PORTA,R ;
RETURN
;************************************************************************
;TMR0中断
INTER:
MOVWF WEIH ;W,STATUS压入堆栈
SWAPF STATUS,W ;
MOVWF WEII ;
BCF INTCON,T0IF ;
MOVLW D’252’ ;
MOVWF TMR0 ;设置TMR0初始值
INCFSZ WEI9,F ;
GOTO $+2 ;
INCF WEIA,F ;
MOVLW B’11100000’ ;
ANDWF WEI1,W ;
BTFSC STATUS,Z ;
GOTO OUT2 ;
MOVLW B’00001000’ ;
XORWF PORTA,F ;
BTFSS WEI1,6 ;
GOTO $+D’10’ ;
INCFSZ WEIB,F ;
GOTO OUT ;
BCF PORTA,BUZZER ;
BSF STATUS,RP0 ;
MOVF TRISA,W ;
XORLW B’00001000’ ;
MOVWF TRISA ;
BCF STATUS,RP0 ;
GOTO OUT ;
;------------------------------------------------------------------------
BTFSS WEI1,5 ;
GOTO OUT1 ;
INCFSZ WEIC,F ;
GOTO OUT ;
INCF WEID,F ;
BTFSS WEID,2 ;
GOTO OUT ;
CLRF WEIC ;
CLRF WEID ;
BCF PORTA,BUZZER ;
BSF STATUS,RP0 ;
MOVF TRISA,W ;
XORLW B’00001000’ ;
MOVWF TRISA ;
BCF STATUS,RP0 ;
GOTO OUT ;
OUT1:
BSF STATUS,RP0 ;
MOVF TRISA,W ;
ANDLW B’11110111’ ;
MOVWF TRISA ;
BCF STATUS,RP0 ;
GOTO OUT ;
OUT2:
BCF PORTA,BUZZER ;
OUT:
SWAPF WEII,W ;W,STATUS弹出堆栈
MOVWF STATUS ;
SWAPF WEIH,F ;
SWAPF WEIH,W ;
RETFIE ;允许中断并返回
END
;************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -