0 Usuarios y 1 Visitante están viendo este tema.
#include <18F1320.h> #fuses HS,NOWDT,NOPROTECT#use delay(clock=20000000) int pot1a, pot1b, pot2a, pot2b, aux1, aux2, diferencial, diferencial1, variable, conteo; int1 boleano=1; VOID MAIN() {setup_adc(ADC_CLOCK_INTERNAL);setup_adc_ports(ALL_ANALOG); set_tris_b(0x00); output_high(PIN_B4); // rutina para encender el LED durante 1 segundo delay_ms(250); delay_ms(250); delay_ms(250); delay_ms(250); output_low(PIN_B4); conteo=0; //A2 entrada del opam //A3 salida a los 2n2222 while(true) { set_adc_channel(0);//the next read_adc call will read channel 0 delay_us(10); pot1a=read_adc(); set_adc_channel(1);//the next read_adc call will read channel 0 delay_us(10); pot2a=read_adc(); // PRIMERA ETAPA.- HACEMOS LA REFERENCIA 0, Por lo que restamos 13 a la //magnitud adquirida. if (pot1a<13){ pot1a=0; } else { pot1a=pot1a-13; } if (pot2a<13) { pot2a=0; } else { pot2a=pot2a-13; } // SEGUNDA ETAPA.- Si el valor de POT1A Y/O POT2A es menor a 36, AUX vale 1. //Pero si son mayor a 36, descomponemos el 2 bloques y la variable AUX vale 2 if (pot1a<=36) { aux1=1; } if (pot1a>36) { pot1b=pot1a-36; pot1a=36; aux1=2; } if (pot2a<=36) { aux2=1; } if (pot2a>36) { pot2b=pot2a-36; pot2a=36; aux2=2; } // TERCERA ETAPA. Alzamos todos los pines. output_high(PIN_B3); output_high(PIN_B2); output_high(PIN_B1); output_high(PIN_B0); // CUARTA ETAPA, Iniciamos comparaciones. if(aux1>aux2) // si la lectura ADC1 es mayor a ADC2 { diferencial=(36+pot1b)-pot2a; if (diferencial<=36) { delay_ms(1); delay_us (248-(pot1b*7)); output_low(PIN_B3); delay_us(diferencial*7); output_low(PIN_B1); delay_us(pot2a*7); delay_us(pot2a*7); output_low(PIN_B0); delay_us(diferencial*7); output_low(PIN_B2); delay_ms(18); delay_us(248-(pot1b*7)); } else { diferencial1=diferencial-36; delay_ms(1); delay_us(248-(pot1b*7)); output_low(PIN_B3); delay_us(252); delay_us(diferencial1*7); output_low(PIN_B1); delay_us(pot2a*7); delay_us(pot2a*7); output_low(PIN_B0); delay_us(252); delay_us(diferencial1*7); output_low(PIN_B2); delay_ms(18); delay_us(248-(pot1b*7)); } } else if (aux1<aux2) { diferencial=(36+pot2b)-pot1a; if (diferencial<=36) { delay_ms(1); delay_us(248-(pot2b*7)); output_low(PIN_B1); delay_us(diferencial*7); output_low(PIN_B3); delay_us(pot1a*7); delay_us(pot1a*7); output_low(PIN_B2); delay_us(diferencial*7); output_low(PIN_B0); delay_ms(18); delay_us(248-(pot2b*7)); } else { diferencial1=diferencial-36; delay_ms(1); delay_us(248-(pot2b*7)); output_low(PIN_B1); delay_us(252); delay_us(diferencial1*7); output_low(PIN_B3); delay_us(pot1a*7); delay_us(pot1a*7); output_low(PIN_B2); delay_us(252); delay_us(diferencial1*7); output_low(PIN_B0); delay_ms(18); delay_us(248-(pot2b*7)); } } else if (aux1==aux2 && aux1==1) { if (pot1a>pot2a) { diferencial=pot1a-pot2a; delay_ms(1); delay_us(252); delay_us(248-(pot1a*7)); output_low(PIN_B3); delay_us(diferencial*7); output_low(PIN_B1); delay_us(pot2a*7); delay_us(pot2a*7); output_low(PIN_B0); delay_us(diferencial*7); output_low(PIN_B2); delay_ms(18); delay_us(252); delay_us(248-(pot1a*7)); } else if (pot1a<pot2a) { diferencial=pot2a-pot1a; delay_ms(1); delay_us(252); delay_us(248-(pot2a*7)); output_low(PIN_B1); delay_us(diferencial*7); output_low(PIN_B3); delay_us(pot1a*7); delay_us(pot1a*7); output_low(PIN_B2); delay_us(diferencial*7); output_low(PIN_B0); delay_ms(18); delay_us(252); delay_us(248-(pot2a*7)); } else if (pot1a==pot2a) { delay_ms(1); delay_us(252); delay_us(248-(pot1a*7)); output_low(PIN_B1); output_low(PIN_B3); delay_us(pot1a*7); delay_us(pot1a*7); output_low(PIN_B2); output_low(PIN_B0); delay_ms(18); delay_us(252); delay_us(248-(pot1a*7)); } } else if (aux1==aux2 && aux1==2) { if (pot1b>pot2b) { diferencial=pot1b-pot2b; delay_ms(1); delay_us(248-(pot1b*7)); output_low(PIN_B3); delay_us(diferencial*7); output_low(PIN_B1); delay_us(252); delay_us(pot2b*7); delay_us(pot2b*7); delay_us(252); output_low(PIN_B0); delay_us(diferencial*7); output_low(PIN_B2); delay_ms(18); delay_us(248-(pot1b*7)); } else if (pot1b<pot2b) { diferencial=pot2b-pot1b; delay_ms(1); delay_us(248-(pot2b*7)); output_low(PIN_B1); delay_us(diferencial*7); output_low(PIN_B3); delay_us(252); delay_us(pot1b*7); delay_us(pot1b*7); delay_us(252); output_low(PIN_B2); delay_us(diferencial*7); output_low(PIN_B0); delay_ms(18); delay_us(248-(pot2b*7)); } else if (pot1b==pot2b) { delay_ms(1); delay_us(248-(pot1b*7)); output_low(PIN_B1); output_low(PIN_B3); delay_us(252); delay_us(pot1b*7); delay_us(pot1b*7); delay_us(252); output_low(PIN_B2); output_low(PIN_B0); delay_ms(18); delay_us(248-(pot1b*7)); } } set_adc_channel(2); delay_us(10); variable=read_adc(); if (variable>=150 && CONTEO==250) { boleano=!boleano; if (boleano==1) { output_high(PIN_A3); } if (boleano==0) { output_low(PIN_A3); } CONTEO=0; } conteo=conteo+1; IF (conteo==251) { conteo=250; } pot1a=0; pot1b=0; pot2a=0; pot2b=0; aux1=0; aux2=0; diferencial=0; diferencial1=0; variable=0; } }
Pues a mi si me compilo tu programa , tienes el PIC C?, si no puede ser que sea tu programa. Saludos