proticos de entrada y salida 1
Post on 26-Feb-2018
213 Views
Preview:
TRANSCRIPT
-
7/25/2019 Proticos de Entrada y Salida 1
1/42
PRTICOS DE ENTRADA YSALIDA
-
7/25/2019 Proticos de Entrada y Salida 1
2/42
Prticos paralelos de entrada/salida
El Atmega164P est formado por 4 puertos: PORTA, PORTB, PORTC, PORTD. Para usarcualquiera de estos puertos deben ser programados previamente como puertos deentrada o de salida.
Adems de ser usados como puertos de entrada/salida, cada puerto puede ser utilizadopara implementar funciones adicionales como:
ADC
Timers
Interrupciones
Comunicacin serial
Cada Puerto est formado por tres registros:
PORTX Registro de salida PORTx1, PORTx2, PORTx3,PORTx4
DDRX Registro de sentido del dato DDRx1, DDRx2, DDRx3, DDRx4,.,DDRx8
PINX Registro de entrada PINx1, PINx2, PINx3,PINx4,..,PINx8
2
-
7/25/2019 Proticos de Entrada y Salida 1
3/42
El Atmega164P est formado por 4 puertos: PORTA, PORTB, PORTC, PORTD. Parausar cualquiera de estos puertos deben ser programados previamente como puertosde entrada o de salida.
Adems de ser usados como puertos de entrada/salida, cada puerto puede serutilizado para implementar funciones adicionales como:
ADC
Prticos paralelos de entrada/salida
Timers
Interrupciones
Comunicacin serial
Cada Puerto est formado por tres registros:
PORTX Registro de salida
DDRX Registro de sentido del dato
PINX Registro de entrada
3
7 6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
DDR
x
POR
Tx
PINx Px7 Px6 Px5 Px4 Px3 Px2
Px1 Px0
-
7/25/2019 Proticos de Entrada y Salida 1
4/42
DDRx: Registro usado para configurar a un Puerto como entrada o salida.
Salida Cargar/escribir todos los bits del registro con 1 (0b11111111)
Entrada
Cargar/escribir todos los bits del registro con 0 (0b00000000)
PINx: Registro empleado para leer los datos presentes en los pines del Puerto.
Prticos paralelos de entrada/salida
PORTx: Registro usado para enviar losdatos de salida a los pines delrespectivo Puerto. Existe unaResistencia de PULL-UP para cada pinde los puertos. Cuando los bits delRegistro PORTx son configurados a 1,las resistencias de PULL-UP se activan.
-
7/25/2019 Proticos de Entrada y Salida 1
5/42
Observacin: Al aplicar reset todos los puertos se cargan con el valor 0x00en sus registros DDRx y PORTx, por lo tanto como resultado:
Los puertos quedarn configurados como puertos de entrada.
Se deshabilitan las resistencias de PULL-UP
Prticos paralelos de entrada/salida
impedancia.
DDRxPORTx
0 1
0 Entrada y altaimpedancia
Salida 0
1 Entrada y Pull-Up Salida 1
-
7/25/2019 Proticos de Entrada y Salida 1
6/42
ACIN NEMNICO INSTRUCCIN FUNCIN
Leer terminales IN IN Rd, PINx Leer los 8 bits del registros PINx del puerto
IN Rd, PORTx Leer los 8 bits del registros PORTx del puerto
IN Rd, DDRx Leer los 8 bits del registros DDRx del puerto
SBIC SBIC PINx,b Monitorear un bit del puerto
Instrucciones
Prticos paralelos de entrada/salida
,
SBIC SBIC PORTx,b Monitorear un bit del puerto
SBIS SBIS PORTx, b
SBIC SBIC DDRx,b Monitorear un bit del puerto
SBIS SBIS DDRx,b
Escribir en losprticos
OUT OUT PORTx, Rr Escribir en los 8 bits del puerto
SBI SBI PORTx,b Escribir un bit del Puerto a 1 L
CBI CBI PORTx, b Establecer un bit del Puerto a 0 L
-
7/25/2019 Proticos de Entrada y Salida 1
7/42
Bit PUD
Bit para desactivar el PULL-UP de todos los pines de todos los puertos, seencuentra en el registro de control de MCU conocido como, MCUCR.
Resetear este bit, implica configurar el PUD con 0L.
Modo sleep
En el modo sleep el microcontrolador ocupa la menor corriente, es decir
Prticos paralelos de entrada/salida
optimiza la energa. Se recomienda activar modo sleep en los siguientescasos:
Modo stand by
Modo stand by extendido
Para cuidar el consumo de energa.
Para bajar el consumo de energa.
-
7/25/2019 Proticos de Entrada y Salida 1
8/42
Instrucciones aritmticas y Lgicas
Restas
Nemnico Instruccin Funcin
Prticos paralelos de entrada/salida
8
SUB SUB Rd, Rr Rd=Rd-Rr
SBC SBC Rd, Rr Rd=Rd-Rr-c
SUBI SUBI Rd, K Rd=Rd-k
SBCI SBCI Rd, K Rd=Rd-k-cSBIW SBIW Rd: Rd+1,K Rd+1:Rd=Rd+1:Rd-k
-
7/25/2019 Proticos de Entrada y Salida 1
9/42
Instrucciones aritmticas y Lgicas
Restas
Ejemplo 1: Escribir un programa para restar el 0x18 de 0x29y guardar el resultado en R21
LDI R21, 0x29 ; R21=$29
Prticos paralelos de entrada/salida
9
SUBI R21,0x18 ; R21=R21-18 = 29-
18 = 11hex
Ejemplo 2: Escribir un programa para restar el 0x18 de
0x2917 y guardar el resultado en R25 y R24.
LDI R25, 0x29 ; R25=$29
LDI R24, 0x17 ; R24=$17
SBIW R25:R24, 0x18 ; 2917-18= 28FFhex
-
7/25/2019 Proticos de Entrada y Salida 1
10/42
Intrucciones de Uc ATmega164p Instrucciones aritmticas y Lgicas
SBC: Permite restar dos nmeros incluyendo el carry. Formato:
SBC Rd, Rr
10
. ex1296hex. Colocar el resultado de la suma en R18 y R19, asumir R18 como elbyte bajo. (Total=14CChex)
LDI R18, 0x62 ; R18=$E7
LDI R19, 0X27 ; R19=$27LDI R20, 0x96 ; R20=$96
LDI R21, 0X12 ; R21=$12
SUB R18,R20 ; R18=R18-R20= 62-96 = CChex C=1
SBC R19,R21 ; R19=R19-R21-C=27-12-1 =14 hex
-
7/25/2019 Proticos de Entrada y Salida 1
11/42
Intrucciones de Uc ATmega164p
Instrucciones aritmticas y Lgicas
Multiplicacin
Nemnico Instruccin Aplicacin Byte1 Byte2 Byte alto
delresultado
Byte bajo
delresultado
11
MUL MUL Rd, Rr Nmeros sinsigno
Rd Rr R1 R0
MULS MULS Rd, Rr Nmeroscon signo
Rd Rr R1 R0
MULSU MULSU Rd, K Nmeros sinsigno connmeroscon signo
Rd Rr R1 R0
-
7/25/2019 Proticos de Entrada y Salida 1
12/42
Intrucciones de Uc ATmega164p
Instrucciones aritmticas y Lgicas
Operaciones lgicas
Nemnico Instruccin Resultado Funcin
AND AND Rd, Rr Rd=Rd.Rr AND
ANDI ANDI Rd, k Rd=Rd.k AND inmediata
12
OR OR Rd, Rr Rd=Rd v k OR
ORI ORI Rd, K Rd=Rd v k OR inmediata
EOR EOR Rd, Rr Rd=Rd+Rr OR Exclusiva
NEG NEG Rd Complemento a 2SBR SBR Rd, K Rd=Rd v k Bits del registro configurados a 1
SER SER Rd Rd=0xFF Cargar unos al registro
-
7/25/2019 Proticos de Entrada y Salida 1
13/42
Intrucciones de Uc ATmega164p
Instrucciones aritmticas y Lgicas Operaciones lgicas
AND
X Y X.Y
0 0 0
OR
X Y X.Y
0 0 0
EX-OR
X Y X.Y
0 0 0
13
0 1 0
1 0 0
1 1 1
0 1 1
1 0 1
1 1 1
0 1 1
1 0 1
1 1 0
-
7/25/2019 Proticos de Entrada y Salida 1
14/42
Intrucciones de Uc ATmega164p
Instrucciones aritmticas y Lgicas Operaciones lgicas
o Ejemplo 1:
LDI R21,0x35 ; R21=$35
ANDI R21,0x0F ; R21=R21 AND 0x0F
R20=0x05 0011 0101
14
0000 1111
0000 0101
o Ejemplo 2: La instruccin EOR puede ser usada para verificar el
contenido de un registro, es decir es til si no se conoce elcontenido de un registro
Lazo: IN R16, PINB
LDI R17, 0x45
EOR R16,R17
BRNE Lazo
-
7/25/2019 Proticos de Entrada y Salida 1
15/42
Intrucciones de Uc ATmega164p
Directivas adicionales
Directiva Funcin Segmento
.BYTE
VALOR
Inicializa una posicin de
memoria, de tamao byte a
SRAM
15
va or.
.DSEG Declarar constantes y datos
.CSEG Segmento de cdigo, indicaque el cdigo a ejecutarse
deber colocarse en lamemoria del programa
CODIGO
.DW Similar a .DB pero usa unapalabra para cada valor
-
7/25/2019 Proticos de Entrada y Salida 1
16/42
Intrucciones de Uc ATmega164p
Manejo del Stack
Nemnico Instruccin Funcin
PUSH PUSH Rr Guardar un registroen el STACK.Rr=Registro de
16
propsito General
POP POP Rr Retorna un valoralmacenado en el
STACK.Rr=Registro depropsito General
-
7/25/2019 Proticos de Entrada y Salida 1
17/42
Intrucciones de Uc ATmega164p Ejercicios:
1.- Escribir un programa que permita escribir las primeras localidades dela SRAM con la palabra MICROPROCESADOS
Crear un tabla con los datos en la memoria
del programa
TABLA: .DB 0x4D.DB 0x49
17
.DB 0x43
.DB 0x52
.DB 0x51
.DB 0x50
.DB 0x53
MICROPROCESADOS=15 posiciones
-
7/25/2019 Proticos de Entrada y Salida 1
18/42
Intrucciones de Uc ATmega164p Ejercicios:
1.- Escribir un programa que permita escribir las primeras localidades dela SRAM con la palabra MICROPROCESADOS
.INCLUDE M164PDEF.INC
.EQU VAL = 15
.DEF CONTADOR = R20
.DSEG
DATOS: .BYTE VAL.CSEG
18
LDI R20, VAL
LDI XL, LOW(DATOS)
LDI XH, HIGH(DATOS)
LDI ZL, LOW(TABLA
-
7/25/2019 Proticos de Entrada y Salida 1
19/42
Intrucciones de Uc ATmega164p Barrido de displays: Consiste en mostrar valores en forma secuencial
mediante un arreglo de displays. En el caso de conectar un arreglo dedisplays a un puerto del ATmega164p, se debe tener en cuenta lassiguientes consideraciones:
Cada PIN de un puerto opera con una corriente de 20 mA.
La corriente total que puede manejar un puerto es 100 mA.
Se debe implementar resistencias limitadoras de corriente para cada
segmento de los displays.
ctodo comn.
Para la conexin de un arreglo de displays se emplea 2 puertos delATmega16:
o Puerto1: Puerto para conexin de los segmentos de los displays. Se utiliza 7
pines de este para cada segmento de los displays. Los segmentos de todos losdisplays se conectarn en forma paralela.
o Puerto2: Puerto utilizado para controlar la activacin (Orden de activacin) delos displays. El nmero de pines del puerto que se utilizarn depende delnmero de displays que forman parte del arreglo.
19
-
7/25/2019 Proticos de Entrada y Salida 1
20/42
Intrucciones de Uc ATmega164p Barrido de displays:
Los displays se activarn con lacorriente que proporcionen lospines del puerto (Puerto 2). Esrecomendable emplearamplificadores de corriente paragarantizar la activacin del displayconsiderando que la corriente que
provee cada pin del puerto esba a. La am lificacin uede serrealizada mediante transistores.
En el grfico se muestra laconexin de un arreglo de 4displays del tipo ctodo comn.
o
Las salidas 1,2,3,4 se conectarn alpuerto (Puerto2)que controla laactivacin de los displays.
o Las salidas ABDCEFG se conectarnal puerto (Puerto1) encargado deactivar los 7 segmentos de losdisplays,
20
-
7/25/2019 Proticos de Entrada y Salida 1
21/42
Intrucciones de Uc ATmega164p Barrido de displays: (Circuito propuesto para la prctica de Laboratorio)
21
-
7/25/2019 Proticos de Entrada y Salida 1
22/42
Intrucciones de Uc ATmega164p Barrido de displays: (Circuito propuesto para la prctica de Laboratorio)
Si se considera que:o Las salidas para la activacin de los
4 dgitos se conectan al PORTB.Slo se emplearn 4 bits delregistro de salida del puerto para elproceso de activacin.
o Las salidas del Control deSe mentos se conectan al PORTA.
22
o Se han definido 4 dgitos paramostrar los resultados de lamultiplicacin. (o de cualquieroperacin) dmil : miles dcen: centenas ddec: decenas duni: Unidades
o Se realiza la siguiente subrutinapara el barrido de displays.
-
7/25/2019 Proticos de Entrada y Salida 1
23/42
Intrucciones de Uc ATmega164p Barrido de displays: (Circuito propuesto para la prctica de Laboratorio)
Subrutina_barrido:
OUT PORTA, DMIL ; Indico en el primer display el digito de miles de la operacin
OUT PORTB, 0b00000001 ; Activo el primer display
CALL RETARDO ; Llamo a la subrutina retardo antes que se active el siguiente display
OUT PORTB, OB00000000 ; PORTB=0 apago el primer display
OUT PORTA, DCEN ; Indico en el segundo display el digito de centenas
OUT PORTB, 0b00000010 ; Activo el segundo displayCALL RETARDO ; Llamo a la subrutina retardo antes que se active el siguiente display
23
OUT PORTB, OB00000000 ; PORTB=0 apago el segundo display
OUT PORTA, DDEC ; Indico en el tercer display el digito de decenas
OUT PORTB, 0b00000100 ; Activo el tercer display
CALL RETARDO ; Llamo a la subrutina retardo antes que se active el siguiente display
OUT PORTB, OB00000000 ; PORTB=0 apago el tercer display
OUT PORTA, DUNI ; Indico en el cuarto display el digito de unidades
OUT PORTB, 0b00001000 ; Activo el cuarto display
CALL RETARDO ; Llamo a la subrutina retardo antes que se active el siguiente display
OUT PORTB, OB00000000 ; PORTB=0 apago el cuarto display
-
7/25/2019 Proticos de Entrada y Salida 1
24/42
Intrucciones de Uc ATmega164p Barrido de displays: (Circuito propuesto para la prctica de Laboratorio)
*La subrutina de retardo es similar a las planteadas en los ejercicios enclase, se puede aumentar instrucciones NOP para variar la frecuencia debarrido.
24
-
7/25/2019 Proticos de Entrada y Salida 1
25/42
Conversin de Binario a BCD
Existen algunas formas de realizar laconversin de binario a BCD, un mtodopuede ser por restas sucesivas.
Restas Sucesivas:
1. Si se tiene un nmero con cuatro dgitosdecimales, el mximo valor a convertir es el9999.
25
Miles
Centenas Decenas
Unidades
9 9 9 9
-
7/25/2019 Proticos de Entrada y Salida 1
26/42
Conversin de Binario a BCD Restas Sucesivas:2. Este mtodo consiste en realizar restas sucesivas de cada dgito que forma el
nmero. Las restas se realizan hasta obtener un resultado negativo,este resultado me indica que debo parar y continuar con el siguientedgito.
MilesValor a restar = 9999 Valor a considerar en la resta por Dgito miles= 1000
1. 6.
26
2. 7.
3. 8.
4. 9.
5. 10.
Fin de la resta yaque el resultadoes negativo
-
7/25/2019 Proticos de Entrada y Salida 1
27/42
Conversin de Binario a BCDRestas Sucesivas:
Miles
1. 6.
2. 7.
En total se realiz laresta 9 veces, este valor
9 representa laconversin del rimer
27
3. 8.
4. 9.
5. 10.
dgito.
Dgito miles = 9
-
7/25/2019 Proticos de Entrada y Salida 1
28/42
Conversin de Binario a BCDRestas Sucesivas:
Centenas
o Para continuar con el siguiente dgito, considerando que laltima resta del dgito miles es un valor negativo, se deberealizar una suma para transformar el resultado a positivo
28
Valor incial para dar inicio a lasrestas sucesivas del dgito centenas
Valor a restar = 999Valor a considerar en la resta por Dgitocentenas= 100
-
7/25/2019 Proticos de Entrada y Salida 1
29/42
Conversin de Binario a BCDRestas Sucesivas:Centenas
1. 6.
2. 7.
29
3. 8.
4. 9.
5. 10.
Fin de la resta yaque el resultadoes negativo
-
7/25/2019 Proticos de Entrada y Salida 1
30/42
Conversin de Binario a BCDRestas Sucesivas:
Centenas
En total se realiz laresta 9 veces, este valor
9 representa laconversin del se undo
1. 6.
2. 7.
30
dgito.
Dgito centenas = 9
3. 8.
4. 9.
5. 10.
-
7/25/2019 Proticos de Entrada y Salida 1
31/42
Conversin de Binario a BCDRestas Sucesivas:
Decenas
o Para continuar con el siguiente dgito, considerando que laltima resta del dgito centenas es un valor negativo, sedebe realizar una suma para transformar el resultado a
positivo
31
Valor incial para dar inicio a lasrestas sucesivas del dgito decenas
Valor a restar = 99Valor a considerar en la resta por Dgitodecenas = 10
-
7/25/2019 Proticos de Entrada y Salida 1
32/42
Conversin de Binario a BCDRestas Sucesivas:Decenas
1. 6.
2. 7.
32
3. 8.
4. 9.
5. 10.
Fin de la resta yaque el resultadoes negativo
-
7/25/2019 Proticos de Entrada y Salida 1
33/42
Conversin de Binario a BCDRestas Sucesivas:
Decenas
En total se realiz laresta 9 veces, este valor
9 representa laconversin del tercer
1. 6.
2. 7.
33
dgito.
Dgito decenas = 93. 8.
4. 9.
5. 10.
-
7/25/2019 Proticos de Entrada y Salida 1
34/42
Conversin de Binario a BCDRestas Sucesivas:
Decenas
o Para continuar con el siguiente dgito, considerando que laltima resta del dgito decenas es un valor negativo, sedebe realizar una suma para transformar el resultado apositivo
34
Valor incial para dar inicio a lasrestas sucesivas del dgito unidades
Valor a restar = 9Valor a considerar en la resta por Dgitounidades= 1
-
7/25/2019 Proticos de Entrada y Salida 1
35/42
Conversin de Binario a BCDRestas Sucesivas:Unidades
1. 6.
2. 7.
35
3. 8.
4. 9.
5. 10.
Fin de la resta yaque el resultadoes negativo
-
7/25/2019 Proticos de Entrada y Salida 1
36/42
Conversin de Binario a BCDRestas Sucesivas:
Unidades
En total se realiz laresta 9 veces, este valor
9 representa laconversin del cuarto
1. 6.
2. 7.
36
dgito.
Dgito unidades = 9
3. 8.
4. 9.
5. 10.
-
7/25/2019 Proticos de Entrada y Salida 1
37/42
Conversin de Binario a BCDRestas Sucesivas:
Resultado FinalEl resultado final ser igual al nmero de veces que serealiz la resta con resultados positivos en cada dgito.
Miles Centenas Decenas Unidades
Nmero derestas con 9 9 9 9
37
resultadospositivos
Para programar una subrutina que realice este mtodo, ser deberrealizar las operaciones en nmeros binarios. Las restas sucesivas puedenestar integradas en un lazo y se definir un contador que almacenar elNmero de restas con resultados positivos.Cuando llegue a un resultado negativo de la resta debe realizar un saltoal siguiente dgito y proceder a realizar la respectiva suma paratransformar el resultado negativo a positivo y as obtener el valor inicialpara las restas sucesivas del respectivo dgito.
-
7/25/2019 Proticos de Entrada y Salida 1
38/42
Conversin BCD a 7 segmentos
Esta conversin les permite mostrar el valor decada dgito de la operacin en el respectivo display
Se puede crear una subrutina para realizar laconversin.
La corres ondencia de los se mentos ue se
38
deben prender de acuerdo a los valores de losdgitos puede ser almacenada en una tabla.
Para el programa se ha representado a los 4
dgitos del siguiente modo: DIGBCD0 DIGBCD1 DIGBCD2 DIGBCD3
-
7/25/2019 Proticos de Entrada y Salida 1
39/42
Conversin BCD a 7 segmentosSUBRUTINA_BCD_SEGMENTOS; Guardo en el Stack los siguientes valores
PUSH R20
PUSH ZH
PUSH ZL
; Proceso a la lectura de los valores que tengo
39
almacenada en la tabla para el DIGBCD0
LDS R20, DIGBCD0 ; DIGBCD0=R20
LDI ZH,HIGH(TABLA_7SEG
-
7/25/2019 Proticos de Entrada y Salida 1
40/42
Conversin BCD a 7 segmentos; Proceso a la lectura de los valores que tengo almacenada
en la tabla para el DIGBCD1
LDS R20, DIGBCD1 ; DIGBCD1=R20LDI ZH,HIGH(TABLA_7SEG
-
7/25/2019 Proticos de Entrada y Salida 1
41/42
Conversin BCD a 7 segmentos
; Proceso a la lectura de los valores que tengo almacenadaen la tabla para el DIGBCD3
LDS R20, DIGBCD3 ; DIGBCD3=R20
LDI ZH,HIGH(TABLA_7SEG
-
7/25/2019 Proticos de Entrada y Salida 1
42/42
Conversin BCD a 7 segmentos
RET; Creacion de la TABLA_7SEG
.db 0b00111111, 0b00000110 ; 0,1
.db 0b01011011, 0b01001111 ; 2,3
.db 0b01100110, 0b01101101 ; 4,5
.db 0b01111101, 0b00000111 ; 6,7
42
. , ,
top related