PIC12F675 No actuan todas las Salidas

Hola. Tengo un inconveniente.
Quiero algo tan sencillo como utilizar las salidas del PIC12F675, ponerlas a cero o uno para activar unos relevadores.
Yo creo que el problema es del proteus, no puedo creer que no respondan algunas salidas del PIC con el comando OUTPUT_HIGH u OUTPUT_LOW.

Estoy utilizando PIC C de CCS y en el programa muestro lo que quiero hacer.
Anulé algunas líneas porque solo quiero colocar ahora todas las salidas a cero.
PHP:
#include <luceslear.h>

#ZERO_RAM

void main()
{
   int16 valoradc;
  // port_A_pullups(0x01);
   setup_adc_ports(sAN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   
   output_low(RA1);
   output_low(RA2);
   output_low(RA4);
   output_low(RA5);

   while(TRUE)
   {
      //TODO: User Code
 /*     set_adc_channel(ADC);
      delay_us(50);
      valoradc=read_adc(); delay_us(50);
 
      if(valoradc>900&&valoradc<=1024)
         delay_ms(2500);
      if(valoradc>800&&valoradc<=899)
         delay_ms(2000);
      if(valoradc>700&&valoradc<=799)
         delay_ms(1750);
      if(valoradc>600&&valoradc<=699)
         delay_ms(1500);
      if(valoradc>500&&valoradc<=599)
         delay_ms(1250);
      if(valoradc>400&&valoradc<=499)
         delay_ms(1000);
      if(valoradc>300&&valoradc<=399)
         delay_ms(550);
      if(valoradc>200&&valoradc<=299)
         delay_ms(500);
      if(valoradc>0&&valoradc<=199)
         delay_ms(250);
      */
      output_low(RA4); //delay_ms(550); output_High(RA4);
      output_low(RA5); //delay_ms(550); output_High(RA5);
      
    /*  delay_ms(750);
      output_low(RA0); 
      output_low(RA1); 
      delay_ms(250); 
      output_High(RA0);
      output_High(RA1);*/
   }

}
Está configurado así el PIC con los fuses y demás.
PHP:
#include <12F675.h>
#device ADC=10

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOBROWNOUT               //No brownout reset

#use delay(crystal=1MHz)
//#use STANDARD_IO( A )
#use FIXED_IO( A_outputs=PIN_A1,PIN_A2,PIN_A5,PIN_A4 )

#define ADC   PIN_A0
#define RA1   PIN_A1
#define RA2   PIN_A2
#define RESET   PIN_A3
#define RA4   PIN_A4
#define RA5   PIN_A5
No entiendo por qué en proteus 8, solo pone a cero AN1 y AN2.
AN4 y AN5 como que no funcionaran. No sé porque es.
 
Última edición por un moderador:
¿En qué línea indicas que el puerto A es de salida?
 
AN4 y AN5 como que no funcionaran. No sé porque es.
AN4 y AN5 no existen, AN3 sí y pertenece al pin 3 o GP4.

En tu programa tienes establecido que se usará un cristal como fuente de reloj.
Entonces por lógica, los pines GP4 y GP5 se usarán para el oscilador a cristal.
De esa forma no se pueden usar como pines estándar I/O, a menos que se use el oscilador interno.
 
Tenés razon, se me paso eso, porque quería usar el interno y no preste atención. Creo que hay otro error también Nose si este pic tiene oscilador interno de 1 Mhz
 
Es de 4Mhz el Pic12f675, ahora anda perfecto todo. Lo que me llamo la atencion, cuando use el wizard juro que habia elegido oscilador interno, pero bueno listo, todo perfecto ahora :) asique fue eso del crystal el error.
 
Es mejor que no uses el Project Wizard porque no siempre da buenos resultados.
De preferencia lee la hoja de datos y estudia como funcionan los registros y sus bits de configuración.
Por lo general los fuses de la palabra de configuración vienen casi al final del documento.

Ya cuando tengas algo más en claro sobre lo que necesitas configurar, usa el "Device Editor" porque ahí también encontrarás información del PIC y los fuses con la sintaxis del PIC C Compiler.
Device Editor.jpg

Suerte.​
 
Atrás
Arriba