• Domingo 29 de Septiembre de 2024, 01:32

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - aprendiz70

Páginas: [1]
1
Microcontroladores / Pic18f8720
« en: Martes 12 de Junio de 2007, 17:10 »
Saludos a todos

Agradecería mucho si me pueden ayudar. Lo que quiero hacer en primer lugar es poder trabajar con el conversor analogo digital del PIC18F8720, la verdad que para un PIC18F452 me funciona, pero al cambiar a un PIC18F8720 no hace lo que quiero que haga( es decir no puedo trabajar con el conversor analogo digital), bueno espero puedan ayudarme, aquí les dejo el programa que estoy tratando de hacer correr.


#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#byte port_b = 0xf81

void main() {

   float medicion;
   float nivel[3]={0x00,0x7F,0xFF};
   int1  CasoA,CasoB;
   set_tris_b(0x00);

   setup_port_a( ALL_ANALOG );
   setup_adc( ADC_CLOCK_INTERNAL );
   set_adc_channel( 0 );
   port_b=0x00;

   do {
      delay_ms(100);
      medicion = Read_ADC();
      CasoA=((medicion>=nivel[0])&&(medicion<nivel[1]));
      CasoB=((medicion>=nivel[1])&&(medicion<=nivel[2]));

      if(CasoA)
      {
           port_b=0x03;
      }
      else
      if(CasoB)
      {
           port_b=0x07;
      }

   } while (TRUE);
}



para el pic18F8720 solo he cambiado el pic y trato de simularlo en el proteus, el programa queda asi:
 
#include <18F8720.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#byte port_b = 0xf81

void main() {

   float medicion;
   float nivel[3]={0x00,0x7F,0xFF};
   int1  CasoA,CasoB;
   set_tris_b(0x00);

   setup_port_a( ALL_ANALOG );
   setup_adc( ADC_CLOCK_INTERNAL );
   set_adc_channel( 0 );
   port_b=0x00;

   do {
      delay_ms(100);
      medicion = Read_ADC();
      CasoA=((medicion>=nivel[0])&&(medicion<nivel[1]));
      CasoB=((medicion>=nivel[1])&&(medicion<=nivel[2]));

      if(CasoA)
      {
           port_b=0x03;
      }
      else
      if(CasoB)
      {
           port_b=0x07;
      }

   } while (TRUE);
}


como ya les habia dicho en el primer programa (pic18F452) hace lo que quiero, es decir saca a traves del puerto b el valor 3  o 7 según corresponda, pero en el segundo caso en donde se cambia el pic al PIC18F8720 no lo hace, ¿alguien sabe por qué?, agradeceria mucho vuestra ayuda (sera el simulador?? , ya que todavia no lo paso a la placa para ver esto, la verdad que no se)

                                            BIT

Páginas: [1]