PIC进阶HEX与BCD转换汇编

来源:本站
导读:目前正在解读《PIC进阶HEX与BCD转换汇编》的相关信息,《PIC进阶HEX与BCD转换汇编》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《PIC进阶HEX与BCD转换汇编》的详细说明。
简介:本文主要介绍了PIC进阶HEX与BCD转换汇编步骤。

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转换汇编》最后刷新时间 2024-03-14 01:03:26,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《PIC进阶HEX与BCD转换汇编》该内容的真实性请自行鉴别。