Tengo problema con PORT B PIC16F887

#1
Hola buenos días foreros, tengo una interrogante y a ver si alguien me echa un cable al respecto, estaba empezando a programar un 16F887 con hitech c en mplab, me ocurre que quiero utilizar el puerto B como salida para alimentar un puente H, si manejo los puertos como:

RB=0;
RB1=1;

Etc., simplemente el programa no funciona, no me presenta voltaje en los pines.

El programa compila sin problemas.

En cambio si utilizo portb =0bXXXXXXXX;

El pograma funciona sin más problema.
:confused:
Espero alguien me pueda ayudar, dejo el código a continuación:

Código:
#include <pic.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>



__CONFIG(FOSC_XT & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF);
__CONFIG(BOR4V_BOR40V & WRT_OFF);

#define	XTAL_FREQ	20MHZ
#include "Delay.h"
#include "Delay.c"
#include "lcd.h"
#include "lcd.c"


//char buf1[3],buf2[3];
//definiciones del PORT B para el LCD


int i=64,h,j; unsigned int x=0;
unsigned char sensor[5]= 0;


void main(void)
{

TRISA= 255;
TRISB=0;
PORTB=0;
TRISE=255;
TRISC= 0;
TRISD= 0;
PORTC=0;
PORTD=0;
WPUB=0;
OPTION_REG=0;
GIE=0;			// Desactiva las interrupciones
INTCON=0;
IOCB=0;
//*************************Puerto AD*******************
ADCON1=0b10000000;  //Resultado justificado a la derecha
ADCON0=0b11000000;  //FOSC/32
ADON=0;             //
ADIE  = 0;
//*****************************************************
//*****************************************************
while(1)
        {
    RB0=1;
    RB1=0;
    RB2=1;
    RB3=1;
    RB4=0;
    RB5=1; 
//PORTB=0b00101101;
 DelayMs(2000);



    RB3=0;
    RB4=1;
    RB5=1;
//PORTB=0;
    DelayMs(2000);

          }
   }
 
#2
Hola.
Para el PORTB aparte de configurar el TRISx, falta establecer en ANSELH para que trabaje como IO digital que este puerto tambien puede ser para entradas analogas.
Utiliza PORTBbits.RBx = 0;
Si usas MPLABX usa las teclas Ctrl + Espacio y aparecen opciones de autocompletar.
Y Revisa la hoja de datos.

Saludos
 
#4
Muchas gracias y disculpa la demora, no había tenido tiempo de entrar al foro, de hecho si hice el cambio que me sugeriste y con eso empezó a trabajar, no tenía en cuenta el ANSELH debido a que me confundió cierta nota que me hizo prescindir de la instrucción:

Note: The ANSELH register must be initialized
to configure an analog channel as a digital
input. Pins configured as analog inputs will
read ‘0’.


Saludos.
 

Temas similares

Arriba