ATmega 2560控制LED亮灭:开关控制双灯亮起条件
假设DDRC已经被初始化,将+V连接LED0,LED1的头以及开关的头;尾分别连接向ATmega 2560 的PD2,PD1,PD0。ATmega 2560接地,执行如下代码:
int val=0;
PORTD|=0x06;
while(1)
{
PORTD&=~(1<<val);
if(PIND&0x01)
{
val +=1;
if(val>2)
{
val=2;
}
}
else
{
val=1;
}
}
开关什么情况下,两个灯都亮?
当开关没有按下时,两个灯都亮。这是因为在初始状态下,val的值为0,所以PORTD&=~(1<<val)会将PD0、PD1、PD2的电平都设置为低电平,也就是使LED0和LED1都亮。当开关按下时,val的值会递增,但在val等于2时就不会再递增了,所以此时也会出现两个灯都亮的情况。
原文地址: https://www.cveoy.top/t/topic/ojU2 著作权归作者所有。请勿转载和采集!