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

📄 字节浮点数转换为定点整数.txt

📁 实用子程序.rar本子程序库对《单片机应用程序设计技术》一书附录中的子程序库作了重大修订
💻 TXT
字号:
;【校验举例1】 19531(十进制)
;化为十六进制数:4C4B0FH 
;结果:4C4BH
;4.2  3字节浮点数转换为定点整数
;子程序的转换结果将采用补码表示。其转换数值范围:-32768~32767,
;入口条件和出口条件如下:
;入口条件:ACCBHI、ACCBLO、EXPB
;出口条件:ACCBHI、ACCBLO
 ;   以下为子程序的清单。由于程序所需调用的子程序和所需通用寄存器
;单元地址和定点数转换为浮点数子程序相同,在此省略。使用时,将前面介绍
;的子程序拷入此处即可。
    LIST            p=16f877
    INCLUDE        p16f877.inc
ACCBLO         EQU     23h        ;存放被转换的双字节整数低8位
ACCBHI         EQU     24h        ;存放被转换的双字节整数高8位
ACCCLO         EQU     26h        ;存放5位BCD码
ACCCHI         EQU     27h
ACCDLO         EQU     28h
ACCDHI         EQU     29h
TEMP         EQU     2Ah        ;临时寄存器
SIGN         EQU     2Bh        ;被转换数符号寄存器
EXPB         equ     2ch
NEG_B        EQU     2DH 
    ORG            0X0000



MAIN        MOVLW        0X4B        ;被转换数4C4BH送ACCB
    MOVWF        ACCBLO
    MOVLW        0X4C
    MOVWF        ACCBHI
    MOVLW        0X0F
    MOVWF        EXPB
        CALL        FtoD            ;调用定点数至浮点数转换子程序
   GOTO  $

FtoD    CLRF         SIGN            ;清结果符号寄存器
    MOVF         ACCBHI,0
    BTFSS         ACCBHI,7    ;被转换数是否为负?
    GOTO         D1
    BSF             SIGN,7        ;是,SIGN.7置1
    CALL         NEG_B        ;被转换数取补
D1    BTFSS         EXPB,7        ;被转换数为正,再判阶码为负否?
    GOTO         D2
    CLRF         ACCBHI        ;为负,被转换数小于1,无法用定点数表示
    CLRF         ACCBLO
    RETLW         0
D2    MOVLW         .16            ;被转换数阶码减16(十进制数)
    SUBWF         EXPB,0
    BTFSS         STATUS,C    ;阶码小于16?
    GOTO         D3
        MOVLW         0XFF            ;阶码大于等于16,置ACCB为最大,返回
    MOVWF         ACCBHI
    MOVWF         ACCBLO
    RETLW         01
D3    CALL         FTOW3        ;调用子程序将浮点数转换为定点数
    BTFSC         SIGN,7        ;定点数为负?
    CALL         NEG_B        ;是,取补
    RETLW         0            ;否,返回
;****************************************
FTOW3    MOVLW         .15            ;EXPB=15(十进制数)?
    SUBWF         EXPB,0
    BTFSC         STATUS,Z
    RETLW         0            ;是,返回
    BCF             STATUS,C    ;否,ACCB继续右移,EXPB加1
    RRF             ACCBHI
    RRF             ACCBLO
    INCF         EXPB
    GOTO         FTOW3        ;重新判断EXPB=15?





    END

⌨️ 快捷键说明

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