/*-----------------------------------------------
名称:步进电机
------------------------------------------------*/
#include <reg52.h>
sbit step=P1^0; //步进脉冲,一个正脉冲就转一个步距角
sbit dir=P1^1; //1为正转,0为反转。
sbit sleep=P1^2;
sbit res=P1^3;
unsigned char sum=0;
unsigned char i=200;
/********************毫秒延时函数***************************/
void Delay(unsigned int xms)
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void ISR_Key(void) interrupt 2 //外部中断1
{
Delay(20);
sum++;
if(sum==1)
{
dir=~dir;
}
if(sum==1) sum=0;
}
/******************************************************************/
/* 主函数 */
/******************************************************************/
main()
{
dir=1; //正转
sleep=1; //休眠无效
res=1; //复位无效
step=1;
EX1=1; //外部中断1开
IT1=1; //边沿触发
EA=1; //全局中断开
while(i)
{
step=~step;
Delay(2);
i--;
//需要延时,不延时电机不动,延时太久也不动。改变这个参数可以调整电机转速 ,数字越小,转速越大。
}
dir=1; //反转
while(1)
{
step=~step;
Delay(2);
}
}