|
;-------------------------------------------------------------------------------
; Function: // BIN__BCD
; Description: // 二进制到十进制转换
; Calls: //
; Called By: // DISP_BCD(DS1820.inc) send_digt(modem_init.inc)
; send_digt_RS232(modem_init.inc) sel_t_1(fgjk.asm)
; Input: // H_BYTE L_BYTE
; Output: // R222 R111 R000
; Return: //
; Others: //
;-------------------------------------------------------------------------------
BIN__BCD
CLRWDT
BCF STATUS,C
MOVLW .16
MOVWF COUNT
CLRF R000
CLRF R111
CLRF R222 ;初始化结果寄存器
LOOP16
RLF L_BYTE,F
RLF H_BYTE,F
RLF R222,F
RLF R111,F ;左移至结果寄存器 从低位到高位
RLF R000,F ;R000<--R111<--R222<--H_BYTE<--L_BYTE
DECFSZ COUNT,F
GOTO ADJDEC
RETLW 0
ADJDEC
MOVLW R222
MOVWF FSR ;指针指向R222
CALL ADJBCD ;调用BCD码校正子程序
MOVLW R111
MOVWF FSR ;指针指向R111
CALL ADJBCD ;调用BCD码校正子程序
MOVLW R000
MOVWF FSR ;指针指向R000
CALL ADJBCD ;调用BCD码校正子程序
GOTO LOOP16
;-------------------------------------------------------------------------------
; Function: // ADJBCD
; Description: // BCD码校正 ????????????
; Calls: // EEPROM_R EE_Byte_Write delays_delay_5500us
; Called By: // DISP_9
; Input: //
; Output: //
; Return: //
; Others: //
;-------------------------------------------------------------------------------
ADJBCD
MOVLW 3
ADDWF INDF,W
MOVWF TEMP
BTFSC TEMP,3 ;判断低位>7
MOVWF INDF ;是,低位加3
MOVLW 30 ;否
ADDWF INDF,W
MOVWF TEMP
BTFSC TEMP,7 ;判断高位>7
MOVWF INDF ;是,高位加3
RETLW 0 ;否,返回0
;------------------------------------------------------------------------------- |
|