学51也有快半年了,却什么也没搞成,最近准备使用51定时器中断输出脉冲来控制步进,有现成的驱动,参考书上公式计算的定时器初值,输出的脉冲频率却低了很多,想来肯定是初值计算出的问题,却不知道该如何计算才正确,找了好多资料也没结果,望那位大哥帮忙指点一二,谢谢!
(原文件名:计算初值.png)
//晶振 12M
//使用定时器中断输出50KHZ脉冲,用来驱动步进)
void timer1(void) interrupt 3
{
Motor_CLK=~Motor_CLK;
TH1=0xff;
TL1=0xec;
}
void main(void)
{
// AUXR|=0x40; //定时器工作在1T模式
TMOD=0x10; //定时器工作方式为1
TH1=0xff; //
TL1=0xec;
Motor_CLK=0;
RUN_LED=1; //运行led灭 低电平有效
STOP_LED=1; //停止led亮 高电平有效
TR1=1;
ET1=1;
//EA=1;
while(1)//循环等待
{
if (START_key==0) //按下开始按钮
{
EA=1; //开总中断,启动脉冲输出
RUN_LED=0; //运行led亮
STOP_LED=0; //停止led灭
}
if (STOP_key==0) //按下停止按钮
{
EA=0; //关总中断,停止脉冲输出
RUN_LED=1;
STOP_LED=1;
}
}
}
"使用定时器中断输出50khz脉冲,"
that's potentially too high, as you may not have enough time to process the interrupt before the next interrupt is fired.
try something lower.
-----------------------------------------------------------------------
好早哦,谢谢你的回复,我想问下,单纯就这个计算方法来说的话,有错误吗?如果没办法,我就使用低点的脉冲来试试了!因为之前在坛子里看到高手使用51输出2路100K脉冲,还需要对脉冲计数,所以我觉得应该问题不大的呀!
一周热门 更多>