求助高人,单片机实验。将05的二进制数转换为BCD码。 写出详细过程,谢谢

作者&投稿:宇宋 (若有异议请与网页底部的电邮联系)
将给定的一个二进制数转换成BCD码的单片机程序及其实验结果~

BINBCD: MOV B, #100 (100作为除数送入B中)
DIV AB (十六进制数除以100)
MOV R3, A (百位数送r3,余数放入B中)
MOV A, #10 (分离十位数与个位数)
XCH A,B (余数放入A中,除数放入B中)
DIV AB (分离出十位在A中,个位在B中)
SWAP A (十位数交换到A的高4位)
ADD A,B (十位数与个位数相加送入 A中)
END

将A中的二进制数(比如C9H)转换为BCD码为201H,其中百位存在R3中(R3=02H),十位个位压缩方式存在A中(A=01H)

因不太清楚这是哪个单片机和它所对应的具体汇编语法,但是基本的思路是:
提取出a中这个三位数,具体方法:用取余的方法,即把a中的数先除以#100得到百位上的系数(也即百位所对的BCD码),然后存到以Result为地址的三个存储单元中的一个。再把a中的数先除以#10得到十位上的系数和余数(也分别为十位和个位所对的BCD码),然后分别存到以Result为地址的三个存储单元中的另外两个单元。

什么叫做“05的二进制数转换为BCD码”???把十六进制的05H转为BCD? 太简单了吧。
看过来:
设R1单元存放一个十六进制数,把它转成BCD,转换后的结果存放在R2,R3,则:

MOV A, R1 ;取被除数
MOV B #64H ;除以100
DIV AB
MOV R2, A ;商的百位存入R2单元
MOV A B ;取余数
MOV B, #0AH ;除以10
DIV AB
SWAP A ;高低半字节对调
MOV R3, A ;暂存到R3单元
MOV A, B ;取余数(个位结果)
ORL A, R3 ;异或运算,十位和个位的两个BCD合并到一个字节里
MOV R3, A ;保存到R3单元
END
得到的结果是R2低半字节和R3的高、低半字节各是一个4bit的BCD码。而源数R1可以是0-255之间的数。呵呵,很简单吧,汇编就是好用,SB才用C!

x%10, 就是除以10求余。例如0xff=255 255%10=25.。。5 25%10=2.。。。5
不就得到 2 , 5,5了就是BCD玛


振安区17299984907: 51单片机中如何将2字节16位数转换为BCD码,汇编程序最好 -
藩品赛斯: (17) 标号: HB2功能:双字节十六进制整数转换成双字节BCD码整数入口条件:待转换的双字节十六进制整数在R6、R7中. 出口信息:转换后的三字节BCD码整数在R3、R4、R5中. 影响资源:PSW、A、R2~R7 堆栈需求: 2字节HB2: ...

振安区17299984907: byte b= - 5>>1 结果为 - 3 哪位高人能告诉我是怎么来的吗 -
藩品赛斯: -5==0xFB==1111 1011-3==0xFD==1111 1101 由于>>是有符号右移,而-5的符号位为1,所以1111 1011右移一位变成1111 1101了

振安区17299984907: 求助:采用STC2051单片机测量脉冲宽度~~ -
藩品赛斯: 提供个思路给你 计数器 模式将脉冲接入定时器0的GATE 和中断0 将脉冲反向接入定时器1的GATE和中断1让后在中断0里面读取 定时器1的计数器 并清零 让后在中断1里面读取 定时器0的计数器 并清零 这样定时器1的记数就是 正脉宽定时器0的记数就是负 正脉宽

振安区17299984907: 关于单片机16位数求补的程序问题 请教高人!!! -
藩品赛斯: 16 位数,假设是:XXXX XXXX YYYY YYYY;都取反后,假设:AAAA AAAA BBBB BBBB;加一,就是加上:0000 0000 0000 0001.那么,就是:低八位,不带进位加一;高八位,带进位加零.

振安区17299984907: 51单片机读到的2进制数怎么转化为十进制发送到串口(求高人,在线等) -
藩品赛斯: 高八位(DATA_H) * 256 + 第八位(DATA_L) ----> 整型变量;把这个整型变量,分解成五个 char 变量:1、1、4、9、9.再分别加上 0x30,发送,即可.

振安区17299984907: 跪求高人指点!!单片机十进制运算 -
藩品赛斯: 单片机有BCD码调整指令DA A.如R2=23,R1=45,R1+R2=68. mov a,r1 add a,r2 da a 此时A=68

振安区17299984907: 关于红外计数器的问题请教高人关于红外计数器与单片机的连接问题,怎
藩品赛斯: 你去下面的网址,上有红外计数器与单片机的连接. 介绍的计数器可对任何形状的物体进行有效计数.考虑到物体通过时切断光束的次数会超过1次,如从一旁看汽车或列...

振安区17299984907: 在单片机C语言中如何对变量的某一位进行操作或赋值. -
藩品赛斯: 在C语言中,一般有两种方法来操作位,一种是使用C语言提供的位运算操作符,一种是使用位域. 1、使用位域 在C语言中定义位域的一般格式如下: struct 位域结构名 { 位域列表 };struct:在C语言中定义位域所使用的关键字是struct.位域...

振安区17299984907: 急需一个程序,关于stc12c5608ad,单片机的程序,实现的功能是进行光敏检测,请高人指教 -
藩品赛斯: ORG 0000H LJMP MAIN ORG 0300H MAIN : MOV A , P1 JNB Acc.7,man1 MOV P2,#44H sJMP main main1: MOV P2,#0DEH sJMP main

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网