fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

TRISB y PORTB.

13 Respuestas
4 Usuarios
0 Reactions
6,681 Visitas
ionthas
Respuestas: 153
Topic starter
(@ionthas)
Estimable Member
Registrado: hace 17 años

Wenas.

Tengo un problemilla de conceptros, me gustaria saber la diferéncia entre:

#byte PORTB = 0x00000110
#byte TRISB = 0x10000110

El PORTB por lo que se, és el puerto que se utiliza, allí se le dan los valores de entrada/salida.

El TRISB pensaba que tenia la misma función.

Alguien me puede aclarar las diferencias entre esas dos funciones?

Saludos.

Responder
12 respuestas
boops
Respuestas: 1813
(@boops)
Ardero
Registrado: hace 19 años

Wolfskin, Mira, Tris configura la dirección del puerto ,como entrada o como salida. y Port configura el estado o hace la lectura.

Con tris a 1 es una entrada por lo que si lees port leeras a que nivel se encuentra.

Con tris a 0 es una salida por lo que si escribes en port este pondrá el pin a ese nivel.

Responder
ionthas
Respuestas: 153
Topic starter
(@ionthas)
Estimable Member
Registrado: hace 17 años

Wenas BoOpS.

Con TRISB = 0x10000110, configuro los pines del puerto B (Entradas/Salidas) y con PORTB accedo al puerto.

Es algo asi no? xD

En caso de estar en lo cierto, que sentido tiene poner:

#byte PORTB = 0x00000110
#byte TRISB = 0x10000110

Si el PORTB solo sirve para leer, para que declarar entradas y salidas tambien. Eso se hace en el TRISB no?

Saludos y muchas gracias ^^.

Responder
urriellu
Respuestas: 61
(@urriellu)
Trusted Member
Registrado: hace 18 años

#byte es una directiva para el preprocesador de C para poder utilizar cosas como PORTB y TRISB como si fuesen variables.

Al hacer "#byte PORTB = 0b00000110" lo que estás es indicando al compilador que PORTB es una variable que debe almacenarse en la dirección 0b00000110. Es decir, en esa línea le indicas la dirección del registro, no su valor.

//programa de ejemplo
#byte PORTB=0x06
#byte TRISB=0x86

void main(){
int8 foo;

TRISB=0b11100001; //configura los pines 0, 5, 6 y 7 como entradas, y los pines 1, 2, 3 y 4 como salidas

while(1) {
foo=PORTB; //leemos el valor de PORTB
}
}

Por cierto, no te lies con los prefijos: 0x es para hexadecimal y 0b para binario, así que si pones 0x00000110 (que es lo que estabas poniendo) le estás indicando al compilador que "00000110" es un valor hexadecimal (y que, por cierto, es de 4 bytes, no de 1).

Si necesitas más ejemplos para programar en C con CCS para el Skypic (que me imagino que es lo que estás haciendo, como en la campus) mírate mi programa para el skypic.

Responder
ionthas
Respuestas: 153
Topic starter
(@ionthas)
Estimable Member
Registrado: hace 17 años

Muchas gracias Uriellu.

Precisamente esas dudas me surigeron ya que al ver tu estilo de programación en la Campus, (que por cierto, me gusto mucho) me puse a hacerlo como tu :P. Basandome en el programa que tienes en tú pagina.

Por eso ahora estoy un poco liado utilizando el PORTB i el TRISB como si fueran variables xD.

Ahora ya me aclaraste 2 dudas que tenia.

Saludos!!!

P.D: Mira que soy tonto, eso ya me lo explicaste en la Campus.

Responder
Página 1 / 3
Compartir: