Arduino 代码分析:PD0、PD1、PD2 输出状态详解
Arduino 代码分析:PD0、PD1、PD2 输出状态详解
代码如下:
DDRD=0x07;
int val=0;
PORTD |=0x06;
while(1){
PORTD &=~(1<<val);
if(PIND&0x01)
{
val+=1;
if(val>2)
{
val=2;
}
}
else{
val=1;
}
}
PD0 接通电源
最终的 PD0、PD1、PD2 分别等于 1 还是 0?并解释每一步骤内容:
最终结果:
- PD0 为 0
- PD1 为 1
- PD2 为 1
解释每一步骤如下:
-
DDRD=0x07;设置端口 D 的数据方向寄存器为 0x07,即 PD0、PD1、PD2 均为输出。 -
int val=0;定义一个整形变量 val,并初始化为 0。 -
PORTD |=0x06;将 PD1 和 PD2 输出置为高电平,PD0 输出保持不变。 -
while(1){...}进入无限循环。 -
PORTD &=~(1<<val);将 val 所代表的 PD 引脚输出置为低电平。 -
if(PIND&0x01){...}判断 PD0 输入是否为高电平,如果是则执行 if 语句块。 -
{val+=1; if(val>2){val=2;}}val 加 1,并判断是否大于 2,若大于则将 val 赋值为 2。 -
else{val=1;}如果 PD0 输入为低电平,则将 val 赋值为 1。
经过上述操作后,val 的值可能为 1 或 2,根据 val 的值不同,PD1 和 PD2 输出会交替地变为高电平和低电平,而 PD0 一直保持为低电平。因此最终结果为 PD0 为 0,PD1 为 1,PD2 为 1。
原文地址: https://www.cveoy.top/t/topic/olXf 著作权归作者所有。请勿转载和采集!