DZKJXHxcz 发表于 2014-7-20 14:15:27

请教AVR的I/O设置问题

为什么我对单片机IO口直接写0,结果逻辑就有错误,1602没有办法正常显示,如果先写1再取反就可以了。例如PORTB&=~(1<<PB4)可以,但是PORTB&=(0<<PB4)就不可以了?

alias 发表于 2014-7-20 14:44:31

>> 但是PORTB&=(0<<PB4)就不可以了?

因(0<<PB4)=0, 所以PORTB = PORTB & 0,即全个 PORTB 致零。

但 ~(1<<PB4) = ~(00010000) = 11101111 ,PORTB&=~(1<<PB4) 即单独把 PB4 位清零,对 PORTB 其它位元无影响。

DZKJXHxcz 发表于 2014-7-20 15:11:58

alias 发表于 2014-7-20 14:44
>> 但是PORTB&=(0

不是按位与吗,你那样的话不是逻辑与吗?

DZKJXHxcz 发表于 2014-7-20 15:49:47

alias 发表于 2014-7-20 14:44
>> 但是PORTB&=(0

我想通了,谢谢啊
页: [1]
查看完整版本: 请教AVR的I/O设置问题