Autor Tema: Hola ayuda para un programa PIC  (Leído 1375 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado xelieve

  • PIC10
  • *
  • Mensajes: 23
Hola ayuda para un programa PIC
« en: 18 de Abril de 2014, 20:14:53 »
El problema es cuando lo quiero compilar con el PCW no me agarra, si alguien me puede ayudar

Citar
#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;
}
}

Desconectado PabloPic

  • PIC10
  • *
  • Mensajes: 15
Re: Hola ayuda para un programa PIC
« Respuesta #1 en: 18 de Abril de 2014, 21:56:09 »
Pues a mi si me compilo tu programa , tienes el PIC C?, si no puede ser que sea tu programa. Saludos

Desconectado xelieve

  • PIC10
  • *
  • Mensajes: 23
Re: Hola ayuda para un programa PIC
« Respuesta #2 en: 18 de Abril de 2014, 22:40:55 »
Pues a mi si me compilo tu programa , tienes el PIC C?, si no puede ser que sea tu programa. Saludos

si pero parece q tengo el programa dañado, puedes pasarme el hex o un lick para descargar es q es para algo urgente