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

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

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

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

本版积分规则

74

主题

121

帖子

1

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