📄 motor_l298n.c
字号:
////////////////////////////////////////////////////////////////////////////
//步进电机驱动
//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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -