Código de máquina paso a paso y descripción controlados por microcontrolador
# include & ltintrins.h & gt//Función de retardo incluida internamente _ nop _(); p>#Definir carácter uchar sin signo
#Definir uint entero sin signo
código uchar FFW[8]={0x01, 0x03, 0x02, 0x06, 0x04, 0x0c, 0x08, 0x 09 }; //Codificación directa de cuatro fases y ocho tiempos
uchar code REV[8]={0x09, 0x08, 0x0c, 0x04, 0x06, 0x02, 0x03, 0x 01} /// /Four -Codificación de inversión de ocho tiempos
sbit k 1 = p3^2; //Girar hacia adelante
sbit k2 = p3^3 //Revertir
sbit k3 = p3^4; //Detener
sbit pitido = p3^6; //Zumbador
/************ *** ********************************************/
/*
/*Retraso t milisegundos
/* Reloj de 11,0592 MHz, retraso de aproximadamente 1 ms.
/*
/********************************* *** *************************/
Retraso no válido
{
uint k ;
mientras(t -)
{
for(k = 0;k & lt125;k++)
{ }
}
}
/************************ ****** *******************************/
retraso nuloB(uchar x )//x * 0.14 ms
{
Uchar I;
mientras(x -)
{
para( I = 0;i<13;i++)
{ }
}
}
/***** ** ************************************************* *** */
Bip no válido()
{
Uchar I;
for(I = 0; i & lt100 ;i++)
{
retrasoB(4);
Bip=! Beep; //Beep invertido
}
Beep = 1; //Apaga el timbre
}
/ *** ********************************************** ** ****/
/*
/*El motor paso a paso gira hacia adelante
/*
/*** *** ********************************************** ** */
void motor_ffw()
{
Uchar I;
uint j;
for( j = 0; j & lt8;J++) //Gira 1*n círculos
{
If (K3==0)
{ break}/ /Salir de este programa de bucle
for(I = 0;I<8;I++) //Gira 45 grados en un ciclo.
{
p 1 = FFW[I]; //Obtener datos
Retraso(2); //Ajustar velocidad
}
}
}
/*************************** *** *******************************/
/*
/* Rotación inversa del motor paso a paso
/*
/*************************** **** *****************************/
Motor_rev() no válido
{
Uchar I;
uint j;
for(j = 0; j & lt8;J++) //Número de vueltas 1×n gira
{
If (K3==0)
{ break}//Salir de este programa de bucle
for(I = 0 ;I<8;I++) //Gira 45 grados en un ciclo.
{
p 1 = REV[I]; //Obtener datos
Retraso(2); //Ajustar velocidad
}
}
}
/*************************** *** *******************************
*
*Programa principal
*
************************************ ******* **********************/
principal()
{
uchar r, N = 64//N número de ciclos de funcionamiento del motor paso a paso
while(1)
{
if(K1 ==0)
{
bip();
for(r = 0; r & ltn; r++)
{
motor _ ffw(); //El motor gira hacia adelante.
If (K3==0)
{ beep(); break }//Salir de este programa de bucle
}
}
si no(K2==0)
{
bip();
para(r = 0; r & ltn; r++)
{
Motor_speed(); // El motor invierte
Si (K3==0)
{ pitido (); break; }//Salir de este programa de bucle
}
}
Otros
p 1 = 0xf 0;
}
}
/************************ *** ********************************/
Espero que esto pueda ayudarte