2da Practica y Parcial

Embed Size (px)

Citation preview

  • 8/17/2019 2da Practica y Parcial

    1/15

     

    ESCUELA:

    ESC. INGENIERIA ELECTRONICA

    ASIGNATURA:

    MICROCONTROLADORES

    TEMA:

    SOLUCION DEL EXAMEN PARCIAL Y LA SEGUNDA PRÁCTICACALIFICADA

    PROFESOR:

    ASTOCONDOR VILLAR, JACOB

    ALUMNO:

    GUTIERREZ ESPINOZA HAIRO ALAN 1223210065

    FECHA:  Turno: 19/10/2015 01 - L

  • 8/17/2019 2da Practica y Parcial

    2/15

     Examen Parcial y Segunda Práctica Calificada Microcontroladores

    U N I V E R S I D A D N A C I O N A L D E L C A L L A O Página 2

    1.  En esta práctica evitaremos programas sofisticados con códigos grandes que desvíenla atención hacia una breve explicación de la teoría explicada.El programa tendrá dos tareas:La rutina principal se encargara de hacer parpadear un LED y la función deinterrupción hará bascular otro LED cada vez que presionemos un pulsador.Esto será como fusionar dos programas que alguna vez hicimos. “Correr dosprogramas a la vez…”, dicen que algo así paso por la cabeza de Bill Gates cuandopensó en MS Windows. De las señales al presionar el botón, escogeremos el flanco dbajada para disparar la interrupción INT0.

    Se pide:a)

     

    Escribir el programa, comente cada instrucción.b)

     

    Hacer pruebas en Proteus.

    Solución:

    a)  Programa:

    La carpeta contenedora del archivo de compilación y programación en Atmel Studio 6.2 seencuentra en el CD, en la siguiente ruta:Practica Calificada N°2\Problema 1\Programación

    * P.asm * 

    * Created: 04/10/2015 09:11:31 a.m. 

    * Author: Hairo Gutierrez Espinoza 

    /* 

    * parpadeo_y_parpadeo_con_interrupciones.asm 

    * Created: 11/10/2015 09:31:52 p.m. 

    * Author: Popow 

    */ 

    .include "m8def.inc"; durectiva del microcontrolador Atmega8 

    .cseg; directiva que almacena memoria 

    .org 0x0000; vector Reset 

    rjmp inicio; Salto a inicio .org 0x0001; vector int0 

    rjmp int_ext0; salto a int_ext0 

    inicio:; etiqueta 

    ldi r16, high(ramend);habilito la pila del atmega 8... 

    out sph, r16

    ldi r16, low(ramend)out spl, r16;... direccionamiento a la posicion de memoria STACK, habilito

    los retardos 

    sbi ddrc, 0; pinc0 -> salida sbi ddrc, 1; pinc1 -> salida 

    cbi ddrd, 2; pind2 -> entrada 

    sei; pongo a uno el bit I del SREG 

    ldi r16, 0b00001010; habilito las interrupciones... 

  • 8/17/2019 2da Practica y Parcial

    3/15

     Examen Parcial y Segunda Práctica Calificada Microcontroladores

    U N I V E R S I D A D N A C I O N A L D E L C A L L A O Página 3

    out mcucr, r16

    ldi r16, 0b11000000

    out gicr, r16;... en flanco de bajada... bucle:; Programa principal; parpadeo de led 

    sbi portc, 0; prendo el led PC0 

    rcall delay; lo mantengo prendido cierto tiempo cbi portc, 0; apago el led PC0 

    rcall delay; lo mantengo apagado cierto tiempo 

    rjmp bucle; parpadeo infinitamente 

    prender:; etiqueta; parpadearan ambos leds paralelamente si se produce la

    interrupcion 

    sbi portc, 1; prendo el led PC1 

    sbi portc, 0; Prendo el led PC0 

    rcall delay; los mantengo prendios un parpadeo 

    rcall analisis; analizando si vuelvo a presionar la interrupcion 

    cbi portc, 1; apago led PC1 

    cbi portc, 0; apago led PC0 

    rcall delay; los mantengo apagados un parpadeo 

    rcall analisis1; vuelvo a analizar si se preoduce interrupcion analisis:; analizando si se produce una nueva interrupcion 

    sbic pind, 2; si vuelvo a presionar, apago los leds 

    ret; si no presiono, retorno 

    rjmp apagar; apago los leds 

    analisis1:; analizando si se produce una nueva interrupcion 

    sbic pind, 2; si pulso PD2 salto a la siguiente linea 

    rjmp prender; si no lo pulso, salto a prender

    rjmp apagar; si pulso, salto a apagar 

    apagar:; apagar 

    cbi portc, 1; apago led PC1 rjmp inicio; salto a inicio, continuando con el parpadeo de PC0 

    delay:; retardo 

    ldi r17, 255

    x2:ldi r18, 255

    x1:

    dec r18brne x1

    dec r17

    brne x2ret; retorno 

    int_ext0:; etiqueta 

    sbic pind, 2; si pulso PD2, salto a la siguiente linea 

    rjmp int_ext0; si no lo puslo, no pasa nada 

    ldi r19, 255; cargo r19 con 255 

    cpi r19, 255; si r19 = 255... 

    breq prender; si son iguales salto a prender 

    b)  Proteus:

    Sabemos que las patitas 8 y 22 van a GND y la patita 7 va a+5V, en el circuito mostrado, dichaspatitas están conectadas por defecto y no aparecen en el microcontrolador.La carpeta que contiene la simulación en Proteus está ubicada en el CD, en la siguiente ruta:Practica Calificada N°2\Problema1\Simulacion

  • 8/17/2019 2da Practica y Parcial

    4/15

     Examen Parcial y Segunda Práctica Calificada Microcontroladores

    U N I V E R S I D A D N A C I O N A L D E L C A L L A O Página 4

    2. 

    Contador UP\DOWN de 00 a 99 con salida de 7 segmentos. Acondicione un atemga8y 2 displays de 7 segmentos para desarrollar un contador de eventos de dos dígitos.Utilice las interrupciones externar 0 y 1 para los botones arriba\abajo, así, en elprograma principal únicamente se realizara el despliegue de datos y el sondeo delbotón reset.Se pide:a)

     

    Escribir el programa, comente cada instrucción.b)

     

    Hacer pruebas en Proteus.

    Solución:b) Programa:

    La carpeta contenedora del archivo de compilación y programación en Atmel Studio 6.2 seencuentra en el CD, en la siguiente ruta:

    Practica Calificada N°2\Problema 2\Programacion

    /* * P.C.2 Problema 2.asm * * Created: 07/10/2015 08:58:28 a.m. * Author: Hairo Gutierrez Espinoza */ .include "m8def.inc"; Directiva del microcontrolador Atmega8 .cseg; Directiva donde se reserva memoria .def  bandera = r19; definimos el registro r19 como bandera .equ unidades = $60; declaramos como constante unidades .equ decenas = $61; declaramos como constante decenas 

    .org 0x0000; vector reset rjmp inicio; si se presiona el reset, salto a inicio .org 0x0001; vector interrupcion int0 rjmp int_ext0; si se produce la interrupcion, salta a int_ext0 .org 0x0002; vector interrupcion int1 rjmp int_ext1; si se produce la interrupcion, salta a int_ext1 display:; etiqueta donde definiremos los digitos del display ; "DB" reserva espacio de memoria .db 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90; digitos del display( 0, 1, 2, 3, 4, 5,6, 7, 8, 9) int_ext0:; interrupcion externa 0 ser bandera; ponemos a 1 el regsitro bandera, lo cargamos con 255 reti; retorno, habilitando el bit I del SREG 

  • 8/17/2019 2da Practica y Parcial

    5/15

     Examen Parcial y Segunda Práctica Calificada Microcontroladores

    U N I V E R S I D A D N A C I O N A L D E L C A L L A O Página 5

    int_ext1:; interrupcion externa 1 ldi bandera, 20; cargo el registro bandera con 20 reti; retorno, habilitando del bit I del SREG ;.....PROGRAMA PRINCIPAL...... inicio:; etiqueta 

    ldi r16, high(ramend);habilito la pila del atmega 8... out sph, r16ldi r16, low(ramend)out spl, r16;... direccionamiento a la posicion de memoria STACK, habilito los retardos ser r16; pongo a 1 el registro r16 out ddrb, r16; configuro el puerto B como salida de datos out ddrc, r16; configuro el puerto C como salida de datos cbi ddrd, 2; configuro el PIND2 como entrada de datos cbi ddrd, 3; configuro el PIND3 como entrada de datos ldi r16, 0b00001010; cargo r16 con 10 out mcucr, r16; lo configuro en flanco de bajada ldi r16, 0b11000000; cargo r16 con 0b11000000 out gicr, r16; activamos la mascara de las interrupciones clr r16; limpio r16, o sea, lo pongo a 0 out gifr, r16; limpiamos los flag de interrrupcion INTF0 e INTF1 sts unidades, r16; guarda directamente en la SRAM la constante unidades sts decenas, r16; guarda directamene en la SRAM la constante decenas clr bandera; flag para identificar la interrupcion sei; pongo a uno el bit I del SREG, habilitando asi las interrupciones globales ldi r31, high(display);cargo en Z ldi r30, low(display); los datos del display y de esta manera realizo la decodificacion ldi r16, 0b00000011; cargo r16 con 2 add r30, r16; lo sumo para que el puntero de memoria apunte a bits bucle:; etiqueta cpi bandera, 255; si presiono int0, se incrementara la cuenta 

    breq incremento; si r19 = a 255, salto a incremento, si no, sigo leyendo la siguiente linea cpi bandera, 20; si presiono int1, se decrementa la cuenta breq decremento; si r19 = a 20, salto a decremento, si no, sigo leyendo la siguiente linea mostrar:; etiqueta en la cual se mostrara en el display los datos almacenados en unidades ydecenas rcall multiplexar; llamada a subrutina relativa "multiplexar" rjmp bucle; salto a bucle, para seguir analizando si decremento o incremento incremento:; etiqueta rcall delay25m; delay antirrebote rcall multiplexar; llamada a subrutina relativa "multiplexar" sbic pind, 2; si presiono el PINB2, salto a la siguiente linea  rjmp incremento; si no presiono PINB2, salto a incremento lds r16, unidades; cargar r16 con el contenido de la constante "unidades" 

    lds r17, decenas; cargar r17 con el contenido de la constante "decenas" inc r16; incremento en una unidad el registro r16 cpi r16, 10; comparo, si r16 < 10 brmi salir; si cumple la condicion anterior, salimos, si no...  clr r16; unidades a cero inc r17; incremento en una unidad el registro r17 cpi r17, 10; analizo si r17 < 10 brmi salir; si cumple la condicion anterior, salimos, si no...  clr r17; decenas a cero rjmp salir; salimos decremento:; etiqueta rcall delay25m; delay antirrebote rcall multiplexar; llamada a subrutina relativa "multiplexar" 

    sbic pind, 3; si presiono PIND3, salto a la siguiente linea 

  • 8/17/2019 2da Practica y Parcial

    6/15

     Examen Parcial y Segunda Práctica Calificada Microcontroladores

    U N I V E R S I D A D N A C I O N A L D E L C A L L A O Página 6

    rjmp decremento; si no presiono PIND3, salto a "decremento" lds r16, unidades; cargo en r16 los datos almacenados en la constante "unidades" lds r17, decenas; cargo en r17 los datos almancenados en la constante "decenas" cpi r16,0; comparo r16 con 0 breq dec_unidades; salto si las unidades llegan a ser cero; si no... 

    dec r16; decremento en una unidad el registro r16  rjmp salir;si es mayor que cero, salimos dec_unidades:;cada vez que las unidades lleguen a cero ldi r16, 9; se hace 9 las unidades cpi r17, 0; comparo r17 con 0 breq dec_decenas; salto si las decenas llegan a ser cero, si no... dec r17; decremento en una unidad el registro r17  rjmp salir; si es mayor que cero, salimos dec_decenas:; cada vez que las decenas lleguen a cer ldi r17, 9; se hace 9 las decenas rjmp salir; salimos salir:; cuando salimos sts unidades, r16; almaceno en SRAM sts decenas, r17; almanceno en SRAm clr bandera; limpio el registro R19, para volver a analizar las interrupciones rjmp mostrar; muestro los nuevos datos en los displays multiplexar:;para multiplexar los displays sbi portc, 0; deshabilito ambos sbi portc, 1; displays lds r16, unidades; cargo en los datos almacenados en r16 lds r15, decenas; cargo los datos almacenados en r15 mov r28, r30; copiamos la direccion donde estan los datos del display mov r29, r31; copiamos la direccion donde estan los datos del display add r30, r16; se suma el valor de unidades, para desplazarse en a la tabla "display" lpm r16, z; cargo z en r16 

    mov r30, r28; copio r28 en r30 add r30, r15; se suma el valor de decenas, para desplazarse en la tabla "display" lpm r15, z; cargo z en r15 mov r30, r28; copio r28 en r30 out portb, r16; se muestra en el display unidades el valor correspondiente cbi portc, 1; prendo el display unidades rcall delay1m; tiempo de retardo para que sea visible al ojo sbi portc, 1; apago el display unidadess nop nop nop nop nop nop nop nop; el display requiere de un tiempo para apagarse out portb, r15; se muestra en el display decenas el valor correspondiente cbi portc, 0; prendo el display decenas rcall delay1m; tiempo de retardo para que sea visible al ojo sbi portc, 0; apago el display decenas 

    ret; retorno a la siguiente linea luego de llamar a "multiplexar" delay25m:; retardo antirrebote de 25 milisegundos aproximadamente ldi r22,4zz:ldi r23,188yy:ldi r24,6xx:dec r24brne xxdec r23brne yydec r22

    brne zz

  • 8/17/2019 2da Practica y Parcial

    7/15

     Examen Parcial y Segunda Práctica Calificada Microcontroladores

    U N I V E R S I D A D N A C I O N A L D E L C A L L A O Página 7

    ret; regreso de subrutina delay delay1m:; retardo de 1 milisegundo aproximadamente ldi r22,4zzz:ldi r23,188

    yyy:ldi r24,6xxx:dec r24brne xxxdec r23brne yyydec r22brne zzzret; regreso de subrutina delay

    b) Proteus

    Sabemos que las patitas 8 y 22 van a GND y la patita 7 va a+5V, en el circuito mostrado, dichaspatitas están conectadas por defecto y no aparecen en el microcontrolador.La carpeta que contiene la simulación en Proteus está ubicada en el CD, en la siguiente ruta:Practica Calificada N°2\Problema1\Simulacion

  • 8/17/2019 2da Practica y Parcial

    8/15

     Examen Parcial y Segunda Práctica Calificada Microcontroladores

    U N I V E R S I D A D N A C I O N A L D E L C A L L A O Página 8

    A continuación, veremos algunas fotos de los circuitos implementados:

  • 8/17/2019 2da Practica y Parcial

    9/15

     Examen Parcial y Segunda Práctica Calificada Microcontroladores

    U N I V E R S I D A D N A C I O N A L D E L C A L L A O Página 9

    Problema 1:

    La rutina principal se encargará de parpadear 8 leds, ubicados en el puerto B, y la

    función de interrupción hará desplazar 4 veces el encendido de los 8 leds cada vez que

    se presione un pulsador.

    De las señales que se generan al presionar el botón, escogeremos el flanco de bajada

    para disparar la interrupción.

     

    Programación

    /* * E.asm * * Created: 18/10/2015 07:41:37 p.m. * Author: Popow */ .include "m8def.inc"; atmega 8 .cseg .def  temp=r16; definimos r16 = temp .def  stack=r17; definimos r16= stack  

    .org 0x0000; vector reset rjmp inicio; salto a inicio .org 0x0002; vector int1 rjmp int_ext1; salto a ext1 inicio:ldi stack, high(ramend);configuración de... out sph, stackldi stack, low(ramend)out spl, stack ;... la pila del atmega8, habilita los retardos ;configuracion de puertos ldi temp,0b00000000out ddrd, temp; puerto D entrada ldi temp, 0b11111111out portd, temp; vizualizamos por el puerto D out ddrB, temp; puerto C salida sei; pone a 1 el bit I del SREG ldi temp, 0b00001010; habilitando... out mcucr, templdi temp, 0b11000000out gicr, temp;... las interrupciones ;.....Programa Principal..... bucle:LDI R18,0B11111111;cargo el registro OUT PORTB,R18;visualizamos por el puerto b RCALL DELAY;llamamos a subrutina especial 

    LDI R18,0B00000000;cargo el registro 

  • 8/17/2019 2da Practica y Parcial

    10/15

     Examen Parcial y Segunda Práctica Calificada Microcontroladores

    U N I V E R S I D A D N A C I O N A L D E L C A L L A O Página 10

    OUT PORTB,R18;visualizamos por el puerto b RCALL DELAY;llamamos a subrutina especial rjmp bucle/////////////////////// 

    int_ext1:; cuando presiono PD3(int1), salto aqui LDI R20,0B00000101;cargo el registro lazo:;etiqueta de rutinaDEC R20;decrementamos en uno el registro CPI R20,0X00;comparamos registro con inmediato BREQ FIN ;salta si es igual clc ;ponemos en cero el bit "c" (carry) LDI R19,0X01;cargamos el registro con inmediato OUT PORTB,R19rcall delay;llamamos a subrutina especial LOOP:;etiqueta para el desplazamiento LSL R19;desplazamiento de derecha a izquierda OUT PORTB,R19RCALL DELAY;llamamos a subrutina especial BRCS lazo;salta si no es igual RJMP LOOP;salta a rutina FIN:reti; retorno 

    /////////////////////// delay:; retardo ldi r17, 255

    x2:ldi r18, 255x1:

    dec r18brne x1dec r17brne x2ret; regreso a la subrutina //////////////////////

  • 8/17/2019 2da Practica y Parcial

    11/15

     Examen Parcial y Segunda Práctica Calificada Microcontroladores

    U N I V E R S I D A D N A C I O N A L D E L C A L L A O Página 11

      Simulación

    PB0/ICP114

    PB1/OC1A15

    PB2/SS/OC1B16

    PB3/MOSI/OC217

    PB4/MISO18

    PB5/SCK19

    PB6/TOSC1/XTAL19

    PB7/TOSC2/XTAL210

      PC6/RESET  1

    PD0/RXD  2

    PD1/TXD  3

    PD2/INT0  4

    PD3/INT1  5

    PD4/T0/XCK  6

    PD5/T1  11

    PD6/AIN0  12

    PD7/AIN1  13

    PC0/ADC0  23

    PC1/ADC1  24

    PC2/ADC2  25

    PC3/ADC3  26

    PC4/ADC4/SDA  27

    PC5/ADC5/SCL  28

     AREF21

     AVCC20

    U1

     ATMEGA8

    R110k

    R210k

    D1D2D3D4D5D6D7D8

    R30

    PB0/ICP114

    PB1/OC1A15

    PB2/SS/OC1B16

    PB3/MOSI/OC217

    PB4/MISO18

    PB5/SCK19

    PB6/TOSC1/XTAL19

    PB7/TOSC2/XTAL210

      PC6/RESET  1

    PD0/RXD  2

    PD1/TXD  3

    PD2/INT0  4

    PD3/INT1  5

    PD4/T0/XCK  6

    PD5/T1  11

    PD6/AIN0  12

    PD7/AIN1  13

    PC0/ADC0  23

    PC1/ADC1  24

    PC2/ADC2  25

    PC3/ADC3  26

    PC4/ADC4/SDA  27

    PC5/ADC5/SCL  28

     AREF21

     AVCC20

    U1

     ATMEGA8

    R110k

    R210k

    D1D2D3D4D5D6D7D8

    R30

  • 8/17/2019 2da Practica y Parcial

    12/15

     Examen Parcial y Segunda Práctica Calificada Microcontroladores

    U N I V E R S I D A D N A C I O N A L D E L C A L L A O Página 12

    PB0/ICP114

    PB1/OC1A15

    PB2/SS/OC1B16

    PB3/MOSI/OC217

    PB4/MISO

    18

    PB5/SCK19

    PB6/TOSC1/XTAL19

    PB7/TOSC2/XTAL210

      PC6/RESET  1

    PD0/RXD  2

    PD1/TXD  3

    PD2/INT0  4

    PD3/INT1  5

    PD4/T0/XCK  6

    PD5/T1  11

    PD6/AIN0  12

    PD7/AIN1  13

    PC0/ADC0  23

    PC1/ADC1  24

    PC2/ADC2  25

    PC3/ADC3  26

    PC4/ADC4/SDA

      27

    PC5/ADC5/SCL  28

     AREF21

     AVCC20

    U1

     ATMEGA8

    R110k

    R210k

    D1D2D3D4D5D6D7D8

    R30

    PB0/ICP114

    PB1/OC1A15

    PB2/SS/OC1B16

    PB3/MOSI/OC217

    PB4/MISO18

    PB5/SCK19

    PB6/TOSC1/XTAL19

    PB7/TOSC2/XTAL210

      PC6/RESET  1

    PD0/RXD   2

    PD1/TXD  3

    PD2/INT0  4

    PD3/INT1  5

    PD4/T0/XCK  6

    PD5/T1  11

    PD6/AIN0  12

    PD7/AIN1  13

    PC0/ADC0  23

    PC1/ADC1  24

    PC2/ADC2  25

    PC3/ADC3  26

    PC4/ADC4/SDA  27

    PC5/ADC5/SCL  28

     AREF21

     AVCC20

    U1

     ATMEGA8

    R110k

    R210k

    D1D2D3D4D5D6D7D8

    R30

  • 8/17/2019 2da Practica y Parcial

    13/15

     Examen Parcial y Segunda Práctica Calificada Microcontroladores

    U N I V E R S I D A D N A C I O N A L D E L C A L L A O Página 13

    Problema 2:

    Hacer girara un PAP unipolar (5 o 6 cables) de 45° por paso conectados a los pines

    digitales PB3, PB2, PB1, PB0 a través de un array de Darlingtons, cada vez que completa

    una vuelta el motor debe cambiar de giro, el motor debe comenzar a girara cuando se

    presiona un interruptor conectado al PD0.

      Programación 

    /* * E.asm * * Created: 18/10/2015 08:24:21 p.m. * Author: Popow */ .include"m8def.inc".cseg 

    .org 0x0000rjmp inicioinicio:ldi r16,high(ramend);configuración de LA MEMORIA STACK Y .....  out sph,r16ldi r16,low(ramend)out spl,r16;....HABILITAMOS RETARDOS 

    ldi r17,0b00001111out ddrb,r17;CONFIGURAMOS COMO SALIDA ldi r17,0b00000000;Configuramos como entrada out ddrd,r17

    interruptor:;rutina para lectura del interrutor sbic pind,0;;salta si esta en cero rjmp interruptor;salta a rutina interruptor 

    sentido_horario:;etiqueta para para el giro en sentido horario ldi r18,0x05;cargamos a registro out portb,r18rcall delay;llamamos a subrutina delay ldi r18,0x0D;cargamos a registro out portb,r18rcall delay;llamamos a subrutina delay ldi r18,0x0C;cargamos a registro out portb,r18

    rcall delay;llamamos a subrutina delay ldi r18,0x0E;cargamos a registro out portb,r18rcall delay;llamamos a subrutina delay ldi r18,0x0A;cargamos a registro out portb,r18rcall delay;llamamos a subrutina delay ldi r18,0x02;cargamos a registro out portb,r18rcall delay;llamamos a subrutina delay ldi r18,0x03;cargamos a registro out portb,r18rcall delay;llamamos a subrutina delay 

  • 8/17/2019 2da Practica y Parcial

    14/15

     Examen Parcial y Segunda Práctica Calificada Microcontroladores

    U N I V E R S I D A D N A C I O N A L D E L C A L L A O Página 14

    ldi r18,0x01;cargamos a registro out portb,r18rcall delay;llamamos a subrutina delay ldi r18,0x05;cargamos a registro out portb,r18

    rcall delay;llamamos a subrutina delay 

    SENTIDO_ANTIHORARIO:ldi r18,0x01;cargamos a registro out portb,r18rcall delay;llamamos a subrutina delay ldi r18,0x03;cargamos a registro out portb,r18rcall delay;llamamos a subrutina delay ldi r18,0x02;cargamos a registro out portb,r18rcall delay;llamamos a subrutina delay ldi r18,0x0A;cargamos a registro out portb,r18rcall delay;llamamos a subrutina delay ldi r18,0x0E;cargamos a registro out portb,r18rcall delay;llamamos a subrutina delay ldi r18,0x0C;cargamos a registro out portb,r18rcall delay;llamamos a subrutina delay ldi r18,0x0D;cargamos a registro out portb,r18rcall delay;llamamos a subrutina delay ldi r18,0x05;cargamos a registro 

    out portb,r18rcall delay;llamamos a subrutina delay RJMP INTERRUPTORDELAY:;delay 1 segundo 

    ldi  R17, $09LOOP0: ldi  R18, $BCLOOP1: ldi  R19, $C4LOOP2: dec  R19

    brne LOOP2dec  R18brne LOOP1

    dec  R17brne LOOP0ret

  • 8/17/2019 2da Practica y Parcial

    15/15

     Examen Parcial y Segunda Práctica Calificada Microcontroladores

    U N I V E R S I D A D N A C I O N A L D E L C A L L A O Página 15

      Simulación 

    PB0/ICP1  14

    PB1/OC1A  15

    PB2/SS/OC1B  16

    PB3/MOSI/OC2  17

    PB4/MISO  18

    PB5/SCK  19

    PB6/TOSC1/XTAL1  9

    PB7/TOSC2/XTAL2  10

    PC6/RESET1

    PD0/RXD2

    PD1/TXD3

    PD2/INT04

    PD3/INT15

    PD4/T0/XCK6

    PD5/T111

    PD6/AIN012

    PD7/AIN113

    PC0/ADC023

    PC1/ADC124

    PC2/ADC225

    PC3/ADC326

    PC4/ADC4/SDA27

    PC5/ADC5/SCL28

     AREF  21

     AVCC  20

    U1

     ATMEGA8

    1B1

    1C  16

    2B2

    2C  15

    3B3

    3C  14

    4B4

    4C  13

    5B5

    5C  12

    6B6

    6C  11

    7B7

    7C  10

    COM  9

    U2

    ULN2003A

    +       8        8       .  8       

    R11k

    R21k

    PB0/ICP1  14

    PB1/OC1A  15

    PB2/SS/OC1B  16

    PB3/MOSI/OC2  17

    PB4/MISO  18

    PB5/SCK  19

    PB6/TOSC1/XTAL1  9

    PB7/TOSC2/XTAL2  10

    PC6/RESET1

    PD0/RXD2

    PD1/TXD3

    PD2/INT04

    PD3/INT15

    PD4/T0/XCK

    6

    PD5/T111

    PD6/AIN012

    PD7/AIN113

    PC0/ADC023

    PC1/ADC124

    PC2/ADC225

    PC3/ADC326

    PC4/ADC4/SDA27

    PC5/ADC5/SCL28

     AREF  21

     AVCC  20

    U1

     ATMEGA8

    1B1

    1C  16

    2B2

    2C  15

    3B3

    3C  14

    4B4

    4C  13

    5B5

    5C  12

    6B6

    6C  11

    7B7

    7C  10

    COM  9

    U2

    ULN2003A

    +      2        9        3       

    R11k

    R21k

    PB0/ICP1  14

    PB1/OC1A  15

    PB2/SS/OC1B  16

    PB3/MOSI/OC2  17

    PB4/MISO  18

    PB5/SCK

      19

    PB6/TOSC1/XTAL1  9

    PB7/TOSC2/XTAL2  10

    PC6/RESET1

    PD0/RXD2

    PD1/TXD3

    PD2/INT04

    PD3/INT15

    PD4/T0/XCK6

    PD5/T111

    PD6/AIN012

    PD7/AIN113

    PC0/ADC023

    PC1/ADC124

    PC2/ADC225

    PC3/ADC326

    PC4/ADC4/SDA27

    PC5/ADC5/SCL

    28

     AREF  21

     AVCC  20

    U1

     ATMEGA8

    1B1

    1C  16

    2B2

    2C  15

    3B3

    3C  14

    4B4

    4C  13

    5B5

    5C  12

    6B

    6

    6C

      11

    7B7

    7C  10

    COM  9

    U2

    ULN2003A

    +       0       .  5       4       

    R11k

    R21k