标题: 步进电机正转 51单片机程序 [打印本页]

作者: 51黑dd    时间: 2016-4-6 18:28
标题: 步进电机正转 51单片机程序

正转,转四相步进电机,每相间隔70ms。C51程序 51单片机通用
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uint time

  5. void timer1(void) interrupt 1 using 1{ //定时器0中断,定时1ms//
  6. TH0=(65536-1000)/256;
  7. TL0=(65536-1000)%256;
  8. time++;
  9. }

  10. void delay(uint n){ //一般延时
  11. while(--n);
  12. }

  13. void delay(uint dtime){ //延时
  14. TR0=1;
  15. while(time<=dtime);
  16. time=0;
  17. TR0=0;
  18. }

  19. void moto(bit cf,uchar n,uint dtime){ //电机驱动子程序,
  20. uchar idata zhpai[4]={0x78,0xb8,0xd8,0xe8};
  21. uchar idata fpai[4]={0xe8,0xd8,0xb8,0x78};
  22. uchar i,l=0;
  23. if(cf==0) //正转,A-B-C-A
  24. for(i=0;i<n;i++){
  25. P1=zhpai[l];//P1.7~1.4为输出口,分别为A、B、C、D
  26. l++;
  27. delay(dtime);
  28. if(l==4)l=0;
  29. }
  30. else{ //反转,C-B-A-C
  31. for(i=0;i<n;i++){
  32. P1=fpai[l];
  33. l++;
  34. delay(dtime);
  35. if(l==4)l=0;
  36. }
  37. }
  38. }

  39. void main(){
  40. TMOD=0x01;
  41. TH0=(65536-1000)/256;
  42. TL0=(65536-1000)%256;
  43. EA=1;
  44. ET0=1;
  45. while(1){
  46. moto(0,4,70);//正转,转四相,每相间隔70ms
  47. delay(10000);
  48. moto(1,4,70);//反转,转四相,每相间隔70ms
  49. delay(10000);
  50. }
  51. }
复制代码




作者: 沙果呀    时间: 2017-3-26 14:27
C(22):错误c237:“_delay”:功能已经有了一个身体。       这是什么问题    求助
   




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1