打印

求助:一个非常奇怪的问题,(定时器 和 定时器 1的问题),谢

[复制链接]
1236|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
星星电灯|  楼主 | 2007-10-18 19:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教:
是这样的:
我买了一个步进电机控制盒
只要很简单的控制 速度,方向,启动 
就可以控制步进电机了。

芯片(ateml89c52)

速度的控制就是使控制线的电平不听的高低变化

我把放在定时器里

//-------------------------------------主程序-----------------------------------------
void main()
{
  TMOD = 0x01;                  //T/C0 工作在定时期器 1
 
  EA = 1;                       //CPU 开中断
  ET0 = 1;                      //T/C0 开中断
  TR0 = 1;                      //启动 定时器/计数器 0
  ET1 = 1;                      //T/C1 开中断
  TR1 = 1;                      //启动 定时器/计数器 1
}

现在奇怪的现象出现在:

假设使步进电机的速度 为 10

如果放在定时器 0 里 

需要把 

TH0 = ;    
TL0 = ;

置比较大的值,步进电机才能使步进电机转这么快

如果放在定时器 0 里 

TH1 = ;                   
TL1 = 0;

置比较小的值,步进电机也能使步进电机转这么快

//--------------------------------------定时器计数器0中断----------------------------------
void timer0(void) interrupt 1   //喂狗中断程序
{
  TH0 = 0xff;                   //预置计数初值,每 0.05 ms 中断一次
  TL0 = 0xa3;
  if (i==1)
     {
       速度控制引脚 = 0
       i = 0;
     }
  else
    {
      速度控制引脚 = 0
      i = 1;
}
//--------------------------------------定时器计数器0中断----------------------------------


//--------------------------------------定时器计数器1中断----------------------------------
void timer1(void) interrupt 3   //
{
  TH1 = 0xfa;                   //预置计数初值,每 0.8 ms 中断一次
  TL1 = 0x3d;
  if (i==1)
     {
       速度控制引脚 = 0
       i = 0;
     }
  else
    {
      速度控制引脚 = 0
      i = 1;
}
//--------------------------------------定时器计数器1中断----------------------------------


他们得到的速度是一样的
这是什么原因啊?

是不是 
TMOD = 0x01; 的原因?

谢谢!

相关帖子

沙发
computer00| | 2007-10-18 20:29 | 只看该作者

当然了,一个是13位的,一个是16位的,

使用特权

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

本版积分规则

74

主题

121

帖子

1

粉丝