设置2个标志位记录霍尔和按键的状态。
- #include<reg51.h>
- sbit k1=P2^0;
- sbit button=P1^0;
- sbit sound=P1^7;
- bit flag1,flag2;
- void delay(int i)
- {
- while(i--);
- }
- void main()
- {
- while(1)
- {
- if(button==0)
- {
- flag1=1;
- }
- else
- {
- flag1=0;
- flag2=0;
- }
- if(!k1)
- {
- delay(20);//消抖
- if(!k1)
- {
- flag2=1;
- }
- }
- if(flag1==1&&flag2==0)
- {
- sound=~sound;//2.5KHz
- delay(20);
- }
- else sound=1;
- }
- }
复制代码 |