motor_l298n.c
来自「L298N控制步进电机正反转程序」· C语言 代码 · 共 82 行
C
82 行
////////////////////////////////////////////////////////////////////////////
//步进电机驱动
//IO812-IOB15:1,2,3,4
//IOB0,1:PWMA,B
////////////////////////////////////////////////////////////////////////////
#include "SPCE061A.H"
#define ENA 0x0001
#define ENB 0x0002
#define ENAB 0x0003
#define Watchdog_Clear *P_Watchdog_Clear=0x0001
unsigned int Motor_F[]={0x1000,0x3000,0x2000,0x6000,0x4000,0xc000,0x8000,0x9000};//正转
unsigned int Motor_B[]={0x9000,0x8000,0xc000,0x4000,0x6000,0x2000,0x3000,0x1000};//反转
unsigned int i,j;
////////////////////////////////////////////////////////////////////////////
//function:delay
////////////////////////////////////////////////////////////////////////////
void delaynms(unsigned int t)
{
unsigned int k;
while(t--)
{
for(k=0; k<125; k++)
{
Watchdog_Clear;
}
Watchdog_Clear;
}
}
////////////////////////////////////////////////////////////////////////////
//function:正转Cir_Num圈
////////////////////////////////////////////////////////////////////////////
void M_Front(unsigned int Cir_Num)//转1*n圈
{
for(i=0;i<24*Cir_Num;i++)
{
for(j=0;j<8;j++)
{
*P_IOB_Data=Motor_F[j]|ENAB;
delaynms(1);
Watchdog_Clear;
}
Watchdog_Clear;
}
}
////////////////////////////////////////////////////////////////////////////
//function:反转Cir_Num圈
////////////////////////////////////////////////////////////////////////////
void M_Back(unsigned int Cir_Num)//转1*n圈
{
for(i=0;i<24*Cir_Num;i++)
{
for(j=0;j<8;j++)
{
*P_IOB_Data=Motor_B[j]|ENAB;
delaynms(1);
Watchdog_Clear;
}
Watchdog_Clear;
}
}
int main()
{
*P_IOB_Dir=0xffff;
*P_IOB_Attrib=0xffff;
while(1)
{
M_Front(2);
delaynms(100);//换向延时
M_Back(2);
delaynms(100);
Watchdog_Clear;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?