打印

一个很不解的东西

[复制链接]
1607|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hziee30|  楼主 | 2007-6-15 11:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用AT89C2051做了一个一分钟定时,用的是定时器0工作方式1,每100ms中断一次。我定义了一个INT变量cout,并给它附值cout=600.当cout减到0的时候就停止中断。本来应该是一分钟停止中断,但实际测的的时间只有35ms左右,我想不通是什么原因。
谁知道的帮我解决一下吧!!!!

相关帖子

沙发
chunyang| | 2007-6-15 11:10 | 只看该作者

定时常数要根据晶体频率来计算得出

使用特权

评论回复
板凳
hziee30|  楼主 | 2007-6-15 11:16 | 只看该作者

我算了,4M晶振,THO=0x7d,TL0=0xca

使用特权

评论回复
地板
孤独泪| | 2007-6-15 12:22 | 只看该作者

你可以看一下此时count的值多少

最好把程序贴上来,你是怎样判断35mS程序停止停止中断的,看你程序连一次中断都没产生。
可以仿真一下。

使用特权

评论回复
5
hziee30|  楼主 | 2007-6-15 12:53 | 只看该作者

这是程序

#include  "reg51.h"
//****************************

sbit led_1min=P1^3;     // 指示灯
sbit key_1min=P1^4;         


//*******************************
unsigned int cout;
//*************************************** 
void delay (unsigned int t)
{
  unsigned int i,j;
  for(i=t;i>0;i--)
  {
     for(j=100;j>0;j--);
  }
}
//***************************************
void init(void)
{

  TMOD=0x01;
  TH0=0x7d;
  TL0=0xca;
  ET0=1;
  TR0=1;
  EA=1;
}
//**********************************************
void main( )
{
  while(1)
  {
   cout=0;
   led_1min=1;
   while(!cout)
        {
         
          if(!key_1min)
            {
         delay(10);
         if(!key_1min)
           {
            while(!key_1min);
        led_1min=0;
            cout=600;                 
          }
           }
   init();
   while(cout);
   EA=0;
   ET1=0;
      }
   }
}
//*****************************************    
void timer100ms(void) interrupt 1
 {
 
   TH0=0x7d;
   TL0=0xca;
   if(--cout==0)
        {
     led_1min=1;
     cout=0;
         }

 } 

使用特权

评论回复
6
jmx| | 2007-6-15 13:49 | 只看该作者

逻辑有点乱

建议先把判断key_1min的拿掉,
直接调试中断,
一个死循环,中断一次COUNTER减一,到0后再放600并P1.3取反,重新开中断.
确认这样OK以后再加你的判断条件.
这样会比较容易找问题!

使用特权

评论回复
7
ayb_ice| | 2007-6-15 14:45 | 只看该作者

随便说说

你的初值是对的,中断一次是100MS,不知你的35MS从哪里来的。。。
对整型变量的操作要关中断,或直接在中断中赋值。。。
你的逻辑有点乱如
void timer100ms(void) interrupt 1
{

   TH0=0x7d;
   TL0=0xca;
   if(--cout==0)
        {
     led_1min=1;
     cout=0;//此处多此一举已经是0再赋值0
         }


使用特权

评论回复
8
孤独泪| | 2007-6-15 17:05 | 只看该作者

看程序我不知道你有什么目的

可能是我的逻辑差了点,我想你还是用文字把逻辑描述出来吧。

使用特权

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

本版积分规则

16

主题

34

帖子

0

粉丝