看看這個
程序不一定正確,
程序不一定正確,
程序不一定正確,
只是提供一個思路,
每按一次key1,主程序里led1_flash_ctr取反一次,led1_flash_ctr控制led1是否閃爍
#include <STC15W.h>
#define ulong unsigned long
#define uchar unsigned char
#define uint unsigned int
sbit LED1 =P3^7;
sbit LED2 =P3^6;
sbit LED3 =P3^3;
sbit BUZZ =P3^2;
sbit KEY1 =P1^1;
sbit KEY2 =P1^2;
sbit KEY3 =P1^3;
sbit KEY4 =P1^4;
char KEY1_T,KEY2_T,KEY3_T;
void delay( unsigned int t)
{
unsigned char i,j;
for(i=t;i>0;i--)
for(j=250;j>0;j--);
}
void led1ss(char SW1)
{
if(SW1=1)
{ LED1=1;delay(1500);LED1=0;delay(1500);}
else
LED1=1;
}
char key1_pressed;
char key2_pressed;
char key3_pressed;
char key4_pressed;
char led1_flash_ctr;
void key_scan()
{
if(KEY1==0)
{
delay(10);
if(KEY1==0)
{
key1_pressed=1;
while(!KEY2); //檢測按鍵彈起
}
}
if(KEY2==0)
{
delay(10);
if (KEY2==0)
{
key2_pressed=1;
while(!KEY2);
}
}
if(KEY3==0)
{
delay(10);
if(KEY3==0)
{
key3_pressed=1;
while(!KEY3);
}
}
if(KEY4==0)
{
delay(10);
if(KEY4==0)
{
key4_pressed=1;
while(!KEY4);
}
}
}
void main()
{
LED1=0;
LED2=0;
LED3=0;
BUZZ=0;
while(1)
{
key_scan();
if(key1_pressed)
{
key1_pressed=0;
led1_flash_ctr=!led1_flash_ctr;
}
if(key2_pressed)
{
key2_pressed=0;
//按下key2的操作
}
led1ss(led1_flash_ctr);
}
} |