
单片机编程将累加器A中的二进制数变成BCD码,并将百、十、个位数分别写入内部RAM中的50H、51H、52H中。
3个回答
展开全部
这程序也写的太复杂了!既然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是个位数
展开全部
mov
b,#10
div
ab
mov
50h,a
mov
a,b
da
a
mov
52h,a
anl
52h,#0fh
swap
a
anl
a,#0fh
mov
51h,a
end
我只说说方法吧,先mov
R0,a;把原数暂存于R0中
and
a,#0fh;
mov
R1,a;低四位保存至R1
mov
a,R0;
and
a,#0f0h;
swap
a;交换高四位与低四位
此时再把a中的数乘以10再加上R1中保存的数就可以了。只说了大致思路,具体的自己写吧。
b,#10
div
ab
mov
50h,a
mov
a,b
da
a
mov
52h,a
anl
52h,#0fh
swap
a
anl
a,#0fh
mov
51h,a
end
我只说说方法吧,先mov
R0,a;把原数暂存于R0中
and
a,#0fh;
mov
R1,a;低四位保存至R1
mov
a,R0;
and
a,#0f0h;
swap
a;交换高四位与低四位
此时再把a中的数乘以10再加上R1中保存的数就可以了。只说了大致思路,具体的自己写吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
正确程序如下:
MOV
B,
#10
;设定除数.
DIV
AB
;相除后,B中是余数.
MOV
52H,
B
;余数即为个位数,存到52H
MOV
B,
#10
DIV
AB
MOV
51H,
B
MOV
50H,
A
SJMP
$
END
MOV
B,
#10
;设定除数.
DIV
AB
;相除后,B中是余数.
MOV
52H,
B
;余数即为个位数,存到52H
MOV
B,
#10
DIV
AB
MOV
51H,
B
MOV
50H,
A
SJMP
$
END
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询