hola buenas a todos, tengo un problema con el pic 16f88 lo que pasa es que tengo un proyecto de un punte automatico con sensores, bueno lo que pasa es que ya tengo el codigo en c especificamente lo hice en mikroc for pic el codigo lo prondre mas abajo, probe el codigo ya compilado (el archivo .hex)en el proteus 7.9 y al simularlo todo me resulta bien, tal y como debe de hacer las cosas el pic pero a la hora de pasarlo a pic no me realiza nada, primeramente pense que eran las configuraciones ya que estoy utilizando el oscilador interno del pic pero ya las modifique varias veces y no pasa nada, el pic no realiza nada y no se que pueda estar mal espero y me puedan ayudar gracias.
unsigned short bandera=0; //variable para comparar y activar el led verde
void giroder() //funcion para hacer girar el motor hacia la der
{
do{
PORTB.F4=1;
PORTB.F5=0;
}while(PORTB.F6==0); //evalua si el sensor de toque1 se activa en la parte de arriva
PORTB.F4=0;
}
void giroizq() //funcion para hacer girar el motor hacia la izq
{
do{
PORTB.F4=0;
PORTB.F5=1;
}while(PORTB.F7==0); //evalua si el sensor de toque2 se activa en la parte de abajo
PORTB.F5=0;
}
void main() {
OSCCON=0x60; //oscilador a 4mhz
while(OSCCON.IOFS==0); //espera hasta que el oscilador interno este estable
ANSEL=0; //etradas y salidas digitales
PORTA=0;
TRISA=0x21;
PORTB=0;
TRISB=0xC1; //se configuran los puertos
while(1)
{
if(Button(&PORTB,0,1,1)) //espera a que el sensor de proximidad se active
{
bandera=1;
PORTB.F1=0; // APAGA LED VERDE }
PORTB.F2=1; //PRENDE LED NARANJA }
delay_ms(2000); //LO DEJA PRENDIDO POR 2 SEGUNDOS } control de semaforo
PORTB.F2=0; // APAGA LED NARANJA }
PORTB.F3=1; //PRENDE LED ROJO }
giroder(); //INICIA EL GIRO DEL MOTOR HACIA LA DERECHA
}
else if(bandera==0)
{
PORTB.F1=1; //PRENDE LED VERDE
}
if(Button(&PORTA,0,100,0)) //espera a que el sensor de paso se active
{
giroizq(); //inicia giro del motor hacia la izquierda
PORTB.F3=0; //APAGA LED ROJO
bandera=0; //PONE A CERO PARA PRENDER LED VERDE
}
}
}
