📄 motor1.txt
字号:
#ifndef __Motor
#define __Motor
//Motor0 p2.0-3
//Motor1 p2.4-7
unsigned long int motor_step=0;
unsigned int NN0,NN1;
unsigned char mod0;
unsigned char mod1;
unsigned long int step0;
unsigned long int step1;
unsigned char pulse0;
unsigned char pulse1;
int dir0;//1 正 0停 -1反
int dir1;
float lastV0;
float lastV1;
void Motor0SpeedChange(float v)
{
if(v==0)
{
dir0 = 0;
}
else if(v>0)
{
dir0 = 1;
NN0 = 1000000/v;
}
else
{
dir0 = -1;
v = 0-v;
NN0 = 1000000/v;
}
}
void Motor1SpeedChange(float v)
{
if(v==0)
{
dir1 = 0;
}
else if(v>0)
{
dir1 = 1;
NN1 = 1000000/v;
}
else
{
dir1 = -1;
v = 0-v;
NN1 = 1000000/v;
}
}
void StepMode0(unsigned long int x,float v)//步和方向
{
mod0=1;
step0=x;
Motor0SpeedChange(v);
}
void StepMode1(unsigned long int x,float v)
{
mod1=1;
step1=x;
Motor1SpeedChange(v);
}
////////////////////////////////////////////////////////////////////////////////
void Motor_Init(float v0,float v1)
{
//1000000Hz SCLK
//Motor0SpeedChange(v0);
//Motor1SpeedChange(v1);
P2DIR |=0Xff;
TACTL = 0;
TACTL |= TASSEL_2+TACLR+ ID_3; // clock source select: 2 - SMCLK+counter clear+input divider: 8
TACTL |= MC_2; // Timer A mode control: 2 - Continous up
CCTL0 |= CCIE; // CCR0中断允许
CCR0 = NN0; // 为CCR0写入初值
CCTL1 |= CCIE; // CCR1中断允许
CCR1 = NN1; // 为CCR1写入初值
}
////////////////////////////////////////////////////////////////////////////////////////////////////
/////
////
///
/////////////////////////////////////////////////////////////////////////////////////////////////////
void step_mode(unsigned long int n,float v)
{
motor_step=0;
Motor0SpeedChange(v);
Motor1SpeedChange(v);
while(motor_step<n);
Motor0SpeedChange(0);
Motor1SpeedChange(0);
}
void Pulse0()
{
if(mod0==1)step0--;
if(mod0==1&&step0==0)dir0=0;
if(dir0==0)
{
// P2OUT &= ~BIT0;
// P2OUT &= ~BIT1;
P2OUT &= ~BIT2;
P2OUT &= ~BIT3;
P2OUT |= BIT0;
P2OUT |= BIT1;
//P2OUT |= BIT2;
//P2OUT |= BIT3;
}
else if(dir0==1)
{
switch(pulse0%8)
{
case 0:
{
P2OUT |= BIT0;
P2OUT &= ~BIT1;
P2OUT &= ~BIT2;
P2OUT &= ~BIT3;
}break;
case 1:
{
P2OUT |= BIT0;
P2OUT |= BIT1;
P2OUT &= ~BIT2;
P2OUT &= ~BIT3;
}break;
case 2:
{
P2OUT &= ~BIT0;
P2OUT |= BIT1;
P2OUT &= ~BIT2;
P2OUT &= ~BIT3;
}break;
case 3:
{
P2OUT &= ~BIT0;
P2OUT |= BIT1;
P2OUT |= BIT2;
P2OUT &= ~BIT3;
}break;
case 4:
{
P2OUT &= ~BIT0;
P2OUT &= ~BIT1;
P2OUT |= BIT2;
P2OUT &= ~BIT3;
}break;
case 5:
{
P2OUT &= ~BIT0;
P2OUT &= ~BIT1;
P2OUT |= BIT2;
P2OUT |= BIT3;
}break;
case 6:
{
P2OUT &= ~BIT0;
P2OUT &= ~BIT1;
P2OUT &= ~BIT2;
P2OUT |= BIT3;
}break;
case 7:
{
P2OUT |= BIT0;
P2OUT &= ~BIT1;
P2OUT &= ~BIT2;
P2OUT |= BIT3;
}break;
default:break;
}
}
else if(dir0==-1)
{
switch(pulse0%8)
{
case 0:
{
P2OUT &= ~BIT0;
P2OUT &= ~BIT1;
P2OUT &= ~BIT2;
P2OUT |= BIT3;
}break;
case 1:
{
P2OUT &= ~BIT0;
P2OUT &= ~BIT1;
P2OUT |= BIT2;
P2OUT |= BIT3;
}break;
case 2:
{
P2OUT &= ~BIT0;
P2OUT &= ~BIT1;
P2OUT |= BIT2;
P2OUT &= ~BIT3;
}break;
case 3:
{
P2OUT &= ~BIT0;
P2OUT |= BIT1;
P2OUT |= BIT2;
P2OUT &= ~BIT3;
}break;
case 4:
{
P2OUT &= ~BIT0;
P2OUT |= BIT1;
P2OUT &= ~BIT2;
P2OUT &= ~BIT3;
}break;
case 5:
{
P2OUT |= BIT0;
P2OUT |= BIT1;
P2OUT &= ~BIT2;
P2OUT &= ~BIT3;
}break;
case 6:
{
P2OUT |= BIT0;
P2OUT &= ~BIT1;
P2OUT &= ~BIT2;
P2OUT &= ~BIT3;
}break;
case 7:
{
P2OUT |= BIT0;
P2OUT &= ~BIT1;
P2OUT &= ~BIT2;
P2OUT |= BIT3;
}break;
default:break;
}
}
}
void Pluse1()
{ if(mod1==1)step1--;
if(mod1==1&&step1==0)dir1=0;
if(dir1==0)
{
// P2OUT &= ~BIT4;
// P2OUT &= ~BIT5;
P2OUT &= ~BIT6;
P2OUT &= ~BIT7;
P2OUT |= BIT4;
P2OUT |= BIT5;
//P2OUT |= BIT6;
// P2OUT |= BIT7;
}
else if(dir1==1)
{
switch(pulse1%8)
{
case 0:
{
P2OUT |= BIT4;
P2OUT &= ~BIT5;
P2OUT &= ~BIT6;
P2OUT &= ~BIT7;
}break;
case 1:
{
P2OUT |= BIT4;
P2OUT |= BIT5;
P2OUT &= ~BIT6;
P2OUT &= ~BIT7;
}break;
case 2:
{
P2OUT &= ~BIT4;
P2OUT |= BIT5;
P2OUT &= ~BIT6;
P2OUT &= ~BIT7;
}break;
case 3:
{
P2OUT &= ~BIT4;
P2OUT |= BIT5;
P2OUT |= BIT6;
P2OUT &= ~BIT7;
}break;
case 4:
{
P2OUT &= ~BIT4;
P2OUT &= ~BIT5;
P2OUT |= BIT6;
P2OUT &= ~BIT7;
}break;
case 5:
{
P2OUT &= ~BIT4;
P2OUT &= ~BIT5;
P2OUT |= BIT6;
P2OUT |= BIT7;
}break;
case 6:
{
P2OUT &= ~BIT4;
P2OUT &= ~BIT5;
P2OUT &= ~BIT6;
P2OUT |= BIT7;
}break;
case 7:
{
P2OUT |= BIT4;
P2OUT &= ~BIT5;
P2OUT &= ~BIT6;
P2OUT |= BIT7;
}break;
default:break;
}
}
else if(dir1==-1)
{
switch(pulse1%8)
{
case 0:
{
P2OUT &= ~BIT4;
P2OUT &= ~BIT5;
P2OUT &= ~BIT6;
P2OUT |= BIT7;
}break;
case 1:
{
P2OUT &= ~BIT4;
P2OUT &= ~BIT5;
P2OUT |= BIT6;
P2OUT |= BIT7;
}break;
case 2:
{
P2OUT &= ~BIT4;
P2OUT &= ~BIT5;
P2OUT |= BIT6;
P2OUT &= ~BIT7;
}break;
case 3:
{
P2OUT &= ~BIT4;
P2OUT |= BIT5;
P2OUT |= BIT6;
P2OUT &= ~BIT7;
}break;
case 4:
{
P2OUT &= ~BIT4;
P2OUT |= BIT5;
P2OUT &= ~BIT6;
P2OUT &= ~BIT7;
}break;
case 5:
{
P2OUT |= BIT4;
P2OUT |= BIT5;
P2OUT &= ~BIT6;
P2OUT &= ~BIT7;
}break;
case 6:
{
P2OUT |= BIT4;
P2OUT &= ~BIT5;
P2OUT &= ~BIT6;
P2OUT &= ~BIT7;
}break;
case 7:
{
P2OUT |= BIT4;
P2OUT &= ~BIT5;
P2OUT &= ~BIT6;
P2OUT |= BIT7;
}break;
default:break;
}
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -