请教: 是这样的: 我买了一个步进电机控制盒 只要很简单的控制 速度,方向,启动 就可以控制步进电机了。
芯片(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; 的原因?
谢谢! |