ESCUELA:
ESC. INGENIERIA ELECTRONICA ASIGNATURA:
MICROCONTROLADORES TEMA:
SOLUCION DEL EXAMEN PARCIAL Y LA SEGUNDA PRÁCTICA CALIFICADA PROFESOR:
ASTOCONDOR VILLAR, JACOB ALUMNO:
GUTIERREZ ESPINOZA HAIRO ALAN FECHA:
1223210065 Turno:
19/10/2015
01 - L
Examen Parcial y Segunda Práctica Calificada
1.
Microcontroladores
En esta práctica evitaremos programas sofisticados con códigos grandes que desvíen la 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 de interrupción hará bascular otro LED cada vez que presionemos un pulsador. Esto será como fusionar dos programas que alguna vez hicimos. “Correr dos programas a la vez…”, dicen que algo así paso por la cabeza de Bill Gates cuando pensó en MS Windows. De las señales al presionar el botón, escogeremos el flanco d bajada 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 se encuentra 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...
UNIVERSIDAD NACIONAL DEL CALLAO
Página 2
Examen Parcial y Segunda Práctica Calificada
Microcontroladores
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 r18 brne x1 dec r17 brne x2 ret; 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, dichas patitas 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
UNIVERSIDAD NACIONAL DEL CALLAO
Página 3
Examen Parcial y Segunda Práctica Calificada
2.
Microcontroladores
Contador UP\DOWN de 00 a 99 con salida de 7 segmentos. Acondicione un atemga8 y 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 el programa principal únicamente se realizara el despliegue de datos y el sondeo del botó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 se encuentra 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 UNIVERSIDAD NACIONAL DEL CALLAO
Página 4
Examen Parcial y Segunda Práctica Calificada
Microcontroladores
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, r16 ldi 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 y decenas 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 UNIVERSIDAD NACIONAL DEL CALLAO
Página 5
Examen Parcial y Segunda Práctica Calificada
Microcontroladores
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,4 zz: ldi r23,188 yy: ldi r24,6 xx: dec r24 brne xx dec r23 brne yy dec r22 brne zz UNIVERSIDAD NACIONAL DEL CALLAO
Página 6
Examen Parcial y Segunda Práctica Calificada
Microcontroladores
ret; regreso de subrutina delay delay1m:; retardo de 1 milisegundo aproximadamente ldi r22,4 zzz: ldi r23,188 yyy: ldi r24,6 xxx: dec r24 brne xxx dec r23 brne yyy dec r22 brne zzz ret; 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, dichas patitas 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
UNIVERSIDAD NACIONAL DEL CALLAO
Página 7
Examen Parcial y Segunda Práctica Calificada
Microcontroladores
A continuación, veremos algunas fotos de los circuitos implementados:
UNIVERSIDAD NACIONAL DEL CALLAO
Página 8
Examen Parcial y Segunda Práctica Calificada
Microcontroladores
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, stack ldi stack, low(ramend) out spl, stack ;... la pila del atmega8, habilita los retardos ;configuracion de puertos ldi temp,0b00000000 out ddrd, temp; puerto D entrada ldi temp, 0b11111111 out 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, temp ldi temp, 0b11000000 out 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 UNIVERSIDAD NACIONAL DEL CALLAO
Página 9
Examen Parcial y Segunda Práctica Calificada
Microcontroladores
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 rutina DEC 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,R19 rcall delay;llamamos a subrutina especial LOOP:;etiqueta para el desplazamiento LSL R19;desplazamiento de derecha a izquierda OUT PORTB,R19 RCALL 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, 255 x1: dec r18 brne x1 dec r17 brne x2 ret; regreso a la subrutina //////////////////////
UNIVERSIDAD NACIONAL DEL CALLAO
Página 10
Examen Parcial y Segunda Práctica Calificada
Microcontroladores
Simulación
U1 14 15 16 17 18 19 9
PB0/ICP1
PC0/ADC0
PB1/OC1A
PC1/ADC1
PB2/SS/OC1B
PC2/ADC2
PB3/MOSI/OC2
PC3/ADC3
PB4/MISO
PC4/ADC4/SDA
PB5/SCK
PC5/ADC5/SCL
PB6/TOSC1/XTAL1
10
PC6/RESET
PB7/TOSC2/XTAL2 PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/T0/XCK
D8 D7 D6 D5 D4 D3 D2 D1
PD5/T1
21 20
AREF
PD6/AIN0
AVCC
PD7/AIN1
23 24 25 26 27 28 1
R1
R2
10k
10k
R1
R2
10k
10k
2 3 4 5 6 11 12 13
ATMEGA8
R3 0
U1 14 15 16 17 18 19 9 10
PB0/ICP1
PC0/ADC0
PB1/OC1A
PC1/ADC1
PB2/SS/OC1B
PC2/ADC2
PB3/MOSI/OC2
PC3/ADC3
PB4/MISO
PC4/ADC4/SDA
PB5/SCK
PC5/ADC5/SCL
PB6/TOSC1/XTAL1
PC6/RESET
PB7/TOSC2/XTAL2 PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/T0/XCK
D8 D7 D6 D5 D4 D3 D2 D1 21 20
PD5/T1 AREF
PD6/AIN0
AVCC
PD7/AIN1
23 24 25 26 27 28 1 2 3 4 5 6 11 12 13
ATMEGA8
R3 0
UNIVERSIDAD NACIONAL DEL CALLAO
Página 11
Microcontroladores
Examen Parcial y Segunda Práctica Calificada
U1 14 15 16 17 18 19 9 10
PB0/ICP1
PC0/ADC0
PB1/OC1A
PC1/ADC1
PB2/SS/OC1B
PC2/ADC2
PB3/MOSI/OC2
PC3/ADC3
PB4/MISO
PC4/ADC4/SDA
PB5/SCK
PC5/ADC5/SCL
PB6/TOSC1/XTAL1
23 24 25 26 27 28 1
PC6/RESET
PB7/TOSC2/XTAL2
4
PD2/INT0
5
PD3/INT1
6
PD4/T0/XCK
20
11
PD5/T1 AREF
PD6/AIN0
AVCC
PD7/AIN1
10k
3
PD1/TXD
21
R2
10k
2
PD0/RXD
D8 D7 D6 D5 D4 D3 D2 D1
R1
12 13
ATMEGA8
R3 0
U1 14 15 16 17 18 19 9 10
PB0/ICP1
PC0/ADC0
PB1/OC1A
PC1/ADC1
PB2/SS/OC1B
PC2/ADC2
PB3/MOSI/OC2
PC3/ADC3
PB4/MISO
PC4/ADC4/SDA
PB5/SCK
PC5/ADC5/SCL
PB6/TOSC1/XTAL1
PC6/RESET
PB7/TOSC2/XTAL2 PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/T0/XCK
D8 D7 D6 D5 D4 D3 D2 D1 21 20
PD5/T1 AREF
PD6/AIN0
AVCC
PD7/AIN1
23 24 25 26 27 28 1
R1
R2
10k
10k
2 3 4 5 6 11 12 13
ATMEGA8
R3 0
UNIVERSIDAD NACIONAL DEL CALLAO
Página 12
Examen Parcial y Segunda Práctica Calificada
Microcontroladores
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 0x0000 rjmp inicio inicio: ldi r16,high(ramend);configuración de LA MEMORIA STACK Y ..... out sph,r16 ldi r16,low(ramend) out spl,r16;....HABILITAMOS RETARDOS ldi r17,0b00001111 out 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,r18 rcall delay;llamamos a subrutina delay ldi r18,0x0D;cargamos a registro out portb,r18 rcall 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,r18 rcall delay;llamamos a subrutina delay ldi r18,0x0A;cargamos a registro out portb,r18 rcall delay;llamamos a subrutina delay ldi r18,0x02;cargamos a registro out portb,r18 rcall delay;llamamos a subrutina delay ldi r18,0x03;cargamos a registro out portb,r18 rcall delay;llamamos a subrutina delay UNIVERSIDAD NACIONAL DEL CALLAO
Página 13
Examen Parcial y Segunda Práctica Calificada
Microcontroladores
ldi r18,0x01;cargamos a registro out portb,r18 rcall 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,r18 rcall delay;llamamos a subrutina delay ldi r18,0x03;cargamos a registro out portb,r18 rcall delay;llamamos a subrutina delay ldi r18,0x02;cargamos a registro out portb,r18 rcall delay;llamamos a subrutina delay ldi r18,0x0A;cargamos a registro out portb,r18 rcall delay;llamamos a subrutina delay ldi r18,0x0E;cargamos a registro out portb,r18 rcall delay;llamamos a subrutina delay ldi r18,0x0C;cargamos a registro out portb,r18 rcall delay;llamamos a subrutina delay ldi r18,0x0D;cargamos a registro out portb,r18 rcall delay;llamamos a subrutina delay ldi r18,0x05;cargamos a registro out portb,r18 rcall delay;llamamos a subrutina delay RJMP INTERRUPTOR DELAY:;delay 1 segundo ldi R17, $09 LOOP0: ldi R18, $BC LOOP1: ldi R19, $C4 LOOP2: dec R19 brne LOOP2 dec R18 brne LOOP1 dec R17 brne LOOP0 ret
UNIVERSIDAD NACIONAL DEL CALLAO
Página 14
Examen Parcial y Segunda Práctica Calificada
Microcontroladores
Simulación
U2 U1 23 24
R2
R1
1k
1k
25 26 27 28 1
PC0/ADC0
PB0/ICP1
PC1/ADC1
PB1/OC1A
PC2/ADC2
PB2/SS/OC1B
PC3/ADC3
PB3/MOSI/OC2
PC4/ADC4/SDA
PB4/MISO
PC5/ADC5/SCL
PB5/SCK
PC6/RESET
PB6/TOSC1/XTAL1 PB7/TOSC2/XTAL2
2
14
1
15
2
16
3
17
4
18
5
19
6
9
7
10
1C
2B
2C
3B
3C
4B
4C
5B
5C
6B
6C
7B
7C
16 15
+ 8 8 8 .
14 13 12 11 10
ULN2003A
PD0/RXD
3
9
COM 1B
PD1/TXD
4
PD2/INT0
5
PD3/INT1
6 11 12 13
PD4/T0/XCK PD5/T1 PD6/AIN0
AREF
PD7/AIN1
AVCC
21 20
ATMEGA8
U2 U1 23 24
R2
R1
1k
1k
25 26 27 28 1 2 3 4 5 6 11 12 13
PC0/ADC0
PB0/ICP1
PC1/ADC1
PB1/OC1A
PC2/ADC2
PB2/SS/OC1B
PC3/ADC3
PB3/MOSI/OC2
PC4/ADC4/SDA
PB4/MISO
PC5/ADC5/SCL
PB5/SCK
PC6/RESET
PB6/TOSC1/XTAL1 PB7/TOSC2/XTAL2
14
1
15
2
16
3
17
4
18
5
19
6
9
7
10
COM 1B
1C
2B
2C
3B
3C
4B
4C
5B
5C
6B
6C
7B
7C
9 16 15 14 13
+ 2 9 3
12 11 10
ULN2003A
PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/T0/XCK PD5/T1 PD6/AIN0
AREF
PD7/AIN1
AVCC
21 20
ATMEGA8
U2 U1 23 24
R2 1k
R1 1k
25 26 27 28 1 2 3 4 5 6 11 12 13
PC0/ADC0
PB0/ICP1
PC1/ADC1
PB1/OC1A
PC2/ADC2
PB2/SS/OC1B
PC3/ADC3
PB3/MOSI/OC2
PC4/ADC4/SDA
PB4/MISO
PC5/ADC5/SCL
PB5/SCK
PC6/RESET
PB6/TOSC1/XTAL1 PB7/TOSC2/XTAL2
14
1
15
2
16
3
17
4
18
5
19
6
9
7
10
COM 1B
1C
2B
2C
3B
3C
4B
4C
5B
5C
6B
6C
7B
7C
9 16 15 14 13
+ 0 . 5 4
12 11 10
ULN2003A
PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/T0/XCK PD5/T1 PD6/AIN0
AREF
PD7/AIN1
AVCC
21 20
ATMEGA8
UNIVERSIDAD NACIONAL DEL CALLAO
Página 15