TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: lalodesant en 16 de Junio de 2012, 02:11:07
-
hola estoy haciendo una pequeña practica en pic c compiler con el 18f4550 en el sistema minimo y con el uln2803. el problema es el siguiente ya me da los diferentes tipos de paso asi que en un solo paso yo elegi el normal , tiene qque aumentar o disminuir la velocidad del motor con un push boton, lo hice con el dip y si me salio. pero lo que kiere el profe es que si le picas un push aumente la velocidad osea menos tiempo en el cambio de bobina y si le picas el otro mas lento osea mas timpo en el cambio. yo pense con una variable de tiempo pero no se como hacerlo ayudaaaaaaaaaaa
#include <18F4550.h> //
#fuses hs,nolvp,nowdt,noprotect
#use delay (clock=20000000) //Declaración del cristal que se ocupa para la operación.
//Habilitar puerto
#byte portb=0XF81
#byte portd=0XF83
//Dirección de la memoria donde se localiza el Puerto b.
//Habilitacion de puertos como entrada o salida
inicializar(){
set_tris_d(0x01); //Configurar el puerto d como entrada
set_tris_b(0x00); //Configurar el puerto b como salida
output_b(0); //Limpio el puerto B de cualquier basura
}
int velocidad;
//Programa principal
void main()
{
inicializar();
while(true)
{
velocidad_ms=(1000)
if(portd ==1){
velocidad_ms=(200)
}
else if(portd==2){
velocidad_ms=(-200)
}
portb=0x0C;
Delay_ms(velocidad);
portb=0x06;
Delay_ms(velocidad);
portb=0x03;
Delay_ms(velocidad);
portb=0x09;
Delay_ms(velocidad);
}
}
-
lo que te puedo corregir a simple vista es que estas usando una variable no declarada "velocidad_ms".
tambien tu variable velocidad la estas declarando con un entero, lo que significa que solo puede tomar valores de -128 a 127. si quieres un rango mas grande debes usar un int1.
otro error es que la funcion delay_ms no recibe como argumento numeros negativos. solo tendrias que alternar entre 100 y 400 por ejemplo.
espero te ayuden los comentarios