关于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中断。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。