⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 定点数转换成浮点数.txt

📁 实用子程序.rar本子程序库对《单片机应用程序设计技术》一书附录中的子程序库作了重大修订
💻 TXT
字号:
;【校验举例1】 19531(十进制)
;化为十六进制数:4C4BH
;结果:4C4B0FH

;4.1  定点数转换成浮点数
;本子程序的功能是将双字节定点整数(十六进制)转换为3字节浮点数,
;其转换数值范围:-32768~32767,入口条件和出口条件如下:
;入口条件:ACCBHI、ACCBLO
;出口条件:ACCBHI、ACCBLO、EXPB
;以下为定点整数转换成浮点数的程序清单。
   
    LIST            p=16f877
    INCLUDE        p16f877.inc
    ACCBLO         EQU     23h        ;存放定点整数和转换后浮点数的尾数
    ACCBHI         EQU     24h
    EXPB         EQU     25h        ;存放转换后浮点数的阶码
    ACCCLO         EQU     26h        ;临时寄存器
    ACCCHI         EQU     27h        ;临时寄存器
    ACCDLO         EQU     28h        ;临时寄存器
    ACCDHI         EQU     29h        ;临时寄存器
    SIGN         EQU     2Bh        ;存放被转换数的符号


START    GOTO        MAIN
    ORG            0X0100
;*********双字节定点整数到浮点数转换子程序***********
DtoF    CLRF         SIGN            ;根据被转换数确定结果的符号,对负数取补
    BTFSS         ACCBHI,7
    GOTO         INTF1
    BSF             SIGN,7
    CALL         NEG_B
NEG_B    DECF         ACCBLO        ;
    COMF         ACCBLO
    BTFSC         STATUS,Z
    DECF         ACCBHI
    COMF         ACCBHI
OVER    RETURN        ;子程序返回


INTF1    MOVLW         .15            ;初始化EXPB
    MOVWF         EXPB
    CLRF         ACCCHI
    CLRF         ACCCLO
    CALL         F_norm        ;对ACCB进行规格化
    BTFSS         SIGN,7        ;结果为负?
    GOTO         DtoF1
    CALL         NEG_B        ;是,求补
DtoF1    RETURN    
;**************浮点数规格化子程序**************
F_norm     MOVF         ACCBHI        ;ACCB=0?
    BTFSS         STATUS,Z
    GOTO         C_norm
    MOVF         ACCBLO
    BTFSC         STATUS,Z
    RETLW         0            ;是,不需规格化,返回
C_norm    BTFSC        ACCBHI,7    ;否。ACCB为负?
     GOTO        C_norm2    
C_norm1    BTFSC         ACCBHI,6    ;为正。规格化完毕?
    RETLW         0            ;ACCBHI.6=1,规格化结束
    CALL         SHFTSL        ;否。ACCB左移
    DECF         EXPB        ;EXPB减1
    GOTO         C_norm1        ;重新判断规格化完毕否?
C_norm2    BTFSS        ACCBHI,6    ;ACCB为负。规格化完毕否?
    RETLW        0            ;ACCBHI.6=0,规格化结束
    BCF            STATUS,C    
    CALL        SHFTSL        ;否,ACCB左移
    BSF            ACCBHI,7    ;加符号
    DECF        EXPB        ;EXPB减1
    GOTO        C_norm2        ;重新判断规格化完毕否?
SHFTSL      BCF             STATUS ,C    ;ACCB左移子程序    
    RLF             ACCCLO        
    RLF             ACCCHI
    RLF             ACCBLO
    RLF             ACCBHI
    RETLW         0
MAIN        MOVLW        0X4B        ;被转换数4C4BH送ACCB
    MOVWF        ACCBLO
    MOVLW        0X4C
    MOVWF        ACCBHI
        CALL        DtoF            ;调用定点数至浮点数转换子程序  
  goto  $ 
 END 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -