Arduino 代码分析:PA1 常亮,PA2 闪烁
Arduino 代码分析:PA1 常亮,PA2 闪烁
代码如下:
PORTA &= 0xF9;
while (1) {
if (PINA & 0x01) {
PORTA |= (1 << PA1);
} else {
PORTA |= (1 << PA2);
delay_ms(1000);
PORTA &= ~(1 << PA2);
delay_ms(1000);
}
}
条件:
- PA0 未连接电源,PA1, PA2 连接 LED 灯后连接电源
最终状态:
- PA1 灯亮,PA2 灯闪烁
分析:
PORTA &= 0xF9;: 将PORTA的值与0xF9进行按位与操作,将PA0和PA3的值清零,保留PA1、PA2和PA4~PA7的值。while (1) { ... }: 进入循环,不断执行下面的代码。if (PINA & 0x01) { ... } else { ... }: 判断PINA的值最低位(PA0)是否为 1,如果是,则执行第 4 步;否则执行第 5 步。PORTA |= (1 << PA1);: 将PORTA的值第 2 位(PA1)置 1,点亮PA1上的 LED 灯。PORTA |= (1 << PA2); delay_ms(1000); PORTA &= ~(1 << PA2); delay_ms(1000);: 将PORTA的值第 3 位(PA2)置 1,点亮PA2上的 LED 灯,延时 1 秒;然后将PORTA的值第 3 位(PA2)取反,熄灭PA2上的 LED 灯,再延时 1 秒。- 循环执行: 由于
PA0未连接电源,其值始终为 0,因此不会执行第 4 步,只会一直执行第 5 步,导致PA2上的 LED 灯不断闪烁,而PA1上的 LED 灯一直保持亮着的状态。
总结:
这段代码利用 PA0 的低电平状态来控制 PA2 灯的闪烁,并利用 PA1 连接的 LED 灯作为指示灯。
原文地址: https://www.cveoy.top/t/topic/jpzY 著作权归作者所有。请勿转载和采集!