Estoy empezando a programar el PIC16F887, mi primer programa consiste en recibir datos por puerto B y trasladarlos al puerto A. El problema esta en que habilito las resistencias de pullups sin embargo en las terminales RB7 , RB6 y RB3 no se activan pues estos pines siempre marcan 0, para resolver el problema les pongo las resistencias de pullups fisicamente, con lo cual los pines RB7 y RB6 me arrojan los resultados esperados, sin embargo el pin RB3 no, al principio pense que se debia al puerto al que mando los datos pero no es asi puesto que despues pase los datos del puerto b al puerto c y al puerto d y el resultado es el mismo el pin 3 de cada puerto no conmuta aunque yo tenga en mi entrada de RB3 nivel bajo o alto, dejo mi programa esperando que alguien me pueda ayudar, de antemano gracias.
#include <16F887.h>
#use delay(clock=8000000)
#fuses NOWDT,NOPUT,NOPROTECT,NOMCLR,INTRC_IO,NOBROWNOUT,LVP,NOPROTECT,NOCPD,NOIESO,NOFCMEN,NODEBUG
#byte portb=0x06
#byte porta=0x05
#byte portc=0x07
#byte portd=0x08
#byte porte=0x09
#use fast_io(A)
#use fast_io(B)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)
void main()
{
setup_oscillator(OSC_8MHZ|OSC_INTRC); // configura el oscilador interno con 8MHZ
DISABLE_INTERRUPTS(global);
DISABLE_INTERRUPTS(INT_AD);
DISABLE_INTERRUPTS(INT_RB3);
setup_adc_ports( NO_ANALOGS );
SETUP_ADC(adc_off);
SETUP_CCP1(CCP_OFF);
SETUP_CCP2(CCP_OFF);
SETUP_TIMER_2(T2_DISABLED);
SETUP_TIMER_1(T1_DISABLED);
set_tris_b(0b11111111);
set_tris_a(0b00000000);
set_tris_c(0b00000000);
set_tris_d(0b00000000);
set_tris_e(0b00000000);
porta=0;
portc=0;
portd=0;
porte=0;
PORT_B_PULLUPS(pin_b0);
PORT_B_PULLUPS(pin_b1);
PORT_B_PULLUPS(pin_b2);
PORT_B_PULLUPS(pin_b3);
PORT_B_PULLUPS(pin_b4);
PORT_B_PULLUPS(pin_b5);
PORT_B_PULLUPS(pin_b6);
PORT_B_PULLUPS(pin_b7);
while (true)
{
porta=portb;
portc=portb;
portd=portb;
} /// fin de bucle while
} /// fin de funcion principal main