初学小白求助
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit D1=P1^0;
sbit key1=P3^4;
sbit key2=P3^5;
uchar aa,bb;
void delay(uint z);
void init();
void main()
{
init();
while(1)
{
if(aa==bb)
{
aa=0;
D1=~D1;
}
if(key2==0)
{
delay(5);
if(key2==0)
{if(bb>1)
{bb=bb-1;}}
}
if(key1==0)
{
delay(5);
if(key1==0)
{
if(bb<10)
{bb=bb+1;}
}
}
}
}
void init()
{
aa=0;
bb=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
D1=0;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
现在改成这样了,加了2个while。不过按键要按的快才有效。按的慢了就会出错。麻烦大家帮忙改改
if(key2==0)
{
delay(5);
if(key2==0)
{
while(key2==0);
if(bb>1)
{bb=bb-1;}}
}
if(key1==0)
{
delay(5);
if(key1==0)
{
while(key1==0);
if(bb<10)
{bb=bb+1;}
}
}
}
}
可能是你的中断时间太短,把中断时间改长一点或者把延时时间减小点