单片机数值转换x进制转换bcd码、ascii码编程.docxVIP

  • 41
  • 0
  • 约3.71千字
  • 约 7页
  • 2021-02-27 发布于辽宁
  • 举报

单片机数值转换x进制转换bcd码、ascii码编程.docx

-个8位二进制数转换为BC码 在片内RAM 30H元有-个8位二进制数,将其转换成压缩 BC[码,存于片内RAM 41H(高位) 40H (低位)中。 (方法:2人8=256,所以8位二进制Av=256,A/100商是百位数,存放到41h单元,余数再除以10, 再得商是 10位数 , 高低位互换, ) ORG 0100H START: MOV A,30H ; 取来 8位二进制数 MOV B,#100 DIV AB ; 除以 100 MOV 41H,A ; 商是百位数,存放到41h单元 MOV A,B ; 取回余数 MOV B,#10 DIV AB ; 再除以 10 SWAP A ; 商是10位数,高低位互换 ORL A,B MOV 40H,A ; 将十位数与个位位数存入 40h SJMP $ END 一个字节 (8位)BC[码转换为二进制数 (方法:先将高半字节乘以 10,再加上低半字节) 设待转换的BC码存放于R2中 DTOB:MOV A,R2 ANL A,#0F0H SWAP A MOV B,#0AH MUL AB MOV R3,A MOV A,R2 ANL A,#0FH ADD A,R3 RET 二进制数转换为ASCII码 设(30H)=4BH,将高4位的ASCII码放在31H单元,低4位的ASCII码放在32H单元,程序具有通用 性,向入口参数30H存入任何数,都能将其变成相应的ISCII码. ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV SP,#60H MOV 30H,#4BH MOV R2,30H MOV A,R2 ANL A,#0FH CJNE A,#0AH,NEQ NEQ: JC LOOP ADD A,#37H JMP LOOP3 LOOP:ADD A,#30H LOOP3:MOV 31H,A MOV A,R2 SWAP A ANL A,#0FH CJNE A,#0AH,NE1 NE1: JC LOOP1 ADD A,#37H JMP LOOP4 LOOP1:ADD A,#30H LOOP4:MOV 32H,A A1: SJMP A1 END ASCAII码后送回R(中 ASCAII码后送回R(中 二进制数与 ASCII 码的对应关系: 四位二进制 ASCII 0000 (0) 30H 0001 (1 ) 31H 1001 (9) 39H 1010 (A) 41H 1111 (F) 46H ORG 1000 ; 取四位二进制数; 暂存; 与 10比较; 恢复四位二进制数;小于10转 ; 取四位二进制数 ; 暂存 ; 与 10比较 ; 恢复四位二进制数 ;小于10转LOOP ; 大于10先加 07H ; 加 30H ; 存结果 LOOP: ADD A , #30H MOV R0 , A POP PSW POP ACC RET 一位十六进制数转换成ASCII码 (方法:将十六进制数减10,余数为负数时进位 C=1,判断数值在0—9之间,直接加30H;余数为 正数时进位0=0,判断数值在A— F之间,先加上07H,再直接加30H) ORG 0000H MOV R2,#0CH MOV A,R2 CLR C SUBEA,#0AH ;余数为负数时进位 0=1,判断数值在0—9之间;余数为正数时进位 0=0,判 断数值在A— F之间 MOV A,R2 J0 ADD30 ADD A,#07H ADD30:ADD A,#30H MOV R2,A NOP END 将多位数十六进制数转换成ACAII码 (方法:查表法) 设地址指针R0指向十六进制数低字节, R2存放字节数n, 转换后地址指针R0指向十六进制数高字节, R1指向要存放的ASCII码的高位地址 ORG 0021H TAB2:DB 01H,03H,04H,06H,09H,0AH,00H,08H,0EH,02H MOV R0,#30H MOV R2,#10 HTAS0:MOV A,@R0 ANL A,#0FH ADD A,#15H MOV0 A,@A+P0 MOV @R1,A IN0 R1 MOV A,@R0 SWAP A ANL A,#0FH ADD A,#06H MOV0 A,@A+P0 MOV @R1,A IN0 R0 IN0 R1 DJNZ R2 ,HTAS0 AS0TAB:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H DB 41H,42H,43H,44H,45H,46H BC码换为ACAII码 1. 源程序 RESULT EQU 30H ;等值伪指令 ORG 0 LJMP START ASCII 表ASCIIT ASCII 表 DB ‘0123456789ABCDEF ;定义数字对应的 BI

文档评论(0)

1亿VIP精品文档

相关文档