实现了按下独立按键,LED灯亮,松开独立按键,LED灯灭的功能
#include <8051.h>
void delayms(unsigned char t){
unsigned char i,j;
i=900;
j=t;
do{
j=t;
while (j--)
{
/* code */
}
}while(i--);
}
void main(){
// P2_0=1;
while (1)
{
if(P3_0==0){
delayms(20);
while (P3_0==0);
delayms(20);
// P2_0=(~P2_0);
// P2_0=0;
if(P2_0==0){
P2_0=1;
}else{
P2_0=0;
}
}
}
}
问题
我使用取反运算修改P2_0寄存器的值,修改完不能正常控制LED,所以使用了if条件语句进行判断。
解释
这里使用delayms(20)是因为独立按键按下和松开之后存在机械抖动,所以延时一段时间,排除机械抖动的影响。