#include <18f4525.h>
#fuses intrc_io,MCLR,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOPBADEN,NOLVP,NOCPD,NODEBUG,NOWRT
#use delay(clock=4000000)
int8 sdelizq,sdeldel,sdelder,sizq,pared=1,i=0,funcion=0,flanco;
int estado=1;
void detras(){
output_high(pin_b4);
output_low(pin_b5);
output_low(pin_b6);
output_high(pin_b7);
}
void recto(){
output_low(pin_b4);
output_high(pin_b5);
output_high(pin_b6);
output_low(pin_b7);
}
void izq(){
output_high(pin_b4);
output_low(pin_b5);
output_low(pin_b6);
output_low(pin_b7);
}
void der(){
output_low(pin_b4);
output_low(pin_b5);
output_high(pin_b6);
output_low(pin_b7);
}
void grnov(){
if(i<4){
recto();
}else if(i>4){
izq();
}
}
void leer(){
set_adc_channel( 0 );
delay_us(25);
sdelizq=read_adc();
set_adc_channel( 1 );
delay_us(25);
sdeldel=read_adc();
set_adc_channel( 2 );
delay_us(25);
sdelder=read_adc();
set_adc_channel( 3 );
delay_us(25);
sizq=read_adc();
}
void comp1(){
if(sizq<141 && sdelizq<141){
}else if(sdelizq>141 && sdelizq<150 || sizq>141 && sizq<150){
recto();
}else if(sizq>151 || sdelizq>151){
recto();
}
}
void encoder1(){
if(estado==1){
if(input(pin_b0)){
ext_int_edge(0, H_TO_L);
estado=0;
}else{
ext_int_edge(0, L_TO_H);
estado=0;
}
}
}
#int_ext
void ext_isr(){
i++;
if(flanco==0){
ext_int_edge(0,L_TO_H);
flanco=1;
}else{
ext_int_edge(0,H_TO_L);
flanco=0;
}
}
void main() {
delay_ms(333);
// Espero a que todo se estabilice e ...
disable_interrupts(global); // Inicializo el Micro y ...
disable_interrupts(int_timer1); // deshabilitando todo lo no necesario ...
disable_interrupts(int_rda);
disable_interrupts(int_ext);
disable_interrupts(int_ext1);
disable_interrupts(int_ext2);
setup_spi(FALSE);
setup_psp(PSP_DISABLED);
setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
setup_timer_0(RTCC_OFF);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
port_b_pullups(FALSE);
ext_int_edge(0,H_TO_L);
enable_interrupts(int_ext);
enable_interrupts(global);
delay_ms(333);
flanco = 0;
do{
grnov();
}while(true);
}