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

📄 ftolong.asm

📁 51单片机(汇编)浮点转换及浮点格式说明程序
💻 ASM
字号:
;此程序是将青岛青智仪器有限公司仪表通讯回送的浮点数据(四字节)乘1000以后
;转换为长整形(四字节)的样例程序
;青岛青智仪器有限公司仪表的浮点数据与微型机单精度浮点格式(四字节)的一致
;此程序适合51系列单片机

		  ORG    0000H
		  LJMP   L0237H      ;跳转到主程入口
L0003H:                    ;四字节的浮点数据转化为乘了1000的四字节长整型数据
		  MOV    10H, 08H    ;入口四字节浮点地址为08H,09H,0AH,0BH(由低到高)
		  MOV    11H, 09H    ;出口数据(乘了1000后的长整型数据)存放在0CH,0DH,0EH,0FH中(由低到高)
		  MOV    12H, 0AH
		  MOV    13H, 0BH
		  MOV    R7, #44H
		  MOV    R6, #7AH
		  MOV    R5, #00H
		  MOV    R4, #00H
		  LCALL  L01F8H
		  MOV    R7, 13H
		  MOV    R6, 12H
		  MOV    R5, 11H
		  MOV    R4, 10H
		  LCALL  L005EH
		  LCALL  L00BDH
		  MOV    0FH, R7
		  MOV    0EH, R6
		  MOV    0DH, R5
		  MOV    0CH, R4
		  RET
L0031H:                      ;从此处开始将从仪表接收到的四字节的浮点数
		  MOV    08H, #02H     ;由低到高赋给08H,09H,0AH,0BH
		  MOV    09H, #01H     ;其中数据02H,01H,34H,42H为浮点数45.000984的四个字节
		  MOV    0AH, #34H     ;如果转换别的数据,可以在此处将四字节数值
		  MOV    0BH, #42H     ;由低到高赋给08H,09H,0AH,0BH

		  LCALL  L0003H        ;调用浮点数据转换为长整形数据的子程,转换后的数据乘了1000

		  MOV    17H, 0FH      ;转换后的乘了1000的长整型数据,存放在0CH,0CDH,0EH,0FH中
		  MOV    16H, 0EH      ;如果转换前放的为正数,则转换后的实际数据为
		  MOV    15H, 0DH      ;(0CH中的数+0DH中的数*256+0EH中的数*256*256+0FH中的数*256*256*256)/1000
		  MOV    14H, 0CH      ;17H,16H,15H,14H为临时变量,表示可以在此处,提取
		  RET                  ;转换后的数据
L004DH:
        DJNZ   R2, L0052H
        CJNE   R0, #00H, L0055H
L0052H:
        LJMP   L0172H
L0055H:
		  DJNZ   R1, L0059H
        SJMP   L005BH
L0059H:
        DJNZ   R1, L0052H
L005BH:
        LJMP   L015EH
L005EH:
		  LCALL  L01A3H
		  JNB    07H, L0065H
		  CPL    C
L0065H:
		  MOV    07H, C
		  JNZ    L006DH
		  DJNZ   R1, L0052H
		  SJMP   L0072H
L006DH:
		  DJNZ   R2, L004DH
		  CJNE   R0, #00H, L0075H
L0072H:
		  LJMP   L019EH
L0075H:
		  DJNZ   R1, L0059H
		  CLR    C
		  SUBB   A, #7EH
		  JNC    L007EH
		  DEC    28H
L007EH:
		  ADD    A, 27H
		  MOV    27H, A
		  JNC    L0086H
		  INC    28H
L0086H:
		  MOV    R0, #29H
L0088H:
		  MOV    @R0, #00H
		  INC    R0
		  CJNE   R0, #2FH, L0088H
		  MOV    R0, #21H
		  MOV    R1, #29H
L0092H:
		  MOV    A, @R0
		  INC    R0
		  MOV    R2, A
		  MOV    A, R0
		  MOV    R4, A
		  MOV    R0, #24H
L0099H:
		  MOV    B, R2
		  MOV    A, @R0
		  INC    R0
        MUL    AB
        ADD    A, @R1
        MOV    @R1, A
        INC    R1
        MOV    A, B
        ADDC   A, @R1
        MOV    @R1, A
        JNC    L00B0H
        MOV    B, R1
L00A9H:
        INC    R1
		  INC    @R1
        MOV    A, @R1
        JZ     L00A9H
        MOV    R1, B
L00B0H:
        CJNE   R0, #27H, L0099H
		  DEC    R1
		  DEC    R1
        MOV    A, R4
        MOV    R0, A
        CJNE   R0, #24H, L0092H
        LJMP   L00FDH
L00BDH:
        MOV    A, R7
        MOV    B, R6
        MOV    C, B.7
        SETB   B.7
        RLC    A
        MOV    F0, C
		  CLR    C
        SUBB   A, #7FH
        JNC    L00D2H
        CLR    A
L00CDH:
        MOV    R7, A
		  MOV    R6, A
		  MOV    R5, A
        MOV    R4, A
L00D1H:
        RET    
L00D2H:
        SUBB   A, #20H
        JC     L00DAH
        MOV    A, #0FFH
        SJMP   L00CDH
L00DAH:
        INC    A
        XCH    A, R4
		  MOV    R6, A
        CLR    A
        MOV    R7, A
        MOV    R2, A
        MOV    A, B
        XCH    A, R4
L00E3H:
		  JZ     L00F7H
        CLR    C
        XCH    A, R4
        RRC    A
        XCH    A, R4
        XCH    A, R5
        RRC    A
        XCH    A, R5
        XCH    A, R6
        RRC    A
        XCH    A, R6
        XCH    A, R7
		  RRC    A
        XCH    A, R7
        INC    A
        JNC    L00E3H
        DJNZ   R2, L00E3H
L00F7H:
		  JNB    F0, L00D1H
		  LJMP   L01EAH
L00FDH:
        MOV    A, 2EH
        JB     ACC.7, L0115H
        MOV    R0, #2BH
        CLR    C
        MOV    R7, #04H
L0107H:
        MOV    A, @R0
        RLC    A
        MOV    @R0, A
        INC    R0
		  DJNZ   R7, L0107H
        MOV    A, 27H
        JNZ    L0113H
        DEC    28H
L0113H:
        DEC    27H
L0115H:
		  MOV    A, 2BH
        RLC    A
        MOV    R0, #2CH
        MOV    R7, #03H
L011CH:
        MOV    A, @R0
        ADDC   A, #00H
        MOV    @R0, A
        JNC    L0130H
        INC    R0
        DJNZ   R7, L011CH
        MOV    2EH, #80H
		  INC    27H
        MOV    A, 27H
        JNZ    L0130H
        INC    28H
L0130H:
        MOV    A, 28H
		  JB     ACC.7, L0189H
		  JNZ    L015EH
        MOV    A, 27H
        JZ     L0189H
        INC    A
        JZ     L015EH
        MOV    26H, 2EH
        MOV    25H, 2DH
        MOV    24H, 2CH
        ANL    20H, #0F0H
L014AH:
        MOV    R4, 24H
        MOV    R5, 25H
		  MOV    C, 07H
        MOV    A, 27H
        RRC    A
        MOV    R7, A
        MOV    A, 26H
        MOV    ACC.7, C
		  MOV    R6, A
		  MOV    R0, 27H
        LJMP   L021FH
L015EH:
        CLR    A
        MOV    26H, A
        MOV    25H, A
        MOV    24H, A
        MOV    28H, A
        MOV    27H, #0FFH
        ANL    20H, #0F0H
        ORL    20H, #05H
        SJMP   L014AH
L0172H:
        MOV    A, #0FFH
        MOV    26H, A
        MOV    25H, A
        MOV    24H, A
        MOV    28H, #00H
		  MOV    27H, A
		  SETB   07H
        ANL    20H, #0F0H
        ORL    20H, #09H
        SJMP   L014AH
L0189H:
        ANL    20H, #0F0H
        ORL    20H, #03H
L018FH:
        CLR    A
        MOV    26H, A
        MOV    25H, A
        MOV    24H, A
		  MOV    28H, A
        MOV    27H, A
        CLR    07H
        SJMP   L014AH
L019EH:
        ANL    20H, #0F0H
		  SJMP   L018FH
L01A3H:
		  MOV    R1, #01H
		  MOV    R2, #01H
		  MOV    B, 26H
		  MOV    A, 27H
		  MOV    C, B.7
		  RLC    A
		  MOV    07H, C
		  MOV    28H, #00H
		  MOV    27H, A
		  JZ     L01BAH
		  SETB   B.7
L01BAH:
		  MOV    26H, B
		  MOV    R0, 27H
		  CJNE   R0, #0FFH, L01CAH
		  INC    R1
		  MOV    A, 26H
		  CLR    ACC.7
		  JZ     L01CAH
		  INC    R1
L01CAH:
		  MOV    21H, R4
		  MOV    22H, R5
		  MOV    B, R6
		  MOV    C, B.7
		  MOV    A, R7
		  RLC    A
		  INC    A
		  JNZ    L01E1H
		  INC    R2
		  CLR    B.7
		  INC    B
		  INC    R2
		  DJNZ   B, L01E1H
		  DEC    R2
L01E1H:
		  DEC    A
		  JZ     L01E6H
		  SETB   B.7
L01E6H:
		  MOV    23H, B
		  RET
L01EAH:
		  CLR    C
		  CLR    A
		  SUBB   A, R7
		  MOV    R7, A
		  CLR    A
		  SUBB   A, R6
		  MOV    R6, A
        CLR    A
        SUBB   A, R5
        MOV    R5, A
        CLR    A
        SUBB   A, R4
		  MOV    R4, A
		  RET
L01F8H:
        MOV    A, 2FH
        INC    2FH
        JZ     L020EH
        POP    B
        POP    ACC
        PUSH   24H
        PUSH   25H
		  PUSH   26H
        PUSH   27H
        PUSH   ACC
		  PUSH   B
L020EH:
        MOV    27H, R7
        MOV    26H, R6
        MOV    25H, R5
        MOV    24H, R4
		  RET
		  MOV    R7, 27H
        MOV    R6, 26H
        MOV    R5, 25H
        MOV    R4, 24H
L021FH:
        MOV    A, 2FH
        DEC    A
        JZ     L0234H
        POP    B
		  POP    ACC
        POP    27H
        POP    26H
		  POP    25H
        POP    24H
        PUSH   ACC
        PUSH   B
L0234H:
        DEC    2FH
		  RET
L0237H:                      ;主程入口
		  MOV    R0, #7FH
		  CLR    A
L023AH:
		  MOV    @R0, A
		  DJNZ   R0, L023AH
        MOV    SP, #2FH
        LJMP   L0031H
        MOV    R7, A

		  END

⌨️ 快捷键说明

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