📄 step motor.c
字号:
#include<reg51.h>
#define uchar unsigned char
#define positive 0
#define minus 1
sbit direction_select=P3^6;
bit dir_flag=1;
uchar code Pulse_table[4]={0xf8,0xf4,0xf2,0xf1};//{0xfc,0xf6,0xf3,0xf9};
uchar code Pulse_table_m[4]={0xf1,0xf2,0xf4,0xf8};//{0xf9,0xf3,0xf6,0xfc};
extern bit reset_flag;
sbit key_cycleless=P3^3;
sbit key_pause=P3^5;
sbit key_start=P3^4;
extern delay();
extern bit Glint_enable_flag;
extern bit Pause_flag;
/*
void delaymotorf()//////////////////////////////////////////
{
int k;
for(k=0;k<3000;k++);
}
*/
void delaymotor()//////////////////////////////////////////
{
int k;
for(k=0;k<4000;k++);
}
void step_motor()///////////////////////////转90度
{
bit direction;
uchar i,j;
TR0=0;
if(direction_select==0&&dir_flag==1)
{
direction=positive;
dir_flag=0;
}
if(direction_select==1&&dir_flag==1)
{
direction=minus;
dir_flag=0;
}
if(direction==positive)
{
for(j=0;j<24;j++)//13
{
for(i=0;i<4;i++)
{
P0=Pulse_table[i];
/*
if(j<2||j>22)
delaymotor();
else
*/
delaymotor();
if(key_pause==0)
{
delay();
if(key_pause==0)
{
Pause_flag=1;
Glint_enable_flag=1;
TR0=0;
while(1)
{
if(key_start==0)
{
Pause_flag=0;
Glint_enable_flag=0;
//TR0=1;
break;
}
if(reset_flag==1)
{
//reset_flag=0;
break;
}
}
}
}
}
}
P0=0;
direction=minus;
}
else
if(direction==minus)
{
/*
P0=0xf3;//@@@@@@@@@@@@@@@@@@@@@2
delaymotor();
P0=0xf6;
delaymotor();
P0=0xfc;
delaymotor();
*/
for(j=0;j<24;j++)//12
{
for(i=0;i<4;i++)
{
P0=Pulse_table_m[i];
/*
if(j<2||j>22)
delaymotor();
else
*/
delaymotor();
if(key_pause==0)
{
delay();
if(key_pause==0)
{
Pause_flag=1;
Glint_enable_flag=1;
TR0=0;
while(1)
{
if(key_start==0)
{
Pause_flag=0;
Glint_enable_flag=0;
//TR0=1;
break;
}
if(reset_flag==1)
{
//reset_flag=0;留待外面置0
break;
}
}
}
}
}
}
P0=0;//@@@@@@@@@@@22
direction=positive;
}
if(reset_flag==1)
{
TR0=0;
if(key_cycleless==1)//不是无限循环状态,则外面不会用到reset_flag,置0
reset_flag=0;
}
else
TR0=1;//正常,开启计时
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -