• 快递员手绘北京避堵地图走红 网友:比导航牛 2019-03-22
  • 各地学习十九大精神嵌套页面--广西频道--人民网 2019-03-20
  • 女性之声——全国妇联 2019-03-18
  • 枪杀中国女留学生江玥嫌犯已认罪 或获刑7至8年 2019-03-10
  • 网友投诉扰民 绍兴环保局回复"正吃切糕呢" 2019-03-10
  • 山东11选5走势图 > 控制/MCU > 正文

    十一选五最新开奖结果:MSC-51单片机的3字节和4字节浮点数计算程序分析

    2018年11月14日 16:12 ? 次阅读

    山东11选5走势图 www.iic6.com MSC-51 3字节和4字节浮点数计算程序,主要用于数据采集及上传,经过IEEE转换,在上位机直接显示。

    ;这是本人使用的MSC-51 3字节和4字节浮点数计算程序,主要用于数据采集及上传,经过IEEE转换,在上位机直接显示。


    MSC-51单片机的3字节和4字节浮点数计算程序分析

    ; FLOATING PROGRAM

    ;##########################################

    ;##########################################

    ;-----------------------------------------------

    ; IEEE754 FLOAT CONVERT TO 4 BYTES FLOAT

    ; INPUT: ((R0))((R0)+1)((R0)+2)((R0)+3) IEEE-754 FLOAT

    ; OUTPUT: R4 R5R6R7 4 BYTES FLOAT

    ;-----------------------------------------------

    IEE_F:MOV A,@R0

    JNZ CON_0

    INC R0

    MOV A,@R0

    JNZ CON_1

    INC R0

    MOV A,@R0

    JNZ CON_2

    INC R0

    MOV A,@R0

    JNZ CON_3

    MOV R4,#0

    MOV R5,#0

    MOV R6,#0

    MOV R7,#0

    DEC R0

    DEC R0

    DEC R0

    RET

    CON_3:DEC R0

    CON_2:DEC R0

    CON_1:DEC R0

    CON_0:CLR FLAG_0

    INC R0

    MOV A,@R0

    RLC A

    MOV R5,A

    DEC R0

    MOV A,@R0

    RLC A

    MOV R4,A

    JNC SA_IE

    SETB FLAG_0

    SA_IE: CLR C

    MOV A,R4

    SUBB A,#7FH

    CLR C

    INC A

    MOV C,ACC.7

    MOV ACC.6,C

    MOV C,FLAG_0

    MOV ACC.7,C

    MOV R4,A

    MOV A,R5

    SETB C

    RRC A

    MOV R5,A

    INC R0

    INC R0

    MOV A,@R0

    MOV R6,A

    INC R0

    MOV A,@R0

    MOV R7,A

    DEC R0

    DEC R0

    DEC R0

    RET

    ;---------------------------------------------

    ; 4 BYTES FLOAT CONVERT TO IEEE754 FLOAT

    ; INPUT: ((R0)) R2R3R4 4 BYTES FLOAT

    ; OUTPUT: ((R1)) ((R1)+1) ((R1)+2) ((R1)+3)

    ; IEEE-754 FLOAT

    ;---------------------------------------------

    F_IEE:

    INC R0

    MOV A, @R0

    MOV R2, A

    INC R0

    MOV A, @R0

    MOV R3, A

    INC R0

    MOV A, @R0

    MOV R4, A

    DEC R0

    DEC R0

    DEC R0

    MOV A,R2

    JZ ZERO_IEE

    MOV A,@R0

    MOV C,ACC.7

    MOV FLAG_0,C

    CLR ACC.7

    MOV C,ACC.6

    JC F_FF

    DEC A

    CLR C

    ADD A,#7FH

    LJMP F_TR

    F_FF: CLR C

    SUBB A,#02H

    F_TR: MOV C,FLAG_0

    RRC A

    MOV @R1,A

    INC R1

    MOV A,R2

    MOV ACC.7,C

    MOV @R1,A

    INC R1

    MOV A,R3

    MOV @R1,A

    INC R1

    MOV A,R4

    MOV @R1,A

    FIEE_OFF:DEC R1

    DEC R1

    DEC R1

    RET

    ZERO_IEE:MOV @R1,A

    INC R1

    MOV @R1,A

    INC R1

    MOV @R1,A

    INC R1

    MOV @R1,A

    SJMP FIEE_OFF

    ;==========================================

    ; 2 BYTE MUL

    ; 0.R2R3 * 0.R4R5→0.R2R3R7

    ;------------------------------------------

    D2_MUL: MOV A, R3

    MOV B, R5

    MUL AB

    MOV R7, B

    MOV A, R3

    MOV B, R4

    MUL AB

    ADD A, R7

    MOV R7, A

    CLR A

    ADDC A, B

    MOV R3, A

    MOV A, R2

    MOV B, R5

    MUL AB

    ADD A, R7

    MOV A, R3

    ADDC A, B

    MOV R3, A

    MOV PSW.5, c

    MOV A, R2

    MOV B, R4

    MUL AB

    ADD A, R3

    MOV R3, A

    CLR A

    ADDC A, B

    MOV C, PSW.5

    ADDC A, #0

    MOV R2, A

    RET

    ;------------------------------

    ; 2 BYTE DIV

    ; 0.R2R3R7R6 / 0.R4R5→0.R2R3

    ; INPUT 0.R2R3 《 0.R4R5

    ;------------------------------

    D2_DIV: MOV A, R1

    PUSH ACC

    MOV B, #10H

    A2O: CLR C

    MOV A, R6

    RLC A

    MOV R6, A

    MOV A, R7

    RLC A

    MOV R7, A

    MOV A, R3

    RLC A

    MOV R3, A

    XCH A, R2

    RLC A

    XCH A, R2

    MOV PSW.5, C

    CLR C

    SUBB A, R5

    MOV R1, A

    MOV A, R2

    SUBB A, R4

    JB PSW.5, A2S

    JC A2R

    A2S: MOV R2, A

    MOV A, R1

    MOV R3, A

    INC R6

    A2R: DJNZ B, A2O

    POP ACC

    MOV R1, A

    MOV A, R7

    MOV R2, A

    MOV A, R6

    MOV R3, A

    RET

    ;--------------------------------------

    ; 3 BYTE FLOAT LOAD

    ; ((R0))→R6,((R0)+1)→R2,((R0)+2)→R3

    ; ((R1))→R7,((R1)+1)→R4,((R0)+2)→R5

    ;--------------------------------------

    F3_MLD: MOV A, @R0

    MOV R6, A

    INC R0

    MOV A, @R0

    MOV R2, A

    INC R0

    MOV A, @R0

    MOV R3, A

    DEC R0

    DEC R0

    MOV A, @R1

    MOV R7, A

    INC R1

    MOV A, @R1

    MOV R4, A

    INC R1

    MOV A, @R1

    MOV R5, A

    DEC R1

    DEC R1

    RET

    ;--------------------------------------

    ; 3 BYTE FLOAT STANDED

    ;--------------------------------------

    F3_SDT: JC M3A

    MOV C, FLAG39

    JB PSW.5, M3B

    MOV A, R2

    RRC A

    MOV R2, A

    MOV A, R3

    RRC A

    MOV R3, A

    INC R6

    RET

    M3B: MOV A, R4

    RRC A

    MOV R4, A

    MOV A, R5

    RRC A

    MOV R5, A

    INC R7

    RET

    M3A: MOV A, R2

    JNZ M3C

    CJNE R3, #0, M3D

    MOV R6, #41H

    M3E: RET

    M3C: JB ACC.7, M3E

    M3D: MOV C, PSW.5

    MOV A, R3

    RLC A

    MOV R3, A

    MOV A, R2

    RLC A

    MOV R2, A

    CLR PSW.5

    DEC R6

    SJMP M3A

    RET

    ;--------------------------------------

    ; 3 BYTE FLOAT ADD OR SUB

    ; R6R2R3 + R7R4R5→R4R2R3

    ; R6R2R3 - R7R4R5→R4R2R3

    ; FLAG3A = 0 ADD FLAG3A = 1 SUB

    ;--------------------------------------

    F3_ABP: MOV A, R6

    MOV C, ACC.7

    MOV FLAG38, C

    XRL A, R7

    JNB ACC.7, SQ

    CPL FLAG3A

    MOV A, R6

    MOV C, ACC.6

    MOV ACC.7, C

    技术专区

    下载发烧友APP

    打造属于您的人脉电子圈

    关注电子发烧友微信

    有趣有料的资讯及技术干货

    关注发烧友课堂

    锁定最新课程活动及技术直播
    收藏 人收藏
    分享:

    评论

    相关推荐

  • 快递员手绘北京避堵地图走红 网友:比导航牛 2019-03-22
  • 各地学习十九大精神嵌套页面--广西频道--人民网 2019-03-20
  • 女性之声——全国妇联 2019-03-18
  • 枪杀中国女留学生江玥嫌犯已认罪 或获刑7至8年 2019-03-10
  • 网友投诉扰民 绍兴环保局回复"正吃切糕呢" 2019-03-10