实现了按下独立按键,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)是因为独立按键按下和松开之后存在机械抖动,所以延时一段时间,排除机械抖动的影响。