改成这样试试
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint z);
sbit k0=P3^2;
sbit spk=P0^0;
uchar a=0;
bit b=0;
void int0() interrupt 0
{
if(k0==0)
{
a++;
if(a>=3)
{
a=0;
b=1;
}
}
}
void timer0() interrupt 1
{
spk=!spk;
// TH0=0xFC;
// TL0=0x18;
}
void delay(uint z)
{
uint x,y;
// for(x=z;z>0;x--)
for(x=z;x>0;x--)
for(y=245;y>0;y--);
}
void main()
{
TMOD= 0x02; //设置定时器模式2,8位自动重载
TL0 = 0x06; //设置定时初值,250us
TH0 = 0x06; //设置定时重载值
EA=1;
EX0=1;
IT0=1;
ET0=1;
PT0=1;
PX0=0;
// TH0=0xFC;
// TL0=0x18;
/* if(a>2) //就是这里,keil里调试发现a>2的时候还是无法进入定时。
{
TR0=1;
delay(50000);
delay(50000);
delay(50000);
delay(50000);
TR0=0;
}
else TR0=0;*/
while(1)
{
if(b==1)
{
b=0;
TR0=1;
delay(50000);
delay(50000);
delay(50000);
delay(50000);
TR0=0;
spk=1;//恢复初态
}
}
} |