请教我编的步进电机程序为什么不好使

2020-02-08 09:05发布

谁懂帮忙看一下
#include <reg52.h>

#define uchar unsigned char
#define uint  unsigned int


sbit A1=P1^0; //定义步进电机连接端口
sbit B1=P1^1;
sbit C1=P1^2;
sbit D1=P1^3;


#define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}//AB相通电,其他相断电
#define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}//BC相通电,其他相断电
#define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;}//CD相通电,其他相断电
#define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}//D相通电,其他相断电
#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电


/*------------------------------------------------
                    定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01;          //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响                     
//TH0=0x00;              //给定初值
//TL0=0x00;
EA=1;            //总中断打开
ET0=1;           //定时器中断打开
TR0=1;           //定时器开关打开
PT0=1;           //优先级打开
}


/*------------------------------------------------
                 定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1
{
static unsigned char i;
TH0=(65536-1000)/256;                  //重新赋值 1ms
TL0=(65536-1000)%256;

   switch(i)
       {
            case 0:Coil_A1;i++;break;
                case 1:Coil_AB1;i++;break;
                case 2:Coil_B1;i++;break;
                case 3:Coil_BC1;i++;break;
                case 4:Coil_C1;i++;break;
                case 5:Coil_CD1;i++;break;
                case 6:Coil_D1;i++;break;
                case 7:Coil_DA1;i++;break;
                case 8:i=0;break;
            default:break;
           }
}

/*------------------------------------------------
                    主函数
------------------------------------------------*/
main()
{

Init_Timer0();

Coil_OFF
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。