Download - 2da Practica y Parcial
-
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