El documento describe los puertos paralelos de entrada y salida de los microcontroladores ATmega. Explica que los ATmega tienen cuatro puertos (A, B, C y D) cada uno con ocho pines. Cada puerto contiene tres registros: PORTx, DDRx y PINx que controlan el direccionamiento y los datos de los pines. También presenta ejemplos de código para la lectura y escritura de los puertos.
2. jaime.velarde@epn.edu.ec 2
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
3. jaime.velarde@epn.edu.ec 3
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
4. jaime.velarde@epn.edu.ec 4
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
6. jaime.velarde@epn.edu.ec 6
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
7. jaime.velarde@epn.edu.ec 7
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
8. jaime.velarde@epn.edu.ec 8
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
9. jaime.velarde@epn.edu.ec 9
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
10. jaime.velarde@epn.edu.ec 10
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
11. jaime.velarde@epn.edu.ec 11
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
12. jaime.velarde@epn.edu.ec 12
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
14. jaime.velarde@epn.edu.ec 14
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
16. jaime.velarde@epn.edu.ec 16
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
18. jaime.velarde@epn.edu.ec 18
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
20. jaime.velarde@epn.edu.ec 20
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
23. jaime.velarde@epn.edu.ec 23
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
24. jaime.velarde@epn.edu.ec 24
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
26. jaime.velarde@epn.edu.ec 26
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
28. jaime.velarde@epn.edu.ec 28
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
30. jaime.velarde@epn.edu.ec 30
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
32. jaime.velarde@epn.edu.ec 32
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
34. jaime.velarde@epn.edu.ec 34
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
36. jaime.velarde@epn.edu.ec 36
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
38. jaime.velarde@epn.edu.ec 38
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
40. jaime.velarde@epn.edu.ec 40
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
42. jaime.velarde@epn.edu.ec 42
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