艾北之北 发表于 2012-8-10 19:48:35

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

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

#define uchar unsigned char
#define uintunsigned 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
}

wiisir 发表于 2012-8-11 06:42:36

i值加到8以后呢?

艾北之北 发表于 2012-8-13 19:39:49

i的值变八之后又给i赋值为0了啊
页: [1]
查看完整版本: 请教我编的步进电机程序为什么不好使