打印

关于51单片机计数器的一段程序

[复制链接]
2080|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dldty|  楼主 | 2009-3-5 18:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位高手帮忙看一下,下面这段计数程序有什么问题吗?为什么我拿来检测红外接受得不到数据呢?现实部分是没问题的,就是计不出数~

//******LCD显示1子程序 ******// 
void display1()
{
  displaylistchar(0,0,str2);    //第一行显示字串2 
  displaylistchar(0,1,str3);    //第二行显示字符串3 
  displayonechar(13,1,count/100+0x30);    //显示测量数据百位
  displayonechar(14,1,(count%100)/10+0x30);    //显示测量数据十位
  displayonechar(15,1,count%10+0x30);    //显示测量数据个位
}
//******用T0作计时器 ******//  
void t0(void) interrupt 1 using 0 
{
       TR0=0;
       count++;
       display1();            //显示测得的数据 
       TH0=0xff;            //计数器清0 
       TL0=0xff;
}

//***********************主程序部分*****************************//         

void  main()
{
  uint count=0;
  TMOD=0x05;
  EA=1;
  ET0=1;
  TH0=0xff;
  TL0=0xff;
  delay(500);    //启动等待,等LCM讲入工作状态  
  init();                //LCD初始化  
  while(1)
  {
    TR0=1;
  }
}

相关帖子

沙发
21ic7158| | 2009-3-9 10:41 | 只看该作者

有一点问题

当程序执行到这一行后:     init();                //LCD初始化
下面进入while循环,执行:  TR0=1;               //启动定时器0
根据前面对定时器的设置:   TH0=0xff;   TL0=0xff;
定时器会立即溢出,进入定时器0中断:void t0(void) interrupt 1 using 0
但是一进去后,你又立即把定时器给关了:  TR0=0;
这里是不是有一点问题?或是我没懂你的意思。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

18

帖子

0

粉丝