?? meter.txt
字號:
;定義用戶寄存器
WEI1 EQU H’0C’ ;BIT0=MODS:選擇模式位 0:模式1 1:模式2
;BIT1=BREK:斷路判別位 0:無斷路 1:有斷路
;BIT2=
;BIT3=
;BIT4=
;BIT5=慢響
;BIT6=快響
;BIT7=長響
WEI2 EQU H’0D’ ;“百位值運算”的啟始值
WEI3 EQU H’0E’ ;“十位值運算”的啟始值
WEI4 EQU H’0F’ ;個位值
WEI5 EQU H’10’ ;百位值
WEI6 EQU H’11’ ;十位值
WEI7 EQU H’12’ ;
WEI8 EQU H’13’ ;
WEI9 EQU H’14’ ;
WEIA EQU H’15’ ;
WEIB EQU H’16’
WEIC EQU H’17’
WEID EQU H’18’
WEIE EQU H’19’
WEIF EQU H’1A’
WEIG EQU H’1B’
WEIH EQU H’1C’
WEII EQU H’1D’
CHECK EQU H’7’
DP EQU H’1’
AD EQU H’0’
BUZZER EQU H’3’
R EQU H’2’
L EQU H’4’
;矢量地址
ORG H’00’ ;復位矢量
GOTO MAIN
ORG H’04’ ;中斷矢量
NOP
GOTO INTER
;************************************************************************
;數碼值
TABLE:
ADDWF PCL,F ;
RETLW B’01000000’ ;“0”值
RETLW B’01111001’ ;“1”值
RETLW B’00100100’ ;“2”值
RETLW B’00110000’ ;“3”值
RETLW B’00011001’ ;“4”值
RETLW B’00010010’ ;“5”值
RETLW B’00000010’ ;“6”值
RETLW B’01011000’ ;“7”值
RETLW B’00000000’ ;“8”值
RETLW B’00010000’ ;“9”值
;------------------------------------------------------------------------
;清除寄存器WEI1-WEIG
MAIN:
CLRF WEI1 ;
CLRF WEI2 ;
CLRF WEI3 ;
CLRF WEI4 ;
CLRF WEI5 ;
CLRF WEI6 ;
CLRF WEI7 ;
CLRF WEI8 ;
CLRF WEI9 ;
CLRF WEIA ;
CLRF WEIB ;
CLRF WEIC ;
CLRF WEID ;
CLRF WEIE ;
CLRF WEIF ;
CLRF WEIG ;
CLRF WEIH ;
CLRF WEII ;
BSF STATUS,RP0 ;
BCF OPTION_REG,NOT_RBPU
BCF STATUS,RP0 ;
MOVF PORTB,1 ;
BTFSS PORTB,1 ;
BSF WEI1,0 ;
;------------------------------------------------------------------------
;設置A/D通道及A/D結構
BSF STATUS,RP0 ;
MOVLW B’00000010’ ;設置一個“A/D口”
MOVWF ADCON1 ;參考電壓:工作電壓5V
MOVLW B’10000000’ ;
MOVWF TRISB ;
MOVLW B’00000001’ ;
MOVWF TRISA ;
MOVLW B’10000111’ ;
MOVWF OPTION_REG ;
MOVLW B’10100000’ ;
MOVWF INTCON ;
;-----------------------------------------------------------------------
;設置端口“輸入/輸出”并設置初始狀態
BCF STATUS,RP0 ;
MOVLW B’01000000’ ;設置A/D通道:AN0
MOVWF ADCON0 ;選用內部1:8時鐘振蕩
MOVLW B’01111111’ ;
MOVWF PORTB ;
MOVLW B’00010110’ ;
MOVWF PORTA ;
MOVLW D’252’ ;
MOVWF TMR0 ;設置TMR0初始值
;------------------------------------------------------------------------
;選擇模式
BTFSC WEI1,0 ;判斷“模式開關”是否閉合
GOTO MODLE2 ;“模式開關”閉合,則進入“模式2”
GOTO MODLE1 ;“模式開關”斷開,則進入“模式1”
;------------------------------------------------------------------------
;“模式1”初始化
MODLE1:
MOVF PORTB,1 ;
BTFSS PORTB,CHECK ;判斷是否有斷路
GOTO $+7 ;
BSF WEI1,1 ;
BSF WEI1,6 ;有斷路:蜂鳴器快響并且“無顯示”延時3秒
BCF WEI1,5 ;
BCF WEI1,7 ;
CALL DELAY3S ;無斷路:“無顯示”延時3秒
GOTO START ;
CALL DELAY3S ;
GOTO START ;
;------------------------------------------------------------------------
;“模式2”初始化 檢測數碼管各段,蜂鳴器“長響 ”
MODLE2:
BSF WEI1,0 ;設置“模式選擇位”
BSF WEI1,7 ;打開蜂鳴器“長響 ”
BCF WEI1,5 ;
BCF WEI1,6 ;
BCF STATUS,C ;設置“進位標志位”
MOVLW B’11111111’ ;
MOVWF WEI7 ;
RLF WEI7,F ;
MOVF WEI7,W ;
MOVWF PORTB ;設置“檢測數碼管段值”給PORT5
BCF PORTA,R ;開通“右數碼管”
BCF PORTA,L ;開通“左數碼管”
CALL DELAYP5 ;
BSF PORTA,R ;關閉“右數碼管”
BSF PORTA,L ;關閉“左數碼管”
MOVLW B’11111111’ ;
MOVWF PORTB ;清除給PORT5的“檢測數碼管段值”
BTFSC WEI7,6 ;檢測是否完畢
GOTO $-D’11’ ;沒有完畢 繼續檢測
BCF PORTA,DP ;已完畢 設置“小數點”及“1”值
BCF PORTA,R ;開通“右數碼管”
BCF PORTA,L ;開通“左數碼管”
CALL DELAYP5 ;
BSF PORTA,R ;關閉“右數碼管”
BSF PORTA,L ;關閉“左數碼管”
BSF PORTA,DP ;清除“小數點”及“1”值
BCF WEI1,7 ;關閉蜂鳴器“長響 ”
BCF WEI1,6 ;
BCF WEI1,5 ;
GOTO START ;
;------------------------------------------------------------------------
;開始工作
START:
MOVF PORTB,F ;
BTFSC PORTB,CHECK ;判斷是否有斷路
GOTO DUANLU ;有斷路
BCF WEI1,1 ;清0斷路判別位
GOTO PANZHI ;無斷路
;------------------------------------------------------------------------
;斷路處理
DUANLU:
BSF WEI1,1 ;設置斷路判別位
BSF WEI1,6 ;
BCF WEI1,5 ;
BCF WEI1,7 ;
GOTO PANZHI ;
;------------------------------------------------------------------------
;判斷電壓值
PANZHI:
BSF ADCON0,ADON ;A/D處于工作狀態
BSF ADCON0,GO_DONE ;A/D開始運行
BTFSC ADCON0,GO_DONE ;判A/D是否完成
GOTO $-1 ;A/D沒完成
BCF ADCON0,ADIF ;
BCF ADCON0,ADON ;A/D已完成 關閉A/D
CALL CV ;
MOVF ADRES,W ;
MOVWF WEI8 ;
MOVWF WEI2 ;A/D值傳給WEI2
BCF STATUS,C ;清零“進位標志位”
SUBLW D’200’ ;
BTFSS STATUS,C
GOTO V_20 ;跳到“20V以上”程序
MOVF ADRES,W
BCF STATUS,C ;清零“進位標志位”
SUBLW D’160’
BTFSS STATUS,C
GOTO V16 ;跳到“16V-19.9V之間”程序
MOVF ADRES,W
BCF STATUS,C ;清零“進位標志位”
SUBLW D’100’
BTFSS STATUS,C
GOTO V10 ;跳到“10V-15.9V之間”程序
MOVF ADRES,W
BCF STATUS,C ;清零“進位標志位”
SUBLW D’50’
BTFSS STATUS,C
GOTO V5 ;跳到“5V-9.9V之間”程序
GOTO V4.9 ;跳到4.9V以下程序
;-------------------------------------------------------------------------
V4.9: ;4.9V以下 數碼管顯示LL
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 ;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -