请解释下这几个C语句谢谢
if ((PINA&(1<<PA2))==0)//语句1{
PORTB=~BIT(3); //语句2
}
PORTB &=~BIT(4); //语句3
这三条语句所描述的意思是?
portA是按键
portB是LED。 第一句是,读回PA2上引脚的电平,为0
第二句那个BIT(3)取反,,,不过我觉得这句好像不什么对哦,
第后一名是BIT(4)输出0 if ((PINA&(1<<PA2))==0) 这条相当于 if ((PINA&0x04) == 0), (1<<PA2)=0x04(假设PA2的宏定义为2)
PORTB=~BIT(3); 这条BIT()估计是个宏,BIT(3)=1<<3, 即PORTB = ~0x08;
PORTB &=~BIT(4); 类似 PORTB= PORTB& 0x10; BIT(4) = 0x10;
楼主多看看C语言的书吧! if ((PINA&(1<<PA2))==0)//PINA脚和PA2左移一位后做位与运算,如果条件为假,则运行括号内的语句。
PORTB=~BIT(3); //PORTB等于BIT(3)函数运行结果取反
PORTB &=~BIT(4); //PORTB和BIT(4)运行取反结果做位与运算。
不知道你能不能看明白 tanguicaicai 发表于 2012-9-5 09:23 static/image/common/back.gif
第一句是,读回PA2上引脚的电平,为0
第二句那个BIT(3)取反,,,不过我觉得这句好像不什么对哦,
第后一 ...
首先。。。多谢!
语句2 就是这样 例程上的
语句三如果输出为1呢
portB &= Bit(4)
这样写对吗? 为何要有这么复杂的表述呢
其实这个功能的实现可以哦你个很简单的语句就能写出来 bootgames 发表于 2012-9-5 09:29 static/image/common/back.gif
首先。。。多谢!
语句2 就是这样 例程上的
也就是你要取反是不,
好像PORBA^=(1<<3);这就可以吧。不什么用,不记得多少了
你试验一下 if ((PINA&(1<<PA2))==0)//语句1
在AVR自有的头文件里已经定义了#define PA22
这样增加了可读性,即看PA2引脚是否为0
页:
[1]