第一个外部中断按一下之后LED灯会暂停,按第二下时没反应。第二个,就是定时器怎么输出1s,我用for语句循环也不行。
#define uint unsigned int;
#define uchar unsigned char;
sbit key=P3^2;
sbit led=P2^7;
uchar num,flag; //定义字符型变量num
void timer0() interrupt 0
{
flag=0;
while(1)
{
EX0=1; //开定时器中断
EA=1; //开总中断
if(key==0) //有键按下
{
if(flag==0) //flag记录上次定时器是开还是关
{
flag=1;
TR0=0; //关闭定时器T0
}
else
{
flag=0;
TR0=1; //第一个问题:按一下正常暂停 再按不能正常运行
}
}
}
}
main()
{ //第二个问题:不能延时1s
TMOD=0x01; //开启定时器1 工作在定时方式1下
TH0=15536/256;
TL0=15536%256;
EX0=1; //开定时器中断
EA=1; //开总中断
TR0=1; //开定时器
TF0=0;
while(1)
{
if(TF0==1) //1s后关闭 开始闪光灯
{
num=0;
TH0=15536/256;
TL0=15536%256;
TF0=0;
if(++num==20);
led=~led;
}
}
} |