#include "16f722.h" #fuses NOWDT,PUT,NOBROWNOUT,NOPROTECT,INTRC_IO,PLLEN,MCLR,NOVCAP #use delay(clock=16000000) #byte PORTA = 0x05 #byte PORTB = 0x06 #byte PORTC = 0x07 #byte TRISA = 0x85 #byte TRISB = 0x86 #byte TRISC = 0x87 #byte OSCCON = 0x90 //Motores #bit MotIzqEnable = PORTC.1 #bit MotIzqIn1 = PORTC.0 #bit MotIzqIn2 = PORTC.3 #bit MotDerEnable = PORTC.2 #bit MotDerIn1 = PORTC.5 #bit MotDerIn2 = PORTC.4 //Sensores #bit SnsCentDcho = PORTA.1 //Colores #define Fondo 0 #define Pista 1 //Configura el microcontrolador inline void Config() { TRISA = 0xFF; //todos los bits del PORTA como entradas TRISC = 0b11000000; OSCCON = 0b00110000; //oscilador interno a 16MHz } //Motor izquierdo: Avanzar void MotIzqAvanzar() { MotIzqEnable=1; MotIzqIn1=1; MotIzqIn2=0; } //Bloquea el motor izquierdo (detencion rapida) void MotIzqDetener() { MotIzqEnable=1; MotIzqIn1=0; MotIzqIn2=0; } //Motor derecho: Avanzar void MotDerAvanzar() { MotDerEnable=1; MotDerIn1=1; MotDerIn2=0; } //Bloquea el motor derecho (detencion rapida) void MotDerDetener() { MotDerEnable=1; MotDerIn1=0; MotDerIn2=0; } void main(){ Config(); while(1){ if(SnsCentDcho==Pista) { MotIzqAvanzar(); MotDerAvanzar(); } else { MotIzqDetener(); MotDerDetener(); } } }