打印

可不可以对51单片机的某一I/O口的数据做移位操作

[复制链接]
3143|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vonseng|  楼主 | 2011-3-19 20:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
liulei20101008| | 2011-3-20 10:37 | 只看该作者
应该可以额外定义一个字节的变量,利用它来实现,类似于读修改写的方法。个人愚见,楼主可以再看看

使用特权

评论回复
板凳
rclong| | 2011-3-20 16:26 | 只看该作者
应该不行呢 51单片机是8位的 数据寄存器就是8位的 移位指令是对它操作的 当然一次动8位

使用特权

评论回复
地板
chunyang| | 2011-3-20 17:56 | 只看该作者
不可以,需要通过多条指令并借助寄存器才能实现。

使用特权

评论回复
5
bh7kve| | 2011-3-20 20:03 | 只看该作者
间接可以,直接不行。

使用特权

评论回复
6
coody| | 2011-3-21 01:00 | 只看该作者
当然可以

使用特权

评论回复
7
ayb_ice| | 2011-3-21 09:28 | 只看该作者
简单算法

使用特权

评论回复
8
joyme| | 2011-3-21 09:39 | 只看该作者
肯定不能一步实现,需要一个中间变量:
temp = P0&0x0f;
P0 = (P0&0xf0) | (temp>>x);

使用特权

评论回复
9
cxdy_lee| | 2011-3-21 10:14 | 只看该作者
楼上的只是考虑了右移的情况吧,要是左移呢?

使用特权

评论回复
10
joyme| | 2011-3-21 10:23 | 只看该作者
左移再加个与语句呀,自己也得动一下脑子哦

P0 = (P0&0xf0) |((temp<<x)&0x0f)

使用特权

评论回复
11
ljm810010| | 2011-3-21 11:48 | 只看该作者
P0 = (P0&0xf0) |((P0<<x)&0x0f)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

1

帖子

1

粉丝