PÓRTICOS DE ENTRADA Y
SALIDA PARALELA DE LOS
MICROCONTOLADORES
ATmega
Elaborado por: Ing. Jaime E. Velarde
TERMINALES DE LOS PÓRTICOS
• LOS ATmega164P POSEEN CUATRO PÓRTICOS (A, B, C y D) PARA ENTRADA Y SALIDA PARALELA
• LOS TERMINALES O PINES SE IDENTIFICAN COMO Pxn, ES DECIR:
– PA0, PA1, …. , PA7 PARA EL PÓRTICO A
– PB0, PB1, …. , PB7 PARA EL PÓRTICO B
– PC0, PC1, …. , PC7 PARA EL PÓRTICO C
– PD0, PD1, …. , PD7 PARA EL PÓRTICO D
REGISTROS DE LOS PÓRTICOS
• CADA PÓRTICO ESTÁ FORMADO TRES REGISTROS: PORTx, DDRx y PINx
• CONTIENEN 8 LATCHES PARA LOS 8 BITS
• LOS BITS SE IDENTIFICAN COMO PORTxn, DDRxn y PINxn:
– PORTx0, PORTx1, …. , PORTx7
– DDx0, DDx1, …. , DDx7
– PINx0, PINx1, …. , PINx7
FUNCIÓN DE LOS LATCHES
• PORTxn: CONTIENEN LOS BITS QUE
APARECEN EN LOS PINES CUANDO
SON PROGRAMADOS COMO SALIDAS
• DDxn: SON LOS BITS QUE DEFINEN SI
LOS PINES SON PROGRAMADOS
COMO ENTRADAS O COMO SALIDAS
• PINxn: CONTIENEN LOS BITS QUE SE
ENCUENTRAN EN LOS PINES, YA
CUANDO SON ENTRADAS O SALIDAS
DIAGRAMA DE BLOQUES DE
LOS BITS DE LOS PÓRTICOS
TERMINAL O
PIN del
PÓRTICO
LATCH del
BIT DDxn
BUFFER del
BIT DDxn
LATCH del
BIT PORTxn
BUFFER del
BIT PORTxn
BUFFER del
BIT PINxn
LATCH
SINCRONIZADO
del BIT PINxn
INTERRUPTOR
ANALÓGICO
activado por el
CONTROL para
DORMIR
BUFFER de
SALIDA
CONTROL de la
RESISTENCIA de
PULL-UP
ACCIÓN DEL RESET SOBRE LOS
PÓRTICOS
BIT
DDxn = 0L
BIT
PORTxn = 0LPxn en ALTA
IMPEDANCIA
DESACTIVADO el
CONTROL para
DORMIR, queda
configurado como
ENTRADA
PULL-UP
DESACTIVADO
DESPUÉS DEL RESET LOS
PÓRTICOS SON ENTRADAS
• LOS DDRxn QUEDAN CON CERO
LÓGICO, QUE DESHABILITAN LOS
BUFFERS DE SALIDA
• LOS PORTxn TAMBIÉN QUEDAN CON
CERO LÓGICO, QUE DESACTIVAN LAS
RESISTENCIAS DE PULL-UP
• COMO CONSECUENCIA LOS
TERMINALES Pxn ESTÁN COMO
ENTRADAS, EN ALTA IMPEDANCIA
LECTURA DE CERO LÓGICO DESDE EL
TERMINAL DEL PÓRTICO
LECTURA
desde
PINxn = 0L
LATCH PINxn
SINCRONIZADO
para retener la
señal de entrada
SEÑAL
EXTERNA
igual a 0L
LECTURA DE UNO LÓGICO DESDE EL
TERMINAL DEL PÓRTICO
LECTURA
desde
PINxn = 1L
LATCH PINxn
SINCRONIZADO
para retener la
señal de entrada
SEÑAL
EXTERNA
igual a 1L
SINCRONISMO DE LOS
LATCHES DE ENTRADA• LO QUE SE LEE DESDE EL LATCH PINxn, ES
LO QUE ESTUVO PRESENTE EN EL PIN MEDIO CICLO ANTES DE EJECUTAR LA INSTRUCCIÓN DE LECTURA
INSTRUCCIONES PARA LEER
DESDE LOS TERMINALES
• SE PUEDEN LEER LOS 8 BITS DESDE
UN PÓRTICO CON LA INSTRUCCIÓN:
IN Rd,PINx
• SE PUEDE CHEQUEAR UN SOLO BIT
DEL PÓRTICO CON LAS
INSTRUCCIONES:
SBIC PINx,b
SBIS PINx,b
Lectura de un Reg de E/S
IN Rd,A
Omitir la siguiente
instrucción de acuerdo al
estado del bit del Reg de E/S
SBIC A,b
SBIS A,b
INSTRUCCIONES PARA LEER DE
LOS OTROS REGISTROS
• TAMBIÉN SE PUEDEN LEER LOS 8 BITS DE
PORTx o DDRx CON:
IN Rd,PORTx
IN Rd,DDRX
• TAMBIÉN SE PUEDE CHEQUEAR UN SOLO
BIT PORTxn o DDRxn:
SBIC PORTx,b
SBIS PORTx,b
SBIC DDRx,b
SBIS DDRx,b
Lectura de un Reg de E/S
IN Rd,A
Omitir la siguiente
instrucción de acuerdo al
estado del bit del Reg de E/S
SBIC A,b
SBIS A,b
LECTURA DE TERMINALES SIN
CONEXIÓN EN EL PÓRTICO
Incertidumbre en
la LECTURA
desde PINxn
Pxn SIN
SEÑAL
EXTERNA
HABILITACIÓN DE PULL-UP EN
LOS PÓRTICOS DE ENTRADA
ESCRITURA
de 1L en
PORTnx
PULL-UP
ACTIVADO
de 20 a 50 KΩ
LECTURA
desde
PINxn = 1L
Pxn SIN
SEÑAL
EXTERNA
PROGRAMACIÓN DEL PÓRTICO
COMO SALIDA
SEÑAL en
Pxn = 0L
LECTURA
desde
PINxn = 0L
LECTURA
desde
PORTxn = 0L
ESCRITURA
de 1L en
DDnx
PÓRTICOS DE SALIDA DESPUÉS
DEL RESET
• AL PROGRAMAR COMO SALIDA
INMEDIATAMENTE DESPUÉS DEL
RESET, SALEN CERO LÓGICO; YA
QUE LOS BITS PORTxn TIENEN CERO
• EL VOLTAJE MÁXIMO DE CERO
LÓGICO (VOL MAX) ES DE 0,7V CON
IOL=20mA Y CON VCC=5V
• IOL de todo el PÓRTICO < 100mA
• IOL de todos los PÓRTICOS < 400mA
SALIDA DE UNO LÓGICO POR EL
PÓRTICO
SEÑAL en
Pxn = 1L
LECTURA
desde
PINxn = 1L
LECTURA
desde
PORTxn = 1L
CARGAS EN LAS SALIDAS
• EL VOLTAJE MÍNIMO DE UNO LÓGICO
(VOH MIN) ES DE 4,2V CON IOH=-20mA Y
CON VCC=5V
• SE PUEDE MANEJAR LEDS CON
RESISTENCIAS LIMITADORAS DE
CORRIENTE
• IOH de todo el PÓRTICO < 100mA
• IOH de todos los PÓRTICOS < 200mA
SALIDA DE CERO LÓGICO POR
EL PÓRTICO
SEÑAL en
Pxn = 0L
LECTURA
desde
PINxn = 0L
LECTURA
desde
PORTxn = 0L
SINCRONISMO DE LA SALIDA
CON LA ENTRADA
• PARA LEER LO QUE SE ESCRIBE EN
EL PÓRTICO ES NECESARIO DEJAR
PASAR UN CICLO COMPLETO
INSTRUCCIONES PARA
ESCRIBIR EN LOS PÓRTICOS
• SE PUEDEN ESCRIBIR LOS 8 BITS EN
UN PÓRTICO CON LA INSTRUCCIÓN:
OUT PORTx,Rr
• SE PUEDE ESCRIBIR EN UN SOLO BIT
DEL PÓRTICO CON LAS
INSTRUCCIONES:
SBI PORTx,b
CBI PORTx,b
Escritura de un Reg de E/S
OUT A,Rr
Poner Uno en o Borrar el
bit del Reg de E/S
SBI A,b
CBI A,b
INSTRUCCIONES PARA
CONFIGURAR LOS PÓRTICOS
• SE PUEDEN CONFIGURAR TODO EL
PÓRTICO CON LA INSTRUCCIÓN:
OUT DDRx,Rr
• SE PUEDE CONFIGURAR UN SOLO BIT
DEL PÓRTICO CON LAS
INSTRUCCIONES:
SBI DDRx,b
CBI DDRx,b
Escritura de un Reg de E/S
OUT A,Rr
Poner Uno en o Borrar el
bit del Reg de E/S
SBI A,b
CBI A,b
BIT PUD (PULL-UP DISABLE)
• EN EL ATmega164P, EL REGISTRO DE CONTROL DE MCU (MCUCR), CONTIENE EL BIT PARA DESHABILITAR EL PULL-UP DE TODOS LOS PÓRTICOS
• DESPUÉS DEL RESET PUD = 0L
• SE UTILIZA PARA CONTROLAR EL CONSUMO DE CORRIENTE
ACTIVACIÓN DEL CONTROL
PARA DORMIR
ACTIVADO el
CONTROL para
DORMIR, queda
abierto el SWITCH
ANALÓGICO
Y la entrada a
la Compuerta
a Tierra
SLEEP
• LAS ENTRADAS SON ASEGURADAS A TIERRA EN LA ENTRADA DE LA COMPUERTA SCHMITT-TRIGER, CUANDO SE ACTIVA EL CONTROL PARA DORMIR EN LOS SIGUIENTES CASOS:
– MODO STANDBY
– MODO STANDBY EXTENDIDO
– MODO PARA CUIDAR EL CONSUMO
– MODO PARA BAJAR EL CONSUMO
RESUMEN DEL
FUNCIONAMIENTO
DDRxn PORTxn PUD E/S PULL-UP COMENTARIO
0 0 X E NO ALTA IMPEDANCIA
0 1 0 E SI ENTREGA CORRIENTE
0 1 1 E NO ALTA IMPEDANCIA
1 0 X S NO VOL (DRENAJE)
1 1 X S NO VOH (FUENTE)
EJEMPLO 1 DE LECTURA DESDE
UN PÓRTICO
• LEER LOS 8 BITS DEL PÓRTICO D,
LOS QUE ESTÁN CONTROLADOS
MEDIANTE 8 DIP-SWITCHES:
LDI R16,$00
OUT DDRD,R16
LDI R16,$FF
OUT PORTD,R16- - - - - - - - - - - - - - - - - -
IN R16,PIND
Configuración del
Pórtico D como entrada
(Opcional)
Activación de las
8 resistencias de
Pull-up
Lectura desde el Pórtico
SIMULACIÓN DEL EJEMPLO 1
DE LECTURA
EJEMPLO 2 DE LECTURA DESDE
UN PÓRTICO
• LEER LOS 4 BITS BAJOS DEL
PÓRTICO C, CONTROLADOS POR 4
DIP-SWITCHES:
LDI R16,$00
OUT DDRC,R16
LDI R16,$0F
OUT PORTC,R16- - - - - - - - - - - - - - - - - -
IN R16,PINC
Configuración del
Pórtico C como entrada
(Opcional)
Activación de las
4 resistencias de
Pull-up
Lectura desde el Pórtico
SIMULACIÓN DEL EJEMPLO 2
DE LECTURA
EJEMPLO 1 PARA BIFURCAR
POR UN BIT DEL PÓRTICO
• LEER EL BIT 6 DEL PÓRTICO B
CONTROLADO POR UN INTERRUPTOR
Y SALTAR SI ESTÁ ABIERTO:
LDI R16,$40
OUT PORTB,R16- - - - - - - - - - - - - - - - - -
SBIC PINB,6
RJMP ABIERTO- - - - - - - - - - - - - - - - - -
Activación de la
resistencia de
Pull-up
Omite la siguiente
instrucción si el bit
del Pórtico es 0
Salta si el interruptor
está abierto
SIMULACIÓN DEL EJEMPLO 1
PARA BIFURCAR
EJEMPLO 2 PARA BIFURCAR
POR UN BIT DEL PÓRTICO
• LEER EL BIT 3 DEL PÓRTICO D
CONTROLADO POR UN PULSANTE Y
SALTAR SI ESTÁ ACTIVADO:
LDI R16,$08
OUT PORTD,R16- - - - - - - - - - - - - - - - - -
SBIS PIND,3
RJMP ACTIVADO- - - - - - - - - - - - - - - - - -
Activación de la
resistencia de
Pull-up
Omite la siguiente
instrucción si el bit
del Pórtico es 1
Salta si el pulsante
está cerrado
SIMULACIÓN DEL EJEMPLO 2
PARA BIFURCAR
EJEMPLO 1 DE ESCRITURA EN
UN PÓRTICO
• MOSTRAR EL NÚMERO 3 MEDIANTE
UN DISPLAY DE CÁTODO COMÚN
CONECTADO AL PÓRTICO A:
LDI R16,$FF
OUT DDRA,R16- - - - - - - - - - - - - - - - - -
LDI R16,0b01001111
OUT PORTA,R16
Configuración del
Pórtico A como salida
Encendido de
los segmentos
para formar el
número 3
SIMULACIÓN DEL EJEMPLO 1
DE ESCRITURA
EJEMPLO 2 DE ESCRITURA EN
UN PÓRTICO
• MOSTRAR EL NÚMERO 4 MEDIANTE
UN DISPLAY DE ÁNODO COMÚN
CONECTADO AL PÓRTICO C:
LDI R16,$FF
OUT DDRC,R16- - - - - - - - - - - - - - - - - - -
LDI R16,0b10011001
OUT PORTC,R16
Configuración del
Pórtico C como salida
Encendido de
los segmentos
para formar el
número 4
SIMULACIÓN DEL EJEMPLO 2
DE ESCRITURA
EJEMPLO DE UN PÓRTICO
COMO ENTRADAS Y SALIDAS
• CONFIGURAR AL PÓRTICO B PARA QUE LOS 4
BITS ALTOS SEAN ENTRADAS CONTROLADAS
POR DIP-SWITCHES, LOS 3 SIGUIENTES BITS
BAJOS MANEJEN LEDS Y EL ÚLTIMO BIT LEA EL
ESTADO DE UN PULSANTE:
LDI R16,$0E
OUT DDRB,R16
LDI R16,$F1
OUT PORTB,R16- - - - - - - - - - - - - - - - - - -
Configuración del
Pórtico B
Activación de las
resistencias de
Pull-up para las
entradas
SIMULACIÓN DEL EJEMPLO
COMO ENTRADAS Y SALIDAS