Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

27/09/2013 #1


Tengo problema con PORT B PIC16F887
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.

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);

          }
   }
27/09/2013 #2

Avatar de ByAxel

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
27/09/2013 #3


Gracias por la respuesta, haré la prueba y comento. En serio gracias por tu tiempo.
12/11/2013 #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.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.