Está en la página 1de 17

Sistemas microcontrolados

Puertos de Entrada y Salida


Puertos de I/O
Los puertos de entrada/salida (Input/Output) son el medio para que
un microcontrolador se comunique con su entorno.

Los puertos son de propósito general, es decir, el usuario puede


utilizarlos para monitorear entradas o generar salidas como mejor le
convenga, no obstante, todas las terminales tienen dos o tres
funciones alternas, esto es necesario porque muchos de los recursos
internos requieren información del exterior.

Sistemas microcontrolados 2
Puertos de I/O

ATMega328P

Incluye 3 puertos, todas las terminales con más de una


función alterna.
PB – 8 bits
PC – 7 bits
PD – 8 bits
Sistemas microcontrolados 3
Puertos de I/O

Incluye 11 puertos, todas las terminales con más de una función alterna.

PA – 8 bits PD – 8 bits PG – 6 bits PK – 8 bits


PB – 8 bits PE – 8 bits PH – 8 bits PL – 8 bits
PC – 8 bits PF – 8 bits PJ – 8 bits
Sistemas microcontrolados 4
Puertos I/O como entrada
Usando Pull-up o Pull-down

Con filtro

Sistemas microcontrolados 5
Puertos I/O como entrada
Activando la resistencia interna de Pull-up

Sistemas microcontrolados 6
Registros para el control del Puerto I/O
Entrada o salida

Pull-up

Salida

Entrada

Sistemas microcontrolados 7
Registros para el control del Puerto I/O
Los puertos I/O se controlan mediante tres registros:

 DDRx: Registro que define la dirección del puerto con el


apoyo de un buffer. Las direcciones se pueden configurar de
manera independiente, para cada terminal.
 1 – Salida

 0 – Entrada

 PORTx: Registro conectado a la terminal del puerto a través


del buffer, en PORTx se escribe cuando el puerto está
configurado como salida. Si el puerto es entrada sirve para
habilitar un resistor de Pull-Up.

 PINx: Si el puerto es entrada, este registro sirve para hacer


lecturas directas en las terminales. Cuando es salida, al
escribir un 1 lógico se conmuta el valor almacenado.

46
Sistemas microcontrolados 8
Puertos de I/O
Definición I/O para el ATMega328P

Sistemas microcontrolados 9
Puertos de I/O – ATMega328P
Registros de control I/O para el puerto B

Sistemas microcontrolados 10
Puertos de I/O – ATMega328P
Registros de control I/O para el puerto C

Sistemas microcontrolados 11
Puertos de I/O – ATMega328P
Registros de control I/O para el puerto D

Sistemas microcontrolados 12
Puertos de I/O y Pull-Up

Configuración de los registros DDRx, PORTx y PINx

x = {B, C, D} para el ATMega328P

REGISTRO 0 1 DESCRIPCION
DDRx Entrada Salida Configura el puerto como entrada o salida
PORTx (In) Pull-up off Pull-up on Habilita las resistencias de pull-up
PORTx (Out) Nivel low Nivel High Determina el nivel lógico de los bits
PINx Solo lectura Solo lectura Lee el estado del puerto

Sistemas microcontrolados 13
Manejo de Bits y Puertos I/O
Ejemplo de la operación AND
0B00000011 &
PORTB = 0B00000011 0B00000110
PORTB = PORTB & 0B00000110
PORTB &= 0B00000110 0B00000010

Ejemplo de la operación OR
0B00000011 |
PORTB = 0B00000011 0B00000110
PORTB = PORTB | 0B00000110
PORTB |= 0B00000110 0B00000111

Ejemplo de la operación XOR


0B00000011 ^
PORTB = 0B00000011 0B00000110
PORTB = PORTB ^ 0B00000110
PORTB ^= 0B00000110 0B00000101

Sistemas microcontrolados 14
Manejo de Bits y Puertos I/O
Ejemplo de la operación NOT

PORTB = ~0B00000011
Resultado = 0B11111100

Desplazamiento a la derecha Desplazamiento a la izquierda

PORTB = 0B00000011 PORTB = 0B00000011


PORTB = PORTB >> 1 PORTB = PORTB << 2
PORTB >>= 1 PORTB <<= 2
Resultado = 0B00000001 Resultado = 0B00001100

Registro en sistema binario, decimal y hexadecimal


Binario Decimal Hexadecimal
DDRB=0B00000000; DDRB=0; DDRB=0x00;
DDRB=0B11111111; DDRB=255; DDRB=0xFF;
DDRB=0B01010101; DDRB=85; DDRB=0x55;

Sistemas microcontrolados 15
Manejo de Bits y Puertos I/O
Configuración del pin PB6 (PORTB6) del Puerto B
PB6 Configuración del puerto B Forma abreviada Por Nombrando los bits
desplazamiento
1 PORTB=PORTB|(0b01000000); PORTB|=64; PORTB|=(1<<6) PORTB|=(1<<PB6);

0 PORTB=PORTB&~(0b01000000); PORTB&=~64; PORTB&=~(1<<6) PORTB&=~(1<<PB6);

Configuración de varios pines como entrada o salida para un puerto


Tipo Por desplazamiento Nombrando los bits

Salida DDRB|=((1<<0)|(1<<2)|(1<<4)|(1<<6)) DDRB|=((1<<PB0)|(1<<PB2)|(1<<PB4)|(1<<PB6));

Entrada DDRB&=~((1<<0)|(1<<2)|(1<<4)|(1<<6)) DDRB&=~((1<<PB0)|(1<<PB2)|(1<<PB4)|(1<<PB6));

Configuración del estado de varios pines para un puerto


Tipo Por desplazamiento Nombrando los bits

Salida PORTB|=((1<<0)|(1<<2)|(1<<4)|(1<<6)) PORTB|=((1<<PB0)|(1<<PB2)|(1<<PB4)|(1<<PB6));

Entrada PORTB&=~((1<<0)|(1<<2)|(1<<4)|(1<<6)) PORTB&=~((1<<PB0)|(1<<PB2)|(1<<PB4)|(1<<PB6));

Sistemas microcontrolados 16
17

También podría gustarte