📄 hex_dec.asm
字号:
HEX_DEC_7F CLRWDT
BSF SIGN_FB
MOVWF TEMP_BUFFER
MOVLW 0x7F ;VR CENTRAL VALUE=80
SUBWF TEMP_BUFFER,F
BTFSC STATUS,C ;RESULT = NEGATIVE?
GOTO HEX_DEC_CONVERT ;NO
BCF SIGN_FB ;SET SIGN FLAG BIT = NEGATIVE
COMF TEMP_BUFFER,F
INCF TEMP_BUFFER,F
GOTO HEX_DEC_CONVERT
HEX_DEC_80 BSF SIGN_FB
MOVWF TEMP_BUFFER
MOVLW 0x80 ;VR CENTRAL VALUE=80
SUBWF TEMP_BUFFER,F
BTFSC STATUS,C ;RESULT = NEGATIVE?
GOTO HEX_DEC_CONVERT ;NO
BCF SIGN_FB ;SET SIGN FLAG BIT = NEGATIVE
COMF TEMP_BUFFER,F
INCF TEMP_BUFFER,F
HEX_DEC_CONVERT MOVF TEMP_BUFFER,W
MOVWF TEMP_BUFFER1
MOVWF TEMP_BUFFER2
BSF STATUS,RP0
CLRF DEC_TEMP1
CLRF DEC_TEMP2
CLRF DEC_TEMP3
BCF STATUS,RP0
VR_DIV100 MOVLW D'100'
SUBWF TEMP_BUFFER2,F
BTFSS STATUS,C ;NEGATIVE ?
GOTO CHK_DEC_3
; GOTO VR_DIV10
BSF STATUS,RP0
INCF DEC_TEMP3,F
BCF STATUS,RP0
MOVF TEMP_BUFFER2,W
MOVWF TEMP_BUFFER1
GOTO VR_DIV100
;---------------------------------------------------------------------
CHK_DEC_3 BTFSC SIGN_FB
GOTO CHK_DEC_31
BSF STATUS,RP0
MOVLW 0x0A
ADDWF DEC_TEMP3,F
BCF STATUS,RP0
GOTO VR_DIV10
CHK_DEC_31 BSF STATUS,RP0
MOVF DEC_TEMP3,W
BCF STATUS,RP0
BTFSS STATUS,Z
GOTO VR_DIV10
BSF STATUS,RP0
MOVLW 0x0C
MOVWF DEC_TEMP3
BCF STATUS,RP0
;---------------------------------------------------------------------
VR_DIV10 MOVF TEMP_BUFFER1,W
MOVWF TEMP_BUFFER2
VR_DIV10_1 MOVLW D'10'
SUBWF TEMP_BUFFER1,F
BTFSS STATUS,C
GOTO CHK_DEC_2
BSF STATUS,RP0
INCF DEC_TEMP2,F
BCF STATUS,RP0
MOVF TEMP_BUFFER1,W
MOVWF TEMP_BUFFER2
GOTO VR_DIV10_1
;---------------------------------------------------------------------
CHK_DEC_2 BSF STATUS,RP0
MOVF DEC_TEMP2,W
BCF STATUS,RP0
BTFSS STATUS,Z
GOTO VR_DIV1
BSF STATUS,RP0
MOVLW 0x0A
XORWF DEC_TEMP3,W
BCF STATUS,RP0
BTFSC STATUS,Z
GOTO CHK_DEC21
BSF STATUS,RP0
MOVLW 0x0C
XORWF DEC_TEMP3,W
BCF STATUS,RP0
BTFSC STATUS,Z
GOTO CHK_DEC21
GOTO VR_DIV1
CHK_DEC21 BSF STATUS,RP0
MOVLW 0x0C
MOVWF DEC_TEMP2
BCF STATUS,RP0
VR_DIV1
MOVF TEMP_BUFFER2,W
BSF STATUS,RP0
MOVWF DEC_TEMP1
BCF STATUS,RP0
RETURN
;***********************************************************************
;File name :HEX_dEC.asm
;Routine Name :BG_DIV
;Input parm :W Register
;Output :W Register
;Ram affected :TEMP_BUFFER1 , TEMP_BUFFER2 , OFFSET
;SFR affected :(STATUS,C,DC,Z)
;I/O Pin :
;Subroutine Call :BAR_GRAPH_TABLE
;***********************************************************************
BG_DIV
MOVWF TEMP_BUFFER1
CLRF TEMP_BUFFER2
XORLW 0xFF
BTFSS STATUS,Z ;Force sensor output value=FF
GOTO BG_DIVA ;No
MOVLW 0x08 ;Yes
MOVWF TEMP_BUFFER2
GOTO BG_DIV2
BG_DIVA
MOVF TEMP_BUFFER1,W
XORLW 0x00
BTFSS STATUS,Z ;Force sensor output value=00
GOTO BG_DIV1 ;No
MOVLW 0xFF
MOVWF TEMP_BUFFER2
GOTO BG_DIV2
BG_DIV1 MOVLW D'37' ;
SUBWF TEMP_BUFFER1,F
BTFSS STATUS,C ;RESULT IS POSITIVE ?
GOTO BG_DIV2 ;NO
INCF TEMP_BUFFER2,F ;YES
GOTO BG_DIV1
BG_DIV2 INCF TEMP_BUFFER2,W
MOVWF OFFSET
CALL BAR_GRAPH_TABLE
RETURN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -