关于单片机编写程序 将A中的二进制数变换成3为BCD码 并将百,十,个位数分别防御内部RAM的50H 51H 52H中
对程序有点不理解希望达人能将程序给讲解下程序如下ORG0MOV52H,#0MOV51H,#0MOV50H,#0(以上是定位和单元清0这里懂些)MOVA,#0FDH(这里就...
对程序有点不理解 希望达人 能将程序给讲解下 程序如下
ORG 0
MOV 52H,#0
MOV 51H,#0
MOV 50H,#0(以上是定位 和单元清0 这里懂些)
MOV A,#0FDH(这里就不知道了 题目没给确切的二进制数 为什么 这里要将
A置为FDH呢)
LCALL DCDTH(跳转DCDTH是吧)
SJMP $
DCDTH:MOV R7,#8(定次数 8次)
MOV R0,A
LOOP: CLR C
MOV A,R0
RLC A
MOV R0,A
MOV R1,#51H
MOV A,@R1
ADDC A,@R1
DA A
MOV @R1,A
DEC R1
MOV A,@R1
ADDC A,@R1
DA A
MOV @R1,A
DJNZ R7,LOOP
INC R1
MOV A,#00H
XCHD A,@R1
MOV 52H,A
MOV A,@R1
SWAP A
MOV @R1,A
RET
END
以上是全部程序 打LOOP 越看越糊涂 望高人讲些 最好详细些 有加分 展开
ORG 0
MOV 52H,#0
MOV 51H,#0
MOV 50H,#0(以上是定位 和单元清0 这里懂些)
MOV A,#0FDH(这里就不知道了 题目没给确切的二进制数 为什么 这里要将
A置为FDH呢)
LCALL DCDTH(跳转DCDTH是吧)
SJMP $
DCDTH:MOV R7,#8(定次数 8次)
MOV R0,A
LOOP: CLR C
MOV A,R0
RLC A
MOV R0,A
MOV R1,#51H
MOV A,@R1
ADDC A,@R1
DA A
MOV @R1,A
DEC R1
MOV A,@R1
ADDC A,@R1
DA A
MOV @R1,A
DJNZ R7,LOOP
INC R1
MOV A,#00H
XCHD A,@R1
MOV 52H,A
MOV A,@R1
SWAP A
MOV @R1,A
RET
END
以上是全部程序 打LOOP 越看越糊涂 望高人讲些 最好详细些 有加分 展开
2个回答
展开全部
这程序也写的太复杂了!既然51单片机有DIV指令,并且只是把A中的数字转变为BCD,那就用DIV直接运算:
MOV A,#0FDH
MOV B,#100
DIV AB
MOV 50H,A
MOV A,B
MOB B,#10
DIV AB
MOV 51H,A
MOV 52H,B
计算完成,这样50H就是百位数,51H是十位数,52H是个位数
MOV A,#0FDH
MOV B,#100
DIV AB
MOV 50H,A
MOV A,B
MOB B,#10
DIV AB
MOV 51H,A
MOV 52H,B
计算完成,这样50H就是百位数,51H是十位数,52H是个位数
追问
要这么弄 是不是得加句 DA A将0FDH转换为10进制 然后再除100啊 而且 你那个MOV A,B是什么意思 将做完除法的得数4位给A??0FDH 253 除以100后 得2余53 那么AB中应该是 00000010 高四位就是0000 将A置零了?后面有点不通 麻烦解答下
追答
DIV指令执行后,商在A余数在B,这个你需要记住。
0xFD是十进制的253,在执行
MOV B,#100
DIV AB
之后,A=2,B=53,这样就A就是百位的数值了。将A保存,然后把余数53转移到A,再执行
MOV B,#10
DIV AB
这样A=5,B=3,是不是分别得到了十位数和个位数?
DA指令不是你想的那样把16进制转换为10进制的,DA是用来处理BCD码的!
展开全部
更多追问追答
追问
那么 0FDH 就是随便举得例子了?也就是说就11111101这个数转换成BCD码吧? 我看了下程序
经过8次循环 那么 进位CY=1的时候有7次 也就是说 最后51H 50H单元中存的数都是7啊 最后交换 A与51H单元内容的低4位的话 A中是00000111 也就是7 51H中是0 将7存入52H中 在把51H存入A 半字节交换的话 不还是0么 那么 50H 51H 52H中 相继就是 7 0 7 和0FDH 253不符啊?求解答
追答
你算错了,你没算这几句
MOV A,@R1
ADDC A,@R1
DA A
这个运算的实质就是:将十六进制的每一个位提取出来,将这个位转换成十进制,然后再和下一个位相加,原理就是这样的,其实1个字节的HEX转换BCD还有更简单的方法,就是依次除以100,除以10
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询