MSC-51单片机的3字节和4字节浮点数计算程序分析.doc
-
资源ID:3262890
资源大小:39.50KB
全文页数:11页
- 资源格式: DOC
下载积分:4元
快捷下载
会员登录下载
微信登录下载
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
MSC-51单片机的3字节和4字节浮点数计算程序分析.doc
MSC-51单片机的3字节和4字节浮点数计算程序分析MSC-51 3字节和4字节浮点数计算程序,主要用于数据采集及上传,经过IEEE转换,在上位机直接显示。;这是本人使用的MSC-51 3字节和4字节浮点数计算程序,主要用于数据采集及上传,经过IEEE转换,在上位机直接显示。; 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,R0JNZ CON_0INC R0MOV A,R0JNZ CON_1INC R0MOV A,R0JNZ CON_2INC R0MOV A,R0JNZ CON_3MOV R4,#0MOV R5,#0MOV R6,#0MOV R7,#0DEC R0DEC R0DEC R0RETCON_3:DEC R0CON_2:DEC R0CON_1:DEC R0CON_0:CLR FLAG_0INC R0MOV A,R0RLC AMOV R5,ADEC R0MOV A,R0RLC AMOV R4,AJNC SA_IESETB FLAG_0SA_IE: CLR CMOV A,R4SUBB A,#7FHCLR CINC AMOV C,ACC.7MOV ACC.6,CMOV C,FLAG_0MOV ACC.7,CMOV R4,AMOV A,R5SETB CRRC AMOV R5,AINC R0INC R0MOV A,R0MOV R6,AINC R0MOV A,R0MOV R7,ADEC R0DEC R0DEC R0RET;-; 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 R0MOV A, R0MOV R2, AINC R0MOV A, R0MOV R3, AINC R0MOV A, R0MOV R4, ADEC R0DEC R0DEC R0MOV A,R2JZ ZERO_IEEMOV A,R0MOV C,ACC.7MOV FLAG_0,CCLR ACC.7MOV C,ACC.6JC F_FFDEC ACLR CADD A,#7FHLJMP F_TRF_FF: CLR CSUBB A,#02HF_TR: MOV C,FLAG_0RRC AMOV R1,AINC R1MOV A,R2MOV ACC.7,CMOV R1,AINC R1MOV A,R3MOV R1,AINC R1MOV A,R4MOV R1,AFIEE_OFF:DEC R1DEC R1DEC R1RETZERO_IEE:MOV R1,AINC R1MOV R1,AINC R1MOV R1,AINC R1MOV R1,ASJMP FIEE_OFF;=; 2 BYTE MUL; 0.R2R3 * 0.R4R50.R2R3R7;-D2_MUL: MOV A, R3MOV B, R5MUL ABMOV R7, BMOV A, R3MOV B, R4MUL ABADD A, R7MOV R7, ACLR AADDC A, BMOV R3, AMOV A, R2MOV B, R5MUL ABADD A, R7MOV A, R3ADDC A, BMOV R3, AMOV PSW.5, cMOV A, R2MOV B, R4MUL ABADD A, R3MOV R3, ACLR AADDC A, BMOV C, PSW.5ADDC A, #0MOV R2, ARET;-; 2 BYTE DIV; 0.R2R3R7R6 / 0.R4R50.R2R3; INPUT 0.R2R3 0.R4R5;-D2_DIV: MOV A, R1PUSH ACCMOV B, #10HA2O: CLR CMOV A, R6RLC AMOV R6, AMOV A, R7RLC AMOV R7, AMOV A, R3RLC AMOV R3, AXCH A, R2RLC AXCH A, R2MOV PSW.5, CCLR CSUBB A, R5MOV R1, AMOV A, R2SUBB A, R4JB PSW.5, A2SJC A2RA2S: MOV R2, AMOV A, R1MOV R3, AINC R6A2R: DJNZ B, A2OPOP ACCMOV R1, AMOV A, R7MOV R2, AMOV A, R6MOV R3, ARET;-; 3 BYTE FLOAT LOAD; (R0)R6,(R0)+1)R2,(R0)+2)R3; (R1)R7,(R1)+1)R4,(R0)+2)R5;-F3_MLD: MOV A, R0MOV R6, AINC R0MOV A, R0MOV R2, AINC R0MOV A, R0MOV R3, ADEC R0DEC R0MOV A, R1MOV R7, AINC R1MOV A, R1MOV R4, AINC R1MOV A, R1MOV R5, ADEC R1DEC R1RET;-; 3 BYTE FLOAT STANDED;-F3_SDT: JC M3AMOV C, FLAG39JB PSW.5, M3BMOV A, R2RRC AMOV R2, AMOV A, R3RRC AMOV R3, AINC R6RETM3B: MOV A, R4RRC AMOV R4, AMOV A, R5RRC AMOV R5, AINC R7RETM3A: MOV A, R2JNZ M3CCJNE R3, #0, M3DMOV R6, #41HM3E: RETM3C: JB ACC.7, M3EM3D: MOV C, PSW.5MOV A, R3RLC AMOV R3, AMOV A, R2RLC AMOV R2, ACLR PSW.5DEC R6SJMP M3ARET;-; 3 BYTE FLOAT ADD OR SUB; R6R2R3 + R7R4R5R4R2R3; R6R2R3 - R7R4R5R4R2R3; FLAG3A = 0 ADD FLAG3A = 1 SUB;-F3_ABP: MOV A, R6MOV C, ACC.7MOV FLAG38, CXRL A, R7JNB ACC.7, SQCPL FLAG3AMOV A, R6MOV C, ACC.6MOV ACC.7, C