HEX_H EQU H'0030'HEX_L EQU H'0031'BCD_H EQU H'0032' BCD_M EQU H'0033' BCD_L EQU H'0034' TEMP EQU H'0035'COUNT EQU H'0036';-------------------------------------------------------------------------------; 5位数 10进制 --> 4位数 16进制; 入口参数:10进制 BCD_H BCD_M BCD_L; 出口参数:16进制 HEX_H HEX_l; 占用资源:W,STATUS,FSR,两重堆栈。; 临时变量:COUNT,TEMP; 计算公式:; 先右移输入的16进制数,最低位移入C, 再右移输出的10进制数,把C移入最高位,; 一直移动16次,把16位全部转移完。; 在循环过程中校正数值,最后一次不要校正!; 校正方法,检测每4位,是否>7,如果是-3到该4位上(或判断 ? 4bit - 3 > 4),否则不改变!;------------------------------------------------------------------------------- BCD5_HEX4:; initial data CLRF HEX_H CLRF HEX_L MOVLW D'16' MOVWF COUNT; loop part HEX_H HEX_l --> BCD_H BCD_M BCD_LBCD5_HEX4_LOOP: BCF STATUS,C RRF BCD_H RRF BCD_M RRF BCD_L RRF HEX_H RRF HEX_L DECFSZ COUNT,F GOTO BCD5_HEX4_ADJUST_DAT RETLW 0BCD5_HEX4_ADJUST_DAT: MOVLW BCD_H ; W <- BCD_L地址 MOVWF FSR ; FSR <- W (BCD_L的地址) CALL ADJUST_BYTE_BCD_HEX ; 调整 MOVLW BCD_M MOVWF FSR CALL ADJUST_BYTE_BCD_HEX MOVLW BCD_L MOVWF FSR CALL ADJUST_BYTE_BCD_HEX GOTO BCD5_HEX4_LOOP ADJUST_BYTE_BCD_HEX: MOVLW H'03' ; W<-3 BTFSC INDF,3 ; ?数值 >7 SUBWF INDF,F ; 保存结果(F-W → F ,低四位减3 ) MOVLW H'30' ; W<-3 BTFSC INDF,7 ; ?数值 >7 SUBWF INDF,F ; 保存结果(F-W → F ,低四位减3 ) RETLW 0;-------------------------------------------------------------------------------; 4位数 16进制 --> 5位数 10进制; 入口参数:16进制 HEX_H HEX_l; 出口参数:10进制 BCD_H BCD_M BCD_L; 占用资源:W,STATUS,FSR,两重堆栈。; 临时变量:COUNT,TEMP; 计算公式:; 先左移输入的16进制数,最高位移入C, 再左移输出的10进制数,把C移入最低位,; 一直移动16次,把16位全部转移完。; 在循环过程中校正数值,最后一次不要校正!; 校正方法,检测每4位,是否>4,如果是+3到该4位上(或判断 ? 4bit + 3 > 7),否则不改变!;------------------------------------------------------------------------------- HEX4_BCD5:; initial data CLRF BCD_H CLRF BCD_M CLRF BCD_L MOVLW D'16' MOVWF COUNT BCF STATUS,C; loop part BCD_H BCD_M BCD_L <- HEX_H HEX_lHEX4_BCD5_LOOP: RLF HEX_L RLF HEX_H RLF BCD_L RLF BCD_M RLF BCD_H DECFSZ COUNT,F GOTO HEX4_BCD5_ADJUST_DAT RETLW 0HEX4_BCD5_ADJUST_DAT: MOVLW BCD_L ; W <- BCD_L地址 MOVWF FSR ; FSR <- W (BCD_L的地址) CALL ADJUST_BYTE_HEX_BCD ; 调整 MOVLW BCD_M MOVWF FSR CALL ADJUST_BYTE_HEX_BCD MOVLW BCD_H MOVWF FSR CALL ADJUST_BYTE_HEX_BCD GOTO HEX4_BCD5_LOOPADJUST_BYTE_HEX_BCD: MOVLW H'03' ; W<-3 ADDWF INDF,W ; F+W → W ,低四位加3 MOVWF TEMP BTFSC TEMP,3 ; ? 结果 > 7 MOVWF INDF ; 保存结果(结果 > 7) MOVLW H'30' ; W<-0X30 ADDWF INDF,W ; F+W → W ,高四位加3 MOVWF TEMP BTFSC TEMP,7 ; ? 结果 > 7 MOVWF INDF ; 保存结果(结果 > 7) RETLW 0
导读:目前正在解读《PIC进阶HEX与BCD转换汇编》的相关信息,《PIC进阶HEX与BCD转换汇编》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《PIC进阶HEX与BCD转换汇编》的详细说明。
简介:本文主要介绍了PIC进阶HEX与BCD转换汇编步骤。
提醒:《PIC进阶HEX与BCD转换汇编》最后刷新时间 2024-03-14 01:03:26,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《PIC进阶HEX与BCD转换汇编》该内容的真实性请自行鉴别。