C51单片机定时器问题请教

[复制链接]
 楼主| 银色盒子 发表于 2011-3-11 12:44 | 显示全部楼层 |阅读模式
Timer0_isr(void) interrupt 1 using 1
{num++;
if(num==10)
{
   num=0;
   TH0=(65536-500)/256;               
  TL0=(65536-500)%256;                                 
   OUT=~OUT;
}
为什么这个定时函数与
Timer0_isr(void) interrupt 1 using 1
{
   TH0=(65536-5000)/256;               
  TL0=(65536-5000)%256; ;                                       
   OUT=~OUT;
}
延时效果大不相同啊
总程序为:
#include<reg52.h>
sbit OUT=P1^2;   
unsigned char num=0;
void Init_Timer0(void)
{
TMOD |= 0x01;                              
//TH0=0x00;            
//TL0=0x00;
EA=1;            
ET0=1;        
TR0=1;        
}
main()
{
Init_Timer0();
while(1);
}

void Timer0_isr(void) interrupt 1 using 1
{num++;
if(num==10){
   num=0;
TH0=(65536-500)/256;                 
TL0=(65536-500)%256;        
OUT=~OUT; }      
}
本人自学,知道这问题很简单。但实在想不出为什么,又苦于身边没人指点,望高手能为我点拨一下,不胜感激!!!
angehan 发表于 2011-3-12 09:18 | 显示全部楼层
对啊。。没重置初值诶。。。而且进10次中断和进一次中断调用中断用的时间肯定差了不少啦。。。
sunsheng123 发表于 2011-3-12 01:23 | 显示全部楼层
一楼对的~~
bh7kve 发表于 2011-3-12 00:54 | 显示全部楼层
Timer0_isr(void) interrupt 1 using 1
{
   num++;
   TH0=(65536-500)/256;               
   TL0=(65536-500)%256;  
   if(num==10)
   {
      num=0;
      OUT=~OUT;
   }
}
zjswuyunbo 发表于 2011-3-11 19:09 | 显示全部楼层
有点搞笑…
zjswuyunbo 发表于 2011-3-11 19:08 | 显示全部楼层
对5楼无语!
sdpz 发表于 2011-3-11 19:05 | 显示全部楼层
5楼在误人子弟。
 楼主| 银色盒子 发表于 2011-3-11 18:00 | 显示全部楼层
非常受用,非常感谢大家!
jesse7022 发表于 2011-3-11 16:32 | 显示全部楼层
TH0=(65536-500)/256;               
  TL0=(65536-500)%256;     
在程序开始时算好,不要在中断中作运算,影响精度
wang_2003 发表于 2011-3-11 15:59 | 显示全部楼层
我同意楼上所说的~
ayb_ice 发表于 2011-3-11 13:22 | 显示全部楼层
一个初值每次重装, 一个是10次才重装一次,另外9次都自由运行的,也就是最大定时时间65536个周期
心静自然凉 发表于 2011-3-11 12:58 | 显示全部楼层
Timer0_isr(void) interrupt 1 using 1
{num++;
if(num==10)
{
   num=0;
   TH0=(65536-500)/256;               
  TL0=(65536-500)%256;                                 
   OUT=~OUT;
}

问题出现在这个函数里。
当第一次进入中断时,你没有给定时/计数器重新置数,它会从0开始记,所以
“TH0=(65536-500)/256;               
  TL0=(65536-500)%256;     ”
要放在if函数外。

评分

参与人数 1威望 +1 收起 理由
银色盒子 + 1

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

58

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

1

主题

58

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部