Cordial saludo caballeros:
Tengo un pequeño problema con la recepción de un bit en el puerto A del PIC18F252 programado en el compilador C18 de microchip (en ensamblador no me da problemas)... El problema es que no me detecta la activación de una entrada del Puerto A, específicamente el pin RA1. Lo curioso del asunto es que pruebo el mismo código para otros puertos y lo ejecuta perfectamente (Puerto B-RB3). Saben de algo en lo cual no me haya fijado?, o que por uno u otro asunto esté obviando?..., a continuación coloco el código que estoy ejecutando; si encuentran librerías que no estoy usando es porque el fragmento hace parte de un programa más grande....:
//************************************************************************************************
//El programa detecta si hay un HIGH en el pin RB3, si es así coloca un alto en RB1, de otro modo un bajo.
//Igualmente realiza el mismo procedimiento con RA1, pero colocando un alto en RB0.
#include <p18f252.h>
#include <stdlib.h>
#include <delays.h>
#include <adc.h> //Librería de conversor Análogo Digital de 10 bits.
#include <sw_i2c.h>
//************************************************************************************************
//PROTOTIPOS
void definicion_puertos(void);
void main()
{
definicion_puertos();
if (PORTBbits.RB3 == 1)
{
PORTBbits.RB1 = 1;
}
else
{
PORTBbits.RB1 = 0;
}
if (PORTAbits.RA1 == 1)
{
PORTBbits.RB0 = 1;
}
else
{
PORTBbits.RB0 = 0;
}
while (1) //Ciclo infinito.
{
}
}
void definicion_puertos()
{
//Define si los pines son de entrada o salida.
TRISA=0b00000011; //Pines RA0 (AD0)y RA1 (EOM) de entrada.
TRISC=0X00;
TRISB=0B00001000; //RB3 ENTRADA
//Define el estado inicial de los pines
PORTB=0x00;
PORTC=0x00;
PORTA = 0b00001100; //Salidas RA2 y RA3
}
Se me olvidaba comentar que lo estoy simulando en el PROTEUS.
Saludos.