打印
[AVR单片机]

请问PORTA.0=byte&1<<i的意思我理解的对吗?

[复制链接]
3910|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
clleady|  楼主 | 2010-4-12 22:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
unsigned char byte;
unsigned char i;
for(i=0;i<7;i++)
{
PORTA.0=byte&1<<i;
}
以上是CVAVR的语言
PORTA.0应该是一个管脚。一个管脚一个个只能输出1个高或低电平。
而byte是char,就是指8个位。如11111010.
请问当i=0时 byte&1<<i等于多少?是否为11111010&1,即0
    当i=1时 byte&1<<i等于多少?是否为11111010&00000010,即00000010
但是PORTA.0怎么可以赋值为8个位呢?应该只能赋值为0或1吧?

相关帖子

沙发
麻辣鸭脖子| | 2010-4-13 21:59 | 只看该作者
PORTA 0好像还可以做A/D

使用特权

评论回复
板凳
yidou| | 2010-4-13 22:22 | 只看该作者
&,<<谁的优先级高知道了不就行了!

使用特权

评论回复
地板
lpydidi| | 2010-4-14 23:19 | 只看该作者
应该是按这样编译的(byte&1)<<i

使用特权

评论回复
5
泰山特曲123| | 2010-4-15 12:19 | 只看该作者
从标准C来说,是按byte&(1<<i)这样编译了,不过为了避免优先级记错,建议在不确定的地方用括号。

使用特权

评论回复
6
lpydidi| | 2010-4-15 16:11 | 只看该作者
5# 泰山特曲123
和我记得的相反?

使用特权

评论回复
7
lpydidi| | 2010-4-15 16:16 | 只看该作者
是我记错了啊

使用特权

评论回复
8
mcuisp| | 2010-4-16 02:59 | 只看该作者
写这种代码的,拖出去砍了.

使用特权

评论回复
9
zhiyonghe| | 2010-4-16 08:33 | 只看该作者
从标准C来说,是按byte&(1
泰山特曲123 发表于 2010-4-15 12:19


标准C 应该是(byte&1)<<i;
& 优先级高于 <<

使用特权

评论回复
10
ddtx| | 2010-4-16 16:21 | 只看该作者
我感觉9楼是对的,移位优先肯定比位操作要低的

使用特权

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

本版积分规则

个人签名:活到老学到老

219

主题

477

帖子

1

粉丝