要求:编写一段程序,把计数器中T0中计的数(TH0和TL0)转成8421BCD码。
并且高8位给P1口,低8位给P0口,要是转成BCD码超过16位,则给P2.0高电平。
我是做单片机课设的,这段程序实在编不明白了,向各位大侠请教了!无比感谢中!
答对有额外加分啊!!!!
悬赏分:200 - 解决时间:2010-1-3 13:03
最佳答案:
――――――――――――――――――――――――――
程序如下:
MOV R0, TL0
MOV R1, TH0
CLR A
MOV R2, A ;先清零
MOV R3, A
MOV R4, A
MOV R5, #16 ;共转换16位数
LOOP:
CLR C
MOV A, R0 ;从待转换数的高端移出一位到Cy
RLC A
MOV R0, A
MOV A, R1
RLC A
MOV R1, A
MOV A, R4 ;送到BCD码的低端
ADDC A, R4 ;带进位加。自身相加,相当于左移一位
DA A ;十进制调整,变成BCD码
MOV R4, A
MOV A, R3
ADDC A, R3
DA A
MOV R3, A
MOV A, R2
ADDC A, R2
MOV R2, A
DJNZ R5, LOOP ;循环16遍, 转换即完成
;
MOV P0, R4 ;按照要求输出
MOV P1, R3
CLR P2.0
MOV A, R2
JZ P20_L
SETB P2.0
P20_L:
RET
;完
――――――――――――――――――――――――――
回答者: 做而论道 - 十一级 2009-12-14 08:52
提问者对于答案的评价:谢谢啊
原题网址:http://zhidao.baidu.com/question/129295511.html?fr=im2
.
更多的位数,也可以仿照本方法处理。
下面这个链接,其中有一段程序,是做而论道用80x86汇编语言编写的,可将48位二进制数,转换成为32位十进制数,该程序也经过了实践的检验。
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/ba5d41b6733c0dff30add1ef.html