
第一段代码注解:先定义了两个布尔变量,再将2、8、13三个引脚分别初始化为上拉输入、上拉输入、输出模式。尔后的循环函数中,监测2、8两个引脚的状态并将其分别赋予前面定义的两个布尔变量。判断语句中,当两个变量都不为零时,设定13号引脚为高电平,点亮LED。其他情况均将13号引脚设定为低电平,熄灭LED。此处运用了一个逻辑运算符与(&&),当两个变量都不为零时,返回结果为真,否则为假。关于逻辑运算符作用见下图
逻辑运算符:

第二段代码

第二段代码注解:先定义了一个布尔变量,再将2、13号引脚分别初始化为上拉输出(???感觉应该是代码打错了,此处应为上拉输入)和输出模式。循环函数中,监测2号引脚的状态并赋予前面定义的布尔变量。在循环函数中,当布尔变量为零时,将2号引脚设置为高电平,点亮LED;反之则将2号引脚设定为低电平,熄灭LED。此处使用了另一个逻辑运算符非(!),作用是反转逻辑,可以粗略理解为反着来、说反话。详细的可见上图。
第三段代码:

第三段代码注解:先打开串口通讯,设定波特率为9600.再将2、13号引脚分别初始化为上拉输入和输出模式。循环函数中,先定义了一个整型变量,监测2号引脚的状态并将其赋予整型变量,尔后读取变量的状态,若为HIGH,则将13号引脚设置为低电平,熄灭LED,反之则设置为高电平,点亮LED。
三段代码的差别:
1.同:都是通过判断开关状态来确定引脚的电平状态,来达到点亮或者熄灭LED的目的。
2.异:第一段代码中使用的是与的判定逻辑,通过两个开关的状态来控制LED的亮灭。
第二段代码则是运用到了一个非的判定逻辑,将逻辑判定反转,使其变成按下开关时点亮LED反之熄灭。
第三段没有用到逻辑运算符,而是利用一个算术运算符(==)来达到目的。要注意的是,此处的==不能与赋值符号=的功能弄反了,=是给变量赋值时使用,而==则是给二者对比时使用的
27万+





