BTFSC WEI1,1 ;判断是否有断路
GOTO $+6 ;
BSF WEI1,7 ;无断路 长响
BCF WEI1,6 ;
BCF WEI1,5 ;
CALL LL ;
GOTO START ;
BSF WEI1,6 ;有断路 快响
BCF WEI1,5 ;
BCF WEI1,7 ;
CALL LL ;
GOTO START ;
;-------------------------------------------------------------------------
V5: ;5V-9.9V之间
BTFSC WEI1,1 ;判断是否有断路
GOTO $+5 ;
BSF WEI1,5 ;无断路 慢响
BCF WEI1,6 ;
BCF WEI1,7 ;
GOTO DISPLAY ;
BSF WEI1,6 ;有断路 快响
BCF WEI1,5 ;
BCF WEI1,7 ;
GOTO DISPLAY ;
;-------------------------------------------------------------------------
V10: ;10V-15.9V之间
BTFSC WEI1,1 ;判断是否有断路
GOTO $+5 ;
BCF WEI1,5 ;无断路 不响
BCF WEI1,6 ;
BCF WEI1,7 ;
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:
MOV F WEI2,W ;
MOV WF WEI3 ;WEI2-100D的余值传给WEI3作为“十位值运算”的启始值
MOV LW 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:
MOV F WEI3,W ;
MOV WF WEI4 ;
MOV LW 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:
MOV F WEI6,W
CALL TABLE ;
MOV WF PORTB ;设置“十位值”
BCF PORTA,DP ;设置小数点
BCF PORTA,L ;打开显示“十位值”
CALL DELAY ;
MOV LW B’11111111’ ;
MOV WF PORTB ;清除“十位值”
BSF PORTA,DP ;清除小数点
BSF PORTA,L ;关闭显示“十位值”
;------------------------------------------------------------------------
;显示“个位值” “百位值”
MOV F WEI4,W
CALL TABLE
MOV WF PORTB ;设置“个位值”
BCF STATUS,Z ;清除“零标志位”
CLRW ;清除W
IORWF WEI5,W ;
BTFSS STATUS,Z ;判有无“百位值”
BCF PORTA,DP ;显示“百位值”
BCF PORTA,R ;打开显示“个位值”
CALL DELAY ;
MOV LW B’11111111’ ;
MOV WF PORTB ;清除“个位值”
BSF PORTA,DP ;清除“百位值”
BSF PORTA,R ;关闭显示“个位值”
CLRF WEI6 ;
CLRF WEI5 ;
GOTO START ;
;************************************************************************
;延时20MS秒程序
DELAY:
MOV LW D’10’ ;
MOV WF WEIE ;
DELAY1:
MOV LW D’10’ ;
MOV WF WEIF ;
DELAY2:
MOV LW D’10’ ;
MOV WF 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 ;
MOV LW B’11100000’ ;
ANDWF WEI1,W ;
BTFSS STATUS,Z ;
RETURN ;
MOV F ADRES,W ;
XORWF WEI8,W ;
BTFSS STATUS,Z ;
GOTO CLEAR ;
BTFSS WEIA,4 ;
RETURN ;
BSF INTCON,RBIE ;使能PORTB引脚电平变化中断
BCF INTCON,GIE ;禁止全局中断
BCF INTCON,T0IE ;
MOV F PORTB,F ;读状态
SLEEP ;进入休眠状态
NOP ;
CLRF INTCON ;
BSF INTCON,GIE ;
BSF INTCON,T0IE ;
CLRF WEI9 ;
CLRF WEIA ;
RETURN ;
CLEAR:
CLRF WEI9 ;
CLRF WEIA ;
RETURN ;
;------------------------------------------------------------------------
LL:
MOV LW B’11000111’ ;
MOV WF PORTB ;
BCF PORTA,L ;
BCF PORTA,R ;
CALL DELAY ;
MOV LW B’11111111’ ;
MOV WF PORTB ;
BSF PORTA,L ;
BSF PORTA,R ;
RETURN
;------------------------------------------------------------------------
HH:
MOV LW B’10001001’ ;
MOV WF PORTB ;
BCF PORTA,L ;
BCF PORTA,R ;
CALL DELAY ;
MOV LW B’11111111’ ;
MOV WF PORTB ;
BSF PORTA,L ;
BSF PORTA,R ;
RETURN
;************************************************************************
;TMR0中断
INTER:
MOV WF WEIH ;W,STATUS压入堆栈
SWAPF STATUS,W ;
MOV WF WEII ;
BCF INTCON,T0IF ;
MOV LW D’252’ ;
MOV WF TMR0 ;设置TMR0初始值
INCFSZ WEI9,F ;
GOTO $+2 ;
INCF WEIA,F ;
MOV LW B’11100000’ ;
ANDWF WEI1,W ;
BTFSC STATUS,Z ;
GOTO OUT2 ;
MOV LW B’00001000’ ;
XORWF PORTA,F ;
BTFSS WEI1,6 ;
GOTO $+D’10’ ;
INCFSZ WEIB,F ;
GOTO OUT ;
BCF PORTA,BUZZER ;
BSF STATUS,RP0 ;
MOV F TRISA,W ;
XORLW B’00001000’ ;
MOV WF TRISA ;
BCF STATUS,RP0 ;
GOTO OUT ;
上一页 [1] [2] [3] 下一页
本文关键字:电压表 PIC单片机,单片机-工控设备 - PIC单片机