我给你来个试试
- /*******************************************************
- |一个按键两种功能,就是短按一下LED灯亮,
- |再按一下灭,长按2秒另一个LED亮,再按一下灭
- |
- *******************************************************/
- #include <reg52.h>
- #include <intrins.h>
- #define uint unsigned int //宏定义:unit=unsigned int
- #define uchar unsigned char
- sbit led1=P1^0;
- sbit led2=P1^1;
- sbit s=P3^5;
- uchar flag1,flag2;
- void delay(uint);
- void keyscan();
- void main()
- {
- while(1)
- {
- keyscan();
- }
- }
- void keyscan()
- {
- uint j;
- j=0;
- s=1;
- if(flag1==1||flag2==1)
- {
- if(!s)
- {
- delay(5);
- if(!s)
- {
- while(!s);
- flag1=0;
- flag2=0;
- led1=1;
- led2=1;
- }
- }
- }
- else
- {
- if(!s)
- {
- delay(5);
- if(!s)
- {
- while(s==0 && j<30000)
- {
- // delay(5);
- j++;
- }
-
- if (j>=30000)
- {
- flag2=1;
- led2=0;
- while(!s);
- }
- else
- {
- flag1=1;
- led1=0;
- }
-
-
- }
- }
- }
- }
- void delay(uint z)
- {
- //1ms延时
- uint i,j;
- for(i=z;i>0;i--)
- for(j=110;j>0;j--);
- }
复制代码 |