搜索
bottom↓
回复: 4

定时器定时精度问题的疑惑

[复制链接]

出0入0汤圆

发表于 2012-8-3 12:26:59 | 显示全部楼层 |阅读模式

马老师,你好!我想问下单片机定时器的定时时间。请您解答 一下,谢谢!程序如下:
1.51单片机的,晶振频率12MHz,程序只摘录与定时器0有关的程序片段。
static unsigned int count;       //延时计数器
static unsigned int endcount; //终止延时计数
static unsigned char Flag;      //红外发送标志
void main(void)
{
  char key;
  flag=0;
  P3_4 = 1;
  count = 0;
  EA = 1; //允许CPU中断
  TMOD = 0x11; //设定时器0和1为16位模式1
  ET0 = 1; //定时器0中断允许
  TH0 = 0xFF;
  TL0 = 0xE6; //设定时值0为38K 也就是每隔26us中断一次  
  TR0 = 1;//开始计数
}

//定时器0中断处理
void timeint(void) interrupt 1
{
  TH0=0xFF;
  TL0=0xE6; //设定时值为38K 也就是每隔26us中断一次
  count++;
}

void SendIRdata(char p_irdata)
{
  int i;
  char irdata=p_irdata;

  //发送9ms的起始码
  endcount=223;
  Flag=1;
  count=0;
  P3_4=0;
  do{}while(count<endcount);

  //发送4.5ms的结果码
  endcount=117;
  Flag=0;
  count=0;
  P3_4=1;
  do{}while(count<endcount);
//后面还有其他地址,数据,反码处理等
}

我想问下,定时器0,每个26us中断一次,count加1。9ms的起始码为count=223,那么就是223*26us=5798us,这样计算也不等于9ms,是不是我遗漏了什么。请问这个具体应该怎样计算,我用attiny2313做遥控器时也发现同样的问题。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2012-8-3 12:31:30 | 显示全部楼层
未计算压入栈时间

出0入0汤圆

 楼主| 发表于 2012-8-3 12:38:49 | 显示全部楼层
lpc1788 发表于 2012-8-3 12:31
未计算压入栈时间

请问这个怎样去计算呢?我上次用attiny2313做遥控器,调了很久,结果发现定时器定时精度有问题,做好count改小了就好啦!还有马老师那个讲义在哪儿下载啊,谢谢啦!

出0入0汤圆

发表于 2012-8-3 17:31:48 | 显示全部楼层
本栏有关于如何正确使用定时器,以及其精度的详细介绍和讨论的帖子,请找一下

出0入0汤圆

 楼主| 发表于 2012-8-4 08:23:44 | 显示全部楼层
machao 发表于 2012-8-3 17:31
本栏有关于如何正确使用定时器,以及其精度的详细介绍和讨论的帖子,请找一下 ...

谢谢马老师,我昨天发完贴了就看见与我相同的问题啦!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 10:01

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表