Error de Proteus o Error de Programa?

#1
Que tal amigos,

Estuve haciendo algunas pruebas con Pic16f628 que nunca lo use; estoy usando Pic C 4.78 y Proteus 7.8, y sucede que no puedo configurar los pines 5 y 6 del Puerto A del mismo, revise toda la info, Probe a desactivar los fuses necesarios y nada.. simplemente no me funciona... a proposito pase el mismo codigo al puerto B y funciona correctamente... me gustaria que puedan ayudarme a encontrar el problema... el codigo en cuestion es este:

Código:
#include <16F628A.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                    //Internal RC Osc
#FUSES NOPUT                   //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                     //Master Clear pin enabled
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
//#FUSES NORESERVED                 //Used to set the reserved FUSE bits
#use delay(clock=4000000)

//Declaracion de variables globales
//#define Retardo delay_ms(500)//Nombra a delay_ms() como Retardo

void main()
{
   int16 A=1;
   //Configuracion de puertos E/S
   SET_TRIS_A(0x00);//Configura el puerto A: 0=Salida; 1=Entrada
   Set_Tris_B(0x00);
   output_A(0x00); //Limpia el registro del puerto
   output_B(0x00);
   //Estructura Programa principal
   
   while (A!=5)
   {
      delay_ms(250);
      output_bit( PIN_A0,1);
      delay_ms(250);
      output_bit(PIN_A1,1);
      delay_ms(250);
      output_bit(PIN_A2,1);
      delay_ms(250);
      output_bit(PIN_A3,1);
      delay_ms(250);
      output_bit(PIN_A4,1);
      delay_ms(250);
      output_bit(PIN_A5,1);
      delay_ms(250);
      output_bit(PIN_A6,1);
      delay_ms(250);
      output_bit(PIN_A7,1);
      delay_ms(250);
      
      output_bit( PIN_B0,1);
      delay_ms(250);
      output_bit(PIN_B1,1);
      delay_ms(250);
      output_bit(PIN_B2,1);
      delay_ms(250);
      output_bit(PIN_B3,1);
      delay_ms(250);
      output_bit(PIN_B4,1);
      delay_ms(250);
      output_bit(PIN_B5,1);
      delay_ms(250);
      output_bit(PIN_B6,1);
      delay_ms(250);
      output_bit(PIN_B7,1);
      delay_ms(250);
      output_B(0x00);
      A++;
   }
}
se supone que debería mostrar una secuencia de encendido de leds... pero sucede que a momento de simular en proteus.. los pines 5 y 6 del puerto no encienden... intente probando otra version de proteus y nada... probe a usar microC transportando el código y el problema persiste.. es por eso que recurro al foro para que puedan ayudarme...

de antemano les agradezco su ayuda y les dejo los archivos con los que estoy probando..
 

Adjuntos

#2
El F628 tiene comparadores análogos en el PORTA y por defecto están activados, te falta desactivar y hacer que el PORTA trabaje como IO digitales.

Y generalmente es error del crack :LOL:
 
#3
sucede que no puedo configurar los pines 5 y 6 del Puerto A
Aparte de lo que te mencionó ByAxel sobre desactivar los comparadores análogos, resulta que en el PIC16F628A el pin RA4 es de drenador abierto, y el pin RA5 funciona ya sea como reset o únicamente como entrada.
Así que no podrás encender un LED con el ánodo en RA4, y tampoco lo podrás hacer por el pin RA5.

Lee la hoja de datos.
 
#4
uff...

Les agradezco muchísimo por su ayuda, volveré al data ya mismo. A veces creo que me gusta más darme de topetazos en el camino ... que lograr el objetivo final... :oops:

Lo gracioso es que ni siquiera me hacían falta esos condenados pines RA4 y RA5 para lo que tengo tengo pensado hacer. Pero no quería quedarme con la duda... Les agradezco una vez, me libraron de otro día de ensayo y error y error y error y...


Un saludo.
 

Temas similares

Arriba