puertos de entrada_salida digital

14
PUERTOS DE ENTRADA /SALIDA DIGITAL

Upload: reyna-adilia-bautista

Post on 05-Dec-2014

24 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Puertos de Entrada_salida Digital

PUERTOS DE ENTRADA /SALIDA DIGITAL

Page 2: Puertos de Entrada_salida Digital

Introducción.

Los microcontroladores PIC tienen terminales de entrada/salida divididos en puertos, que se encuentran nombrados alfabéticamente A,B,C,D, etc.

Cada puerto puede tener hasta 8 terminales que, de forma básica, se comportan como una entrada/salida digital.

Page 3: Puertos de Entrada_salida Digital

Considerando a los puertos como entradas/salidas digitales, los puertos se caracterizan por ser independientes, es decir, se puede programar cada terminal de puerto para que se comporte como una entrada o una salida digital.

La habilitación como entrada o salida se realiza a través del registro TRISx (TRISA: 85h, TRISB:86h, TRISC:87h, TRISD: 88h o TRISE:89h en el BANCO 1 de memoria RAM).

Page 4: Puertos de Entrada_salida Digital

La gestión del bus de datos se realiza a través de los registros PORTx (PORTA:05h, PORTC:06h,PORTC:07h, PORTD:08h o PORTE:09h en el BANCO 0 de la memoria RAM).

En lenguaje C se pueden gestionar los puertos de dos formas:

Se declaran los registros TRISX y PORTX definiendo su posición en la memoria RAM como variables de C.

Utilizando las directivas especificas del compilador (#USE FAST_IO, #USE FIXED_IO, #USE STANDARD_IO).

Page 5: Puertos de Entrada_salida Digital

A través de la RAM Se definen los registros PORTx y TRISx como

bytes y se sitúan en la posición correspondiente de la memoria RAM. La directiva utilizada de C es #BYTE:

#BYTE variable = constante;

#BYTE TRISA = 0x85 // Variable TRISA en 85h. #BYTE PORTA = 0x05 // Variable PORTA en 05h. #BYTE TRISB = 0x86 // Variable TRISB en 86h. #BYTE PORTB = 0x06 // Variable PORTB en 06h. #BYTE TRISC = 0x87 // Variable TRISC en 87h. #BYTE PORTC = 0x07 // Variable PORTC en 07h.

Page 6: Puertos de Entrada_salida Digital

Una ves definidas estas variables se pueden configurar y controlar los puertos a través de los comandos de asignación:

TRISA = 0xFF; //8 terminales de entrada.TRISB = 0x00; //8 terminales de salida.TRISC = 0x0F; // 4 terminales de mayor peso de

salida, 4 terminales de menor peso de entrada.

Page 7: Puertos de Entrada_salida Digital

Escritura en los puertos:

PORTC = 0x0A; // salida de datos 00001010 por el puerto C.

Lectura de puertos:

Valor= PORTA; // asigna el dato del puerto A a la variable valor.

Page 8: Puertos de Entrada_salida Digital

Existen unas funciones de C que permiten trabajar bit a bit con los registros o variables definidas previamente:

bit_clear(var,bit); //pone a 0 el bit especifico (0 a 7) de la variable.

bit_set(var,bit); //pone a 1 el bit especifico (0 a 7) de la variable.

bit_test (var,bit); //muestra el bit especifico (0 a 7) de la variable.

swap(var); // intercambia los 4 bits de mayor peso por los 4 de menor peso de la variable.

bit_set (PORTC,4); // “saca un 1 por la terminal RC4

If (bit_test (PORTB,0)==1) bit_clear(PORTB,1) //si RB0 es 1 borra RB1.

Page 9: Puertos de Entrada_salida Digital

A través de las directivas.

El compilador ofrece funciones predefinidas para trabajar con los puertos:output:X(valor); //Por el puerto correspondiente saca el valor (0-255).

input_X(); //se obtiene el valor en el puerto correspondiente.

set_tris_X(valor); //carga el registro TRIS con el valor (0-255).

port_b_pullups(valor); //mediante valor=TRUE o valor= FALSE habilita

// o deshabilita las resistencias de pull-up en PORTB.

get_trisX() //devuelve el valor del registro TRISx.

Page 10: Puertos de Entrada_salida Digital

output_A(0xFF); //saca por el puerto A el valor 1111.

valor= input_B(); // lee el valor del puerto B.

Set_tris_C(0x0F); // configura el puerto C: C0-C3 entradas, C4-C7 salidas.

Page 11: Puertos de Entrada_salida Digital
Page 12: Puertos de Entrada_salida Digital
Page 13: Puertos de Entrada_salida Digital
Page 14: Puertos de Entrada_salida Digital