'
出错是因为 bit() 没有被定义
另外,取反也相当简单,可以用
portb ^= (1<<pb2);
'
搞明白了,加上#include <macros.h>就可以用bit()这个函数了。
还有按位(异或)这个运算符用在取反,还真是它妈的巧妙。
和1异或才有取反的意思。假设本来为1,和1异或后为0
苯来为0,和1异或后为1(相同为0,相异为1)刚好取反。
和0异或就等于没有改变。假设本来为1,和0异或后为1,
假设本来为0,和0异或后为0。(显然异或后没有改变)。
因此portb^=(1<<pb2)等同于portb=portb^0b00000100因此仅仅pb2位取反其他位不变化。
portb^=bit(pb2)其实也是一样的。