以下是我写的程序, 有个很大的漏洞,num,会无限地++或--,且按下灯也会一直在++或--,现在我想改一改,让led+到8就不加了且蜂鸣器响两下表示加到尽头了,同样让led减到1就不往下减且蜂鸣器响一下表示减完了,,我想了很久,请问这要怎么写呢?各位高手给点思路。。。谢谢,谢谢!
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit s2=P3^0;
sbit s3=P3^1;
void delay(uint x) //延时子函数
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void main() //主函数
{
uchar num;
while(1)
{
if(s2==0)
{
delay(2);
if(s2==0)
{
num++;
while(!s2);
}
} //按键s2
if(s3==0)
{
delay(2);
if(s3==0)
{
num--;
while(!s3);
}
} //按键s3
switch(num) //case按下选择8个led灯,
{
case 1 :P1=0xfe;break;
case 2 :P1=0xfd;break;
case 3 :P1=0xfb;break;
case 4 :P1=0xf7;break;
case 5 :P1=0xef;break;
case 6 :P1=0xdf;break;
case 7 :P1=0xbf;break;
case 8 :P1=0x7f;break;
}
}
} |