Proticos de Entrada y Salida 1

download Proticos de Entrada y Salida 1

of 42

Transcript of Proticos de Entrada y Salida 1

  • 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

    . , ,