//電機
sbit a = p2^0;//定義管腳
sbit b = p2^1;
sbit c = p2^2;
sbit d = p2^3;
///////////////////////////////////////
//步進電機驅動
無符號字符MotorStep = 0;
無符號int motor timer = 0;
無符號int MotorDelay,Speed=1,TIM,CT;
#定義速度8 //不要把速度值設得太低,會引起震動。
/*****************************************************
*初始化電機*
******************************************************/
void InitMotor()
{
a = 1;
b = 1;
c = 1;
d = 1;
}
void SetMotor()
{
// if(Speed == 0)返回;
電機延遲=速度;//調整速度
開關(電機步進)
{
案例0:
if(TIM) // A
{
a = 0;//0xf1
b = 1;
c = 1;
d = 1;
motor step = 1;
TIM = 0;
}
打破;
案例1://AB
如果(添)
{
a = 0;//0xf3
b = 0;
c = 1;
d = 1;
motor step = 2;
TIM = 0;
}
打破;
情況2://B
如果(添)
{
a = 1;
b = 0;//0xf2
c = 1;
d = 1;
motor step = 3;
TIM = 0;
}
打破;
案例3://BC
如果(添)
{
a = 1;
b = 0;//0xf6
c = 0;
d = 1;
motor step = 4;
TIM = 0;
}
打破;
案例4://C
如果(添)
{
a = 1;
b = 1;//0xf4
c = 0;
d = 1;
motor step = 5;
TIM = 0;
}
打破;
案例5://CD
如果(添)
{
a = 1;
b = 1;//0xfc
c = 0;
d = 0;
motor step = 6;
TIM = 0;
}
打破;
案例6://D
如果(添)
{
a = 1;
b = 1;//0xf8
c = 1;
d = 0;
motor step = 7;
TIM = 0;
}
打破;
案例7://DA
如果(添)
{
a = 0;
b = 1;//0xf9
c = 1;
d = 0;
motor step = 0;
TIM = 0;
}
打破;
}
}
void system_Ini()
{
TMOD | = 0x 11;
TH0 = 0xDC//11.0592M
TL0 = 0x00
IE = 0x8A
TR0 = 1;
}
主()
{ system _ Ini();
init motor();
while(1)
{
set motor();
}
}
/************************************************
* *
*定時中斷延遲*
************************************************/
無效Tzd(無效)中斷1
{
TH0 = 0xfe//11.0592
TL0 = 0x33
if(ct++ = =速度)
{ TIM = 1;
CT = 0;
}
}