高难度问题:51系列单片机限定指令周期完成6个寄存器循环移位

DISINHUI 2010-07-16 02:11:45
问题如下:实现连续6个寄存器依次带借位循环右移,限定11指令周期内完成。
1. 如果是PIC HT的单片机,就很简单:
RRC REG0
RRC REG1
RRC REG2
RRC REG3
RRC REG4
RRC REG5
2. 51单片机必须在 A内进行
mov A,REG0
rrc A
mov REG0,A
18个指令周期,就不可以了。超过11指令周期了。
...全文
138 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dreamjack 2010-07-17
  • 打赏
  • 举报
回复
结果在REG1~REG5和A 中
dreamjack 2010-07-17
  • 打赏
  • 举报
回复
MOV A,REG0
RRC A
XCH A,REG1
RRC A
XCH A,REG2
RRC A
XCH A,REG3
RRC A
XCH A,REG4
RRC A
XCH A,REG5
RRC A
DISINHUI 2010-07-17
  • 打赏
  • 举报
回复
其实想到并且实现了上述想法,在此想表达51在实时性软解码上有缺陷。
实现方式是空间换时间。使用可以位寻址区域:20H~2FH.
使用 setb xxH or clr xxH.
jmp @A+DPTR

这样代码量非常大,清零一组代码,置位一组代码。足有上百行。
ziye19860507 2010-07-17
  • 打赏
  • 举报
回复
等待高人出现!
Great_Bug 2010-07-16
  • 打赏
  • 举报
回复
用XCH或者可以减少指令,不过仍不可能在11周期内完成

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧