极简资讯网站开发,电子商务网站建设需要的语言,怎么线上卖东西,私密浏览器免费版在线看视频[3-1] 独立按键控制LED亮灭_哔哩哔哩_bilibili 按下的时候连接#xff0c;松开的时候断开。
一头接GND#xff08;电源负极#xff09;#xff0c;另一头接I/O口。 单片机上电时#xff0c;所有I/O口为高电平。
按键没有按下#xff0c;I/O口为高电平。
按键按下…[3-1] 独立按键控制LED亮灭_哔哩哔哩_bilibili 按下的时候连接松开的时候断开。
一头接GND电源负极另一头接I/O口。 单片机上电时所有I/O口为高电平。
按键没有按下I/O口为高电平。
按键按下I/O口为低电平。
寄存器会检测I/O口的值读入寄存器中。
直接读寄存器值应该为1.
按键按下寄存器值应该为0.
(1)
直接对位进行操作
#include REGX52.H
#include INTRINS.Hvoid main()
{P2_00;while(1){}
}
(2)
按下K1,LED1亮松开LED1灭。
#include REGX52.H
#include INTRINS.Hvoid main()
{while(1){if(P3_10){P2_00;}else{P2_01;}}
} (3)
按键按下灯亮再按下灯灭
#include REGX52.H
#include INTRINS.Hvoid Delay1ms() //11.0592MHz
{unsigned char i, j;_nop_();i 2;j 199;do{while (--j);} while (--i);
}
void Delay_time(int x)//ms
{int i;for(i0;ix;i){Delay1ms();}
}
void main()
{P2_00;//点亮LED1while(1){if(P3_10){Delay_time(20);//消抖//按键按下while(P3_10){}Delay_time(20);//消抖P2_0~P2_0;}}
}
(4)
LED1亮按下按钮LED2亮再按LED8亮然后LED1亮。 都不亮1111 1111 LED1亮1111 1110 LED2亮1111 1101 LED3亮1111 1011 LED8亮0111 1111 #include REGX52.H
#include INTRINS.Hvoid Delay1ms() //11.0592MHz
{unsigned char i, j;_nop_();i 2;j 199;do{while (--j);} while (--i);
}
void Delay_time(int x)//ms
{int i;for(i0;ix;i){Delay1ms();}
}
void main()
{P20xFE;while(1){if(P3_10){Delay_time(20);while(P3_10){}Delay_time(20);P21;P2P2|0x01;if(P20xFF)P20xFE;}}
}
(5)
LED1亮按下按钮LED8亮按下按钮LED7亮再按LED1亮然后LED8亮。 都不亮1111 1111 LED1亮1111 1110 LED8亮0111 1111 LED7亮1011 1111 LED3亮1111 1011 LED2亮1111 1101 LED1---LED8---LED7---LED6---LED1逆循环
#include REGX52.H
#include INTRINS.Hvoid Delay1ms() //11.0592MHz
{unsigned char i, j;_nop_();i 2;j 199;do{while (--j);} while (--i);
}
void Delay_time(int x)//ms
{int i;for(i0;ix;i){Delay1ms();}
}
void main()
{P20xFE;while(1){if(P3_00){Delay_time(20);while(P3_00){}Delay_time(20);P21;P2P2|0x80;if(P20xFF)P20x7F;}}
}
(6)
按下K1LED1---LED2---LED8---LED1
按下K2,LED1---LED8---LED7---LED1
#include REGX52.H
#include INTRINS.Hvoid Delay1ms() //11.0592MHz
{unsigned char i, j;_nop_();i 2;j 199;do{while (--j);} while (--i);
}
void Delay_time(int x)//ms
{int i;for(i0;ix;i){Delay1ms();}
}
void main()
{P20xFE;while(1){if(P3_10){Delay_time(20);while(P3_10){}Delay_time(20);P21;P2P2|0x01;if(P20xFF)P20xFE;}if(P3_00){Delay_time(20);while(P3_00){}Delay_time(20);P21;P2P2|0x80;if(P20xFF)P20x7F;}}
}
(7)
使用LED8---LED18个灯表示数a的二进制形式。
开始时a0
按下按钮a
a255时按下按钮a0。
观察8个灯的变化 0000 0000 0000 0001 0000 0010 0000 0011 ...... 1111 1111 0000 0000 #include REGX52.H
#include INTRINS.Hvoid Delay1ms() //11.0592MHz
{unsigned char i, j;_nop_();i 2;j 199;do{while (--j);} while (--i);
}
void Delay_time(int x)//ms
{int i;for(i0;ix;i){Delay1ms();}
}
void main()
{unsigned char a0x00;while(1){if(P3_10){Delay_time(20);while(P3_10){}Delay_time(20);aa1;P2~a;if(a256)a0x00;}}
}