各位大虾,早上好! 我现在用了一个AT89S52单片机驱动2个步进电机A、B同时工作,电机的运行程序都在中断里实现的.我用T0中断控制A,T2中断控制B,并把T2的优先级设为高。如果两个定时器中断程序只控制电机转动不会出现问题,2个电机同时转动也很平滑。但我想记录每个电机走的步数(正向转则步数加,反向则减),但我把这段程序加入T2中断里面后,就出现了转动不连续的情况。后来单步调试发现:由于T2中断程序里加了这段“记录电机步数程序”后T2子程序工作时间太长,T2子程序还没有返回的时候T0的中断已经到来,但T2的中断优先级较高,故T0无法响应,所以导致电机工作不连续。如果把这段程序去掉后就没问题,但我又想记录电机走的步数来确定其位置,这样应该只能在中断里才可以实现,请问各位大侠有没有什么好的方法?
内容有点长,麻烦大家能仔细看一下,帮帮我,也可以为以后他人的学习提供参考,谢谢了! |