请教:<br />是这样的:<br />我买了一个步进电机控制盒<br />只要很简单的控制 速度,方向,启动 <br />就可以控制步进电机了。<br /><br />芯片(ateml89c52)<br /><br />速度的控制就是使控制线的电平不听的高低变化<br /><br />我把放在定时器里<br /><br />//-------------------------------------主程序-----------------------------------------<br />void main()<br />{<br /> TMOD = 0x01; //T/C0 工作在定时期器 1<br /> <br /> EA = 1; //CPU 开中断<br /> ET0 = 1; //T/C0 开中断<br /> TR0 = 1; //启动 定时器/计数器 0<br /> ET1 = 1; //T/C1 开中断<br /> TR1 = 1; //启动 定时器/计数器 1<br />}<br /><br />现在奇怪的现象出现在:<br /><br />假设使步进电机的速度 为 10<br /><br />如果放在定时器 0 里 <br /><br />需要把 <br /><br />TH0 = ; <br />TL0 = ;<br /><br />置比较大的值,步进电机才能使步进电机转这么快<br />而<br />如果放在定时器 0 里 <br /><br />TH1 = ; <br />TL1 = 0;<br /><br />置比较小的值,步进电机也能使步进电机转这么快<br /><br />//--------------------------------------定时器计数器0中断----------------------------------<br />void timer0(void) interrupt 1 //喂狗中断程序<br />{<br /> TH0 = 0xff; //预置计数初值,每 0.05 ms 中断一次<br /> TL0 = 0xa3;<br /> if (i==1)<br /> {<br /> 速度控制引脚 = 0<br /> i = 0;<br /> }<br /> else<br /> {<br /> 速度控制引脚 = 0<br /> i = 1;<br />}<br />//--------------------------------------定时器计数器0中断----------------------------------<br /><br /><br />//--------------------------------------定时器计数器1中断----------------------------------<br />void timer1(void) interrupt 3 //<br />{<br /> TH1 = 0xfa; //预置计数初值,每 0.8 ms 中断一次<br /> TL1 = 0x3d;<br /> if (i==1)<br /> {<br /> 速度控制引脚 = 0<br /> i = 0;<br /> }<br /> else<br /> {<br /> 速度控制引脚 = 0<br /> i = 1;<br />}<br />//--------------------------------------定时器计数器1中断----------------------------------<br /><br /><br />他们得到的速度是一样的<br />这是什么原因啊?<br /><br />是不是 <br />TMOD = 0x01; 的原因?<br /><br />谢谢! |
|