单片机BCD码转换

来源:百度知道 编辑:UC知道 时间:2024/05/27 17:49:21
本人做一个测脉宽的程序,遇点问题。R6R7是自己定义的计数器,R6溢出向R7进位。现在问题是我怎么把R6R7两个寄存器(R7非0)里的二进制数转换成十进制数个十百三位数?怎么把三位数分别存到三个寄存器里?解决后追加100.手机发贴只能悬赏20,一定追加高分。不胜感激!
R7计不满,不会出现溢出。昨晚忘写了。
没办法这次用的就是汇编。

如用C语言很好解决,不过用C语言不用定义R6R7了, 只要定义一个变量如:unsigned int i;
百位:i/100;
十位:i/10%10;
个位:i%10;
看样子楼主应该是用汇编,如是等到R6达到溢出时才进位的话,比较难做到,实际上你只是要个十百位,也就是说如你R7始终远远没有计满。试一下在R6满100就进位,也就是说R7上存放的数是100的倍数,问题就好解决了:
假如你要把个十百位分别放在R2R3R4中:
MOV A, R6
MOV B, #10
DIV AB
MOV R2, B
MOV R3, A
MOV R4, R7
这样就可以了

x=R7*256+R6;
bai=x%1000/100;
shi=x%100/10
ge=x%10;
C的很好编阿

3E7H=>999D
有51ASM子程序库