我用四种不同脉宽的脉冲信号分别加到P1.6口,查询P1.6口,当P1.6==1时启动TR0,当P1.6==0时关闭TR0,把T0设成模式2,晶振16M.按说T0应该192us溢出一次,可分别用42ms,84ms,125ms,250ms的脉冲加到P1.6口,竟检测不到一次中断,怎么回事?(不需要多精确,只要能把这几个脉冲区别开就行。送入P1.6的脉宽不同,则执行不同的任务)
void keyscan() //
{
//uint ci=0;前面已定义成全局变量
TMOD=0x02; //T0模式2
TH0=0; //赋初值
TL0=0;
EA=1; //开总中断
ET0=1;//开定时器中断
if(key==1) //key=P1^6
{
TR0=1; //启动定时器
while(!key) //等待低电平到来
if(key==0)
{
TR0=0; //关闭定时器
if((ci>200) && (ci<300)) //若200<ci<300
num=0;
}
}
}
void T0_time() interrupt 1 //T0中断
{
ci++;
}