Problema trisb portb

Hola a todos,

Estoy teniendo un problema al programar un pic, concretamente el 18F4458.

Con un programa tan simple como el que aqui os detallo:

---------------------------------------
#include <p18f4458.h>

void main(void){

TRISB=0x00;
PORTB=0x07;

while (1);

}
-----------------------------------------

Resulta que despues de la asignación, portb únicamente me carga los bits 1 - 2 y 3.

En la asignación de arriba, el valor que tomaría sería 0x00.

Alguien me puede explicar que pasa?

Gracias!
 
Hola, no conozco mucho de Basic o C, pero en las declaraciones algo se parece a Assembler.
En primer lugar asegurate de trabajar en el banco correcto cuando uses TRISB ya que se usa para usar a tal puerto como salida o como entrada, al colocarle 0x00 stas llamando a todo el puerto b como salida.
Ahora con usart PORTB y en el banco correcto es cuando recien le das un valor a un bit de dicho puerto.
Espero haber sido claro.

Saludos.
Cerebro
 
Hola a todos :D

Si entendí bien, y en PORTB sólo se ponen en alto RB0, RB1 y RB2, parece que el programa está funcionando tal y como le ordenaste.

TRISB = 0x00 (Todo el PORTB como salidas)

PORTB = 0x07 (El valor de todo el PORTB será 7)

Lo que en binario se traduce a: MSB - 00000111 - LSB.

Sólo RB0, RB1 y RB2 serán altos.

TRISB Sólo es el control para que el micro sepa que pines del PORTB serán entradas o salidas.
PORTB selecciona directamente el valor de cada pin.

Espero y te sea útil esta información
Saludos al foro :)
 
Atrás
Arriba