谁有51单片机两个寄存器减法的程序?

[复制链接]
2956|7
 楼主| xawanggang78 发表于 2010-11-10 08:47 | 显示全部楼层 |阅读模式
我正在学单片机,遇到一个问题,不会解决,请大侠帮个忙
     3200的数,每次减1,到零后再从3200开始递减如此循环,我只会单个寄存器的减法,请大侠指教,非常感谢!!感谢!
wh6ic 发表于 2010-11-10 09:00 | 显示全部楼层
分两个字节,先判断低字节是否为0,然后低字节减一,低不为0时一次减法过程结束,若低字节为0,判断高是否为0,若高也为0,将高低字节置为3200,否则高字节也减一,一次减法过程结束;重复以上过程。
 楼主| xawanggang78 发表于 2010-11-10 09:07 | 显示全部楼层
两个字节分别存放的是十进字数还是十六进字数?
wh6ic 发表于 2010-11-10 09:11 | 显示全部楼层
本帖最后由 wh6ic 于 2010-11-10 11:57 编辑

dec0:  mov  r6, #1 + high 3200
           mov  r7, #low 3200
dlp1:   djnz  r7, dlp2
           djnz  r6, dlp2
           sjmp dec0
dlp2:   ...
           ...
           ljmp dec0

51下有个变通的办法,设初值为-3200到DPTR,DPTR支持加一操作。
dec1:  mov  dptr, #-3200
dlp0:   inc    dptr
           mov  a, dpl
           orl    a, dph
           jnz   dlp0
           ...
           ...
           ljmp  dec1
 楼主| xawanggang78 发表于 2010-11-10 09:11 | 显示全部楼层
能编写具体的程序代码吗?谢谢!!!
 楼主| xawanggang78 发表于 2010-11-10 09:17 | 显示全部楼层
wh6ic兄!把程序写完整吗!谢谢!
 楼主| xawanggang78 发表于 2010-11-10 12:22 | 显示全部楼层
还有把3200用数码管显示出来,谢谢大侠!!
 楼主| xawanggang78 发表于 2010-11-12 08:47 | 显示全部楼层
在wh6ic兄的提示下,我已经把这搞定了,非常谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

19

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部
0