赞助论坛
  • 2879阅读
  • 0回复

学习单片机求助 [复制链接]

楼层直达
职尚  
级别: 中级会员
发帖
172
精华
0
金币
464
威望
5
贡献
5
好评
0
注册
2010-01-12
楼主    职尚 发表于: 2013-06-30 14:14:53 
我用四种不同脉宽的脉冲信号分别加到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++;
  }