关于51单片机T0、T1中断的问题

2019-07-16 06:13发布

本帖最后由 zhpeng 于 2012-3-21 00:25 编辑

我是新手,在用T0、T1中断分别控制步进电机时,遇到用同样的参数,T1控制的电机比T0控制时的步进电机要快好几倍。以下是各自程序。请高手分析一下,不胜感激!


  1. #include "AT892051.h"
  2. #include "string.h"
  3. #define uchar unsigned char
  4. uchar code CCW[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90};
  5. uchar code CW[8]={0x90,0x10,0x30,0x20,0x60,0x40,0xc0,0x80};
  6. uchar i=0;
  7. void T1_init()
  8. {
  9. TMOD=0x01;
  10. TH1=41771/256;
  11. TL1=41771%256;
  12. EA=1;
  13. ET1=1;
  14. TR1=1;
  15. TF1=0;
  16. }
  17. void main(void)
  18. {
  19. T1_init();
  20. P1=0xf0;
  21. while(1);
  22. }
  23. void T1_time() interrupt 3
  24. {
  25. TH1=41771/256;
  26. TL1=41771%256;
  27.   P1=CW[i];
  28.      i++;
  29.   if(i==8) i=0;
  30. }
复制代码
以上是用T1中断。


  1. #include "AT892051.h"
  2. #include "string.h"
  3. #define uchar unsigned char
  4. uchar code CCW[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90};
  5. uchar code CW[8]={0x90,0x10,0x30,0x20,0x60,0x40,0xc0,0x80};
  6. uchar i=0;
  7. void T0_init()
  8. {
  9. TMOD=0x01;
  10. TH0=41771/256;
  11. TL0=41771%256;
  12. EA=1;
  13. ET0=1;
  14. TR0=1;
  15. TF0=0;
  16. }
  17. void main(void)
  18. {
  19. T0_init();
  20. P1=0xf0;
  21. while(1);
  22. }
  23. void T0_time() interrupt 1
  24. {
  25. TH0=41771/256;
  26. TL0=41771%256;
  27.   P1=CW[i];
  28.     i++;
  29.   if(i==8) i=0;
  30. }
复制代码
以上是用T0中断。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
zhpeng
1楼-- · 2019-07-16 08:40
顶顶!高手快出现!
wuxing176
2楼-- · 2019-07-16 09:04
把定时1的TMOD=0x01 改成TMOD=0x10
zhpeng
3楼-- · 2019-07-16 14:38
 精彩回答 2  元偷偷看……
wuxing176
4楼-- · 2019-07-16 18:08
zhpeng 发表于 2012-3-21 15:49
谢谢回复!
我需要T1中断的速度,是不是我改了T1速度就跟T0一样慢了?
只能回家试试了。我想把T0的速度提 ...

程序最下面的那个中断服务就是用来调速度的
建议先看看书这似乎为什么
不要只复制个代码
葛季林
5楼-- · 2019-07-16 22:23
看看呢啊。。
葛季林
6楼-- · 2019-07-16 23:14
。。好像很难。。我新手

一周热门 更多>