誠心向師傅請教幾個問題:程序實現的功能是按鍵按一下led樣式切換一個,功能是實現了但是有幾個問題
如下:
1按鍵按下的時候切換時響應速度延時較大大概為一秒鐘切換不知道知道這是怎么回事?
2按鍵一直按下的時候如果不加按鍵松開檢測計數值k會一直 +1 導致led變化變成流水作業一直循環如果要加按鍵松開檢測的話要加在哪里呢?
以下為實驗程序歡迎各位師傅來賜教。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define YSHUSL 4
void delay(uint);
uchar a,b,c,d,e,f,g,k,i;
//*********************************************************************
sbit ANJXZ4=P3^3;
//*************************《按鍵函數》********************************
void key()
{
if(ANJXZ4==0)
{
delay(2);
if(ANJXZ4==0)
{
k++;
if(k>YSHUSL)
k=1;
}
}
}
//*******************************************************************************//
void main(void)
{
i=1;
k=1;
a=0x3f;//
b=0xfc;//
c=0x3c;//
d=0xe7;//
g=0xff;//
while(i)
{
switch(k)
{
case(1):
P2=a;
delay(500);
P2=g;
delay(500);
key();
if(ANJXZ4==0)break;
break;
//****************************************************************************//
case(2):
P2=b;
delay(500);
P2=0xff;
delay(500);
key();
if(ANJXZ4==0)break;
break;
//***************************************************************************//
case(3):
P2=c;
delay(500);
P2=0xff;
delay(500);
key();
if(ANJXZ4==0)break;
break;
//*******************************************************************************//
case(4):
P2=d;
delay(500);
P2=0xff;
delay(500);
key();
if(ANJXZ4==0)break;
break;
//***************************************************************************//
}
}
}
//********************************************************************//
//**************************《延時子程序》*********************************//
void delay(uint xms)
{
uint k,p;
for(k=xms;k>0;k--)
for(p=114;p>0;p--);
}
//********************************************************************//
|