Upload
25tineo
View
99
Download
1
Embed Size (px)
Citation preview
UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DE IGENIERIA ELECTRONICA
CURSO: MICROCONTROLADORES
TEMA: SOLUCIONARIO DE PRACTICA CALIFICADA N°1
ALUMNO: TINEO QUISPE ROLAN
PROFESOR: MSc-ING.JACOB ASTOCONDOR VILLAR
CICLO : 6TO CODIGO: 1223220597
2015
PROBLEMA1
A.- DIAGRAMA DE FLUJO
B.- ESCRIBIR EL PROGRAMA; COMENTE CADA INSTRUCCIÓN
.INCLUDE "M8DEF.INC"
.CSEG
.ORG 0x0000
. RJMP INICIO
.ORG 0x0020
INICIO: LDI R16,HIGH(RAMEND) ; SE APUNTA A LA OUT SPH,R16 ; POCICION DE
LDI R16,LOW(RAMEND) ; MEMORIA STACK OUT SPL,R16;-----------------------------------------------------------------------------------; DECLARO LA ENTRADA Y SALIDA | ; | ;-----------------------------------------------------------------------------------CBI DDRC,PC0 ; DECLARO EL BIT PC0 COMO ENTRADALDI R17,255 ; CARGO UN INMEDIATO CON 255 QUE ES EQUIVALENTE A 0b11111111OUT DDRD,R17 ; DECLARO EL PUERTO D COMO SALIDA ;-----------------------------------------------------RJMP INTERRUPCION ; SALTO A INTERRUPCIONINTERRUPCION: SBIC PINC,PC0 ; PREGUNTO EL ESTADO DE PC0 SI ES CERO SALTA UNA LINEARJMP INTERRUPCION ; SI ES UNO LOGICO EL ESTADO DE PC0 SALTA A INTERRUPCIONX1: LDI R18,0 ; CARGO CERO EN REGISTRO R18
OUT PORTD,R18 ; LO MUESTRO POR EL PUERTO D EL VALOR DE R18 RCALL DELAY ; LLAMO A UNA SUBRRUTINA PARA HACER UN RETARDO EN EL MUESTREO LDI R18,192 ; CARGO EL REGISTRO R18 CON 192 EN DECIMAL QUE ES IGUAL 0b11000000OUT PORTD,R18 ; LO MUESTRO POR EL PUERTO D EL VALOR DE R18RCALL DELAY ; LLAMO A UNA SUBRRUTINA PARA HACER UN RETARDO EN EL MUESTREO LDI R18,240 ; CARGO EL REGISTRO R18 CON 240 EN DECIMAL QUE ES IGUAL 0b11110000OUT PORTD,R18 ; LO MUESTRO POR EL PUERTO D EL VALOR DE R18RCALL DELAY ; LLAMO A UNA SUBRRUTINA PARA HACER UN RETARDO EN EL MUESTREO LDI R18,252 ; CARGO EL REGISTRO R18 CON 252 EN DECIMAL QUE ES IGUAL 0b11111100OUT PORTD,R18 ; LO MUESTRO POR EL PUERTO D EL VALOR DE R18RCALL DELAY ; LLAMO A UNA SUBRRUTINA PARA HACER UN RETARDO EN EL MUESTREO LDI R18,255 ; CARGO EL REGISTRO R18 CON 255 EN DECIMAL QUE ES IGUAL 0b11111111OUT PORTD,R18 ;LO MUESTRO POR EL PUERTO D EL VALOR DE R18RCALL DELAY ; LAMO A UNA SUBRRUTINA PARA HACER UN RETARDO EN EL MUESTREO RJMP X1 ; SALTO A LA ETIQUETA X1 PARA ENPEZAR DE NUEVO LA SECUENCIA;-----------------------------------------------------------------------------------; RETARDO DE UN SEGUNDO | ; |
;----------------------------------------------------------------------------------- DELAY: LDI R16,150 ; CARGO AL REGISTRO R16 CON 150 DECIMALY0: LDI R17,45 ; CARGO AL REGISTRO R17 CON 45 DECIMALY1: LDI R18,50 ; CARGO AL REGISTRO R18 CON 50 DECIMALY2: DEC R18 ; DECREMENTAR EN 1 A R18 BRNE Y2 ;MIENTRAS QUE SEA DIFERENTE DE CERO R18 SALATA A LA ETIQUETA Y2 DEC R17 ; DECREMENTAR EN 1 A R17 BRNE Y1 ; MIENTRAS QUE SEA DIFERENTE DE CERO R17 SALATA A LA ETIQUETA Y1
DEC R16 ; DECREMENTAR EN 1 A R16 BRNE Y0 ; MIENTRAS QUE SEA DIFERENTE DE CERO R16 SALATA A LA
ETIQUETA Y0 RET ; RETORNAR A LA SIGUIENTE LINEA DE DONDE FUE
LLAMADO
C.- PRESENTAR EL CIRCUITO DEJANDO LISTO PARA HACER PRUEBAS EN EL LABORATORIO
PB0/ICP114
PB1/OC1A15
PB2/SS/OC1B16
PB3/MOSI/OC217
PB4/MISO18
PB5/SCK19
PB6/TOSC1/XTAL19
PB7/TOSC2/XTAL210PC6/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
R1
330R2
330R3
330R4
330R5
330R6
330R7
330R8
330
D1LED-YELLOW
D2LED-YELLOW
D3LED-YELLOW
D4LED-YELLOW
D5LED-YELLOW
D6LED-YELLOW
D7LED-YELLOW
D8LED-YELLOW
R910k PULSADOR
PROBLEMA 1
D.- SIMULAR EL FUNCIONAMIENTO DE DICHO CIRCUITO CON EL SOFTWARE PROTEUS
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
R1
330R2
330R3
330R4
330R5
330R6
330R7
330R8
330
D1LED-YELLOW
D2LED-YELLOW
D3LED-YELLOW
D4LED-YELLOW
D5LED-YELLOW
D6LED-YELLOW
D7LED-YELLOW
D8LED-YELLOW
R910k PULSADOR
PROBLEMA 1
PROBLEMA 2.-
HACEMOS DIAGRAMA DE FLUJO PARA CALCULAR LOS TIEMPOS DE RETARDO DE UN LAZO, DOS LAZO Y TRES LAZOS PARA HACER PARPADEAR LO IMPORTANTE ES HACER RETARDOS PRECISOS Y CON LAS FORMULAS APROXIMAMOS BASTANTE A LO DESEADO LO DEMAS SOLO ES SACAR VALOR UNO LOGICO Y HACER RETARDO Y LUEGO SACAR CERO LOGICO Y HACER RETARDO Y REPETIR CUANTAS VECES SEA NECESARIO
NOS PERCATAMOS QUE CON LAZO DE TRES APROXIMAMOS A 3.00030ms DE RETARDO
A y b:
.INCLUDE "M8DEF.INC"
.CSEG
.ORG 0x0000
. RJMP INICIO
.ORG 0x0020
INICIO: LDI R16,HIGH(RAMEND) OUT SPH,R16
LDI R16,LOW(RAMEND) OUT SPL,R16;-----------------------------------------------------; DECLARO SALIDA |;----------------------------------------------------- SBI DDRB,PB0; PONGO UNO LOGICO EN PB0
LDI R17,0;-----------------------------------------------------; ENCIENDO Y APAGO LED CADA 300ms SOLO 10 VECES |;-----------------------------------------------------L1: SBI PORTB,PB0; SACO UNO LOGICO POR PB0 Y LO MUESTRO RCALL DELAY_300ms; LLAMO UN TIEMPO DE RETARDO PARA MOSTRAR EL ENCENDIDO
CBI PORTB,PB0; SACO CERO LOGICO POR PBO Y LO MUESTRO RCALL DELAY_300ms; LLAMO UN TIEMPO DE RETARDO PARA MOSTRAR EL
APAGADO INC R17; INCREMENTO EN UNO AL REGISTRO R17 CPI R17,10 ;COMPARO R17 CON 10 EN DECIMAL
BREQ APAGADO_TOTAL ; SI ES QUE R17 QUE ME INDICA LA CANTIDAD DE ; PRENDIDO Y APAGO ES IGUAL A 10 SALTA A APAGADO_TOTAL
RJMP L1 ;MIENTRA NO CUMPLA LO ANTERIOR SALTAR A ETIQUETA L1;----------------------------------------------------; BUCLE INFINITO |;----------------------------------------------------APAGADO_TOTAL: CLR R17 ; BORRO R17 CBI PORTB,PB0 ; SACO CERO LOGICO POR PB0 Y LO MUESTRO
RJMP APAGADO_TOTAL ; SALTA A ETIQUETA APAGADO_TOTAL;--------------------------------------------------; UTILIZAREMOS LA FORMULITA DE LAZO DE TRES PARA |; CALCULAR EL TIEMPITO DE RETARDO |; CARGAREMOS A LOS REGISTROS DE LA SIGUIENTE MODO: |; 45;46;49 EN ESTE ORDEN Y NOS DARA APROXIMADAMENTE |; UN TIEMPO DE 3.00030ms |;--------------------------------------------------
DELAY_300ms: LDI R18,45;X0: LDI R19,46X1: LDI R20,49X2: DEC R20
BRNE X2 DEC R19 BRNE X1 DEC R18 BRNE X0 RET
C y d:
.INCLUDE "M8DEF.INC"
.CSEG
.ORG 0x0000
. RJMP INICIO
.ORG 0x0020
INICIO: LDI R16,HIGH(RAMEND) OUT SPH,R16
LDI R16,LOW(RAMEND) OUT SPL,R16;-----------------------------------------------------; DECLARO SALIDA |;----------------------------------------------------- SBI DDRB,PB0; PONGO UNO LOGICO EN PB0
LDI R17,0;-----------------------------------------------------; ENCIENDO DURANTE 500ms Y APAGADO DURANTE 200ms |; TODO ESTO DURANTE UN PERIODO DE 5 VECES |;-----------------------------------------------------L1: SBI PORTB,PB0; SACO UNO LOGICO POR PB0 Y LO MUESTRO RCALL DELAY_500ms; LLAMO UN TIEMPO DE RETARDO PARA MOSTRAR EL ENCENDIDO
CBI PORTB,PB0; SACO CERO LOGICO POR PBO Y LO MUESTRO RCALL DELAY_200ms; LLAMO UN TIEMPO DE RETARDO PARA MOSTRAR EL
APAGADO INC R17; INCREMENTO EN UNO AL REGISTRO R17 CPI R17,5; COMPARO R17 CON 5 EN DECIMAL BREQ APAGADO_TOTAL ; SI ES QUE R17 QUE ME INDICA LA CANTIDAD DE
; PRENDIDO Y APAGO ES IGUAL A 5 SALTA A APAGADO_TOTAL
RJMP L1 ;MIENTRA NO CUMPLA LO ANTERIOR SALTAR A ETIQUETA L1;----------------------------------------------------; BUCLE INFINITO |;----------------------------------------------------APAGADO_TOTAL: CLR R17 ; BORRO R17 CBI PORTB,PB0 ; SACO CERO LOGICO POR PB0 Y LO MUESTRO
RJMP APAGADO_TOTAL ; SALTA A ETIQUETA APAGADO_TOTAL;--------------------------------------------------; CARGAREMOS A LOS REGISTROS DE LA SIGUIENTE MODO: |; 45;46;49 EN ESTE ORDEN Y NOS DARA APROXIMADAMENTE |; UN TIEMPO DE 300ms |;--------------------------------------------------
DELAY_300ms: LDI R18,45X0: LDI R19,46X1: LDI R20,49X2: DEC R20
BRNE X2 DEC R19 BRNE X1 DEC R18 BRNE X0
RET
;--------------------------------------------------; CARGAREMOS A LOS REGISTROS DE LA SIGUIENTE MODO: |; 73;51;46 EN ESTE ORDEN Y NOS DARA APROXIMADAMENTE |; UN TIEMPO DE 500ms |;--------------------------------------------------
DELAY_500ms: LDI R18,73Y0: LDI R19,51Y1: LDI R20,46Y2: DEC R20
BRNE Y2 DEC R19 BRNE Y1 DEC R18 BRNE Y0 RET
;--------------------------------------------------; CARGAREMOS A LOS REGISTROS DE LA SIGUIENTE MODO: |; 42;40;40 EN ESTE ORDEN Y NOS DARA APROXIMADAMENTE |; UN TIEMPO DE 200ms |;--------------------------------------------------
DELAY_200ms: LDI R18,42Z0: LDI R19,40Z1: LDI R20,40Z2: DEC R20
BRNE Z2 DEC R19 BRNE Z1 DEC R18 BRNE Z0 RET
;--------------------------------------------------
CIRCUITO EN PROTEUS
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
D1LED-YELLOW
R1
330
PROBLEMA2PB0/ICP114
PB1/OC1A15
PB2/SS/OC1B16
PB3/MOSI/OC217
PB4/MISO18
PB5/SCK19
PB6/TOSC1/XTAL19
PB7/TOSC2/XTAL210PC6/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
D1LED-YELLOW
R1
330
PROBLEMA2
APAGAOENCENDIDO
PROBLEMA 3.-A.- DIAGRAMA DE FLUJO
B.- ESCRIBA LAS INSTRUCCIONES
.INCLUDE "M8DEF.INC"
.CSEG
.ORG 0x0000
. RJMP INICIO
.ORG 0x0020
INICIO: LDI R16,HIGH(RAMEND) OUT SPH,R16
LDI R16,LOW(RAMEND) OUT SPL,R16;--------------------------------------------------; INICIALIZO LA SALIDA |;-------------------------------------------------- LDI R17,3 ;CRAGO 0b00000011 EN EL REGISTRO R17 OUT DDRB,R17 ; CONFIGURO EL PUERTO B :PB0,PB1 COMO SALIDA CLR R17 ; BORRO EL REGISTRO R17;-------------------------------------------------; CONTROL DEL MOTOR DC | ;-------------------------------------------------X0: LDI R17,1; CARGO UNO DECIMAL OUT PORTB,R17;SACO EL VALOR DEL REGISTRO R17 Y LO MUESTRO POR EL PUERTO B RCALL DELAY_5segundo;LLAMO A UN RETARDO PARA SEGUIR MOSTRANDO LO ANTERIOR
LDI R17,0;CARGO 0 EN DECIMAL EN R17 OUT PORTB,R17; SACO EL VALOR DE R17=0 Y LO MUESTRO POR EL PUERTO B RCALL DELAY_5segundo; LLAMO A UN RETARDO PARA SEGUIR MOSTRANDO LO
ANTERIOR LDI R17,2;CARGO 2EN DECIMAL AL REGISTRO R17
OUT PORTB,R17;SACO EL VALOR DE R17=2 Y LO MUESTRPO POR EL PUERTO B RCALL DELAY_5segundo; LLAMO A UN RETARDO PARA SEGUIR MOSTRANDO LO
ANTERIOR LDI R17,0;CARGO 0 EN DECIMAL EN R17 OUT PORTB,R17;SACO EL VALOR DE R17=0 Y LO MUESTRPO POR EL PUERTO B RCALL DELAY_5segundo; LLAMO A UN RETARDO PARA SEGUIR MOSTRANDO LO
ANTERIOR RJMP X0; SALTO A LA ETIQUETA X0;------------------------------------------------------; CARGAREMOS A LOS REGISTROS DE LA SIGUIENTE MODO: |; 170;100;100 EN ESTE ORDEN Y NOS DARA APROXIMADAMENTE |; UN TIEMPO DE 5segundo |;------------------------------------------------------
DELAY_5segundo: LDI R18,170; CARGO 170 EN DECIMAL AL REGIATRO R18Z0: LDI R19,100; CARGO 100 EN DECIMAL AL REGIATRO R19Z1: LDI R20,100; CARGO 100 EN DECIMAL AL REGIATRO R20Z2: DEC R20; DECREMENTO EN UNA UNIDAD A R20
BRNE Z2; SI R20 ES DIFERENTE DE CERO SALTA A ETIQUETA Z2
DEC R19; DECREMENTO EN UNA UNIDAD A R19 BRNE Z1; SI R19 ES DIFERENTE DE CERO SALTA A ETIQUETA
Z1 DEC R18; DECREMENTO EN UNA UNIDAD A R18 BRNE Z0 ; SI R18 ES DIFERENTE DE CERO SALTA A ETIQUETA
Z0 RET ;RETORNA A LA SIGUIENTE LINEA DE DONDE FUE
LLAMADO
C.- REALIZAR LA SIMULACION
SENTIDO ANTIHORARIO
SENTIDO HORARIO
PROBLEMA 4.-
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 10PC6/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
IN12 OUT1 3
OUT2 6
OUT3 11
OUT4 14
IN27
IN310
IN415
EN11
EN29
VS
8
VSS
16
GND GND
U2
L293D
+106
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 10PC6/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
IN12 OUT1 3
OUT2 6
OUT3 11
OUT4 14
IN27
IN310
IN415
EN11
EN29
VS
8
VSS
16
GND GND
U2
L293D
-110
A.- DIAGRAMA DE FLUJO
B.-ESCRIBA LAS INSTRUCCIONES
.INCLUDE "M8DEF.INC"
.CSEG
.ORG 0x0000
. RJMP INICIO
.ORG 0x0020
INICIO: LDI R16,HIGH(RAMEND) OUT SPH,R16
LDI R16,LOW(RAMEND) OUT SPL,R16;-------------------------------------------; INICIALIZO LA SALIDA TODO EL PUERTO D |;-------------------------------------------
SER R17; PONGO TODO EL REGISTRO R17 A UNO LOGICOOUT DDRD,R17; CARGO UNO LOGICO Y ACTIVO TODO EL PUERTO D COMO SALIDALDI R16,0; INICIALIZO EL CONTADOR EN CERO LO ALMACENO EN R16 COSA ; QUE EN T1 SE INCREMENTA EN UNA UNIDAD CADA CICLO QUE
HACE ; EN TOTAL DEVE DE HACER 5 CICLOS DE PRENDIDO Y APAGADO
DE LOS ; LEDS
;---------------------------------------------; INTERRUPTOR |;---------------------------------------------
INTERRUPTOR : SBIC PINB,PB0 ; PEGUNTO PB0=0 SI LO ES SALTO UNA LINEA O SEA NO LEO ; LA LINEA SIGUIENTERJMP INTERRUPTOR;SALTO A INTERRUPTOR SIEMPRE Y CUANDO PB0=1RJMP T1; SALTO A T1T1: SER R17;INICIALIZO TODO EL REGISTRO R17 CON UNOSOUT PORTD,R17;SACO EL VALOR DE R17 POR EL PUERTO DRCALL DELAY_200ms;LLAMO A UNA SUBRUTINA DELAY _200ms PARA OBSERVAR ; LO ANTERIOR UN INSTANTECLR R17;INICIALIZO TODO EL REGISTRO R17 CON CEROSOUT PORTD,R17;SACO EL VALOR DE R17 POR EL PUERTO DRCALL DELAY_200ms;LLAMO A UNA SUBRUTINA DELAY _200ms PARA ; OBSERVAR LO ANTERIOR UN INSTANTEINC R16;INCREMENTO EN UNA UNIDAD EL REGISTRO R16CPI R16,5;A R16 LE HAGO LA COMPARACION INMEDIATA CON 5 EN DECIMAL BREQ AUTO_FANTASTICO1 ;DE LA COMPARACION ANTERIOR NOS PREGUNTAMOS SI ; ES IGUAL A 5 SALTA A AUTO_FANTASTICO1RJMP T1;MIENTRAS QUE LO ANTERIOR NO SE CUMPLA AQUI SALTAMOS A T1 AUTO_FANTASTICO1: CLC; BORRAMOS CARRYCLR R17; INICIALIZO TODO EL REGISTRO R17 CON CEROSLDI R17,1; CARGO R17 CON UNOA1: OUT PORTD,R17; SACO EL VALOR DE R17 POR EL PUERTO D AQUI SOLO PRENDE PD0 RCALL DELAY_150ms; LLAMO A UNA SUBRUTINA DELAY _150ms PARA OBSERVAR LO ANTERIOR UN ; INSTANTEROL R17; ROTO UN BIT A LA ISQUIERDABRCS AUTO_FANTASTICO2; ME PREGUNTO EXISTE CARRY AL FINAL C=1? SI EXISTE SALTA A ; AUTO_FANTASTICO2RJMP A1; MIENTRA NO CUMPLA LO ANTERIOR AQUI SALTAMOS A ETIQUETA A1 AUTO_FANTASTICO2: CLC; BORRAMOS CARRYCLR R17; INICIALIZO TODO EL REGISTRO R17 CON CEROS
LDI R17,128;CARGO R17 CON 0b10000000
A2: OUT PORTD,R17; MUESTRO LO QUE CARGUE EN EL REGISTRO R17 POR ; EL PUERTO D AQUI SOLO PRENDE PD7RCALL DELAY_150ms;LLAMO A UNA SUBRUTINA DELAY _150ms PARA OBSERVAR LO ; ANTERIOR UN INSTANTEROR R17;ROTO A LA DERECHA EL BITBRCS AUTO_FANTASTICO1;ME PREGUNTO EXISTE CARRY AL FINAL C=1? SI EXISTE SALTA A ; AUTO_FANTASTICO1RJMP A2; MIENTRA NO CUMPLA LO ANTERIOR AQUI SALTAMOS A ETIQUETA A2
;--------------------------------------------------; CARGAREMOS A LOS REGISTROS DE LA SIGUIENTE MODO: |; 42;40;40 EN ESTE ORDEN Y NOS DARA APROXIMADAMENTE |; UN TIEMPO DE 200ms |;--------------------------------------------------
DELAY_200ms: LDI R18,42; CARGAMOS 42 EN DECIMAL EN EL REGISTRO R18Z0: LDI R19,40; CARGAMOS 40 EN DECIMAL EN EL REGISTRO R19Z1: LDI R20,40; CARGAMOS 40 EN DECIMAL EN EL REGISTRO R20Z2: DEC R20; DECREMENTAMOS EN UNO AL REGISTRO R20
BRNE Z2; MIENTRAS QUE R20 SEA DIFERENTE DE CERO SALTA A Z2
DEC R19; DECREMENTAMOS EN UNO AL REGISTRO R19 BRNE Z1; MIENTRAS QUE R19 SEA DIFERENTE DE CERO
SALTA A Z1 DEC R18; DECREMENTAMOS EN UNO AL REGISTRO R18 BRNE Z0; MIENTRAS QUE R18 SEA DIFERENTE DE CERO
SALTA A Z0 RET ; RETORNA DENDE FUE LLAMADO
;--------------------------------------------------; CARGAREMOS A LOS REGISTROS DE LA SIGUIENTE MODO: |; 200;255 EN ESTE ORDEN Y NOS DARA APROXIMADAMENTE |; UN TIEMPO DE 150ms |;--------------------------------------------------
DELAY_150ms: LDI R18,200; CARGAMOS 200 EN DECIMAL EN EL REGISTRO R18Y0: LDI R19,255; CARGAMOS 255 EN DECIMAL EN EL REGISTRO R19Y1: DEC R19; DECREMENTAMOS EN UNO AL REGISTRO R19
BRNE Y1; MIENTRAS QUE R19 SEA DIFERENTE DE CERO SALTA A Y1
DEC R18; DECREMENTAMOS EN UNO AL REGISTRO R18 BRNE Y0; MIENTRAS QUE R18 SEA DIFERENTE DE CERO
SALTA A Y0 RET ; RETORNA DE DONDE FUE LLAMADO
C.- SIMULACION
EL SWITCH ESTA ABIERTO
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
D1LED-YELLOW
D2LED-YELLOW
D3LED-YELLOW
D4LED-YELLOW
D5LED-YELLOW
D6LED-YELLOW
D7LED-YELLOW
D8LED-YELLOW
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330
R8
330
R910k
SWITCH ESTA CERRADO
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
D1LED-YELLOW
D2LED-YELLOW
D3LED-YELLOW
D4LED-YELLOW
D5LED-YELLOW
D6LED-YELLOW
D7LED-YELLOW
D8LED-YELLOW
R1
330
R2
330
R3
330
R4
330
R5330
R6
330
R7
330
R8
330
R910k
PROBLEMA6.-
A.-DIAGRAMA DE FLUJO
B.- ESCRIBA LAS INSTRUCCIONES COMENTADAS
.INCLUDE "M8DEF.INC"
.CSEG
.ORG 0x0000
. RJMP INICIO
.ORG 0x0020 INICIO: LDI R16,HIGH(RAMEND) OUT SPH,R16
LDI R16,LOW(RAMEND) OUT SPL,R16;-------------------------------------------; INICIALIZO LA SALIDA TODO EL PUERTO D |;-------------------------------------------
SER R17; PONGO TODO EL REGISTRO R17 A UNO LOGICOOUT DDRD,R17; CARGO UNO LOGICO Y ACTIVO TODO EL PUERTO D COMO SALIDACBI DDRC,PC0; PONGO PC0 COMO ENTRADA
;---------------------------------------------; INTERRUPTOR |;---------------------------------------------
INTERRUPTOR : SBIC PINC,PC0 ; PEGUNTO PC0=0 SI LO ES SALTO UNA LINEA O SEA NO ; LEO LA LINEA SIGUIENTE RJMP INTERRUPTOR; SALTO A INTERRUPTOR SIEMPRE Y CUANDO PB0=1
RJMP T1; SALTO A T1
T1: LDI R17,129; CARGO 120 QUE ES IGUAL A 0b10000001 OUT PORTD,R17; SACO EL VALOR DE R17 POR EL PUERTO D OSEA
; ESTARIA ENCENDIDO PD7 Y PD0 RCALL DELAY_300ms; TIEMPO DE RETARDO PARA PODER VISUALIZAR LO
; ANTERIOR LDI R17,66; CARGO 66 QUE ES IGUAL A 0b01000010 OUT PORTD,R17; SACO EL VALOR DE R17 POR EL PUERTO D OSEA
; ESTARIA ENCENDIDO PD6 Y PD1 RCALL DELAY_300ms; TIEMPO DE RETARDO PARA PODER VISUALIZAR
LO ; ANTERIOR
LDI R17,36; CARGO 36 QUE ES IGUAL A 0b00100100 OUT PORTD,R17; SACO EL VALOR DE R17 POR EL PUERTO D OSEA
ESTARIA ; ENCENDIDO PD5 Y PD2 RCALL DELAY_300ms; TIEMPO DE RETARDO PARA PODER VISUALIZAR LO
; ANTERIOR LDI R17,24; CARGO 24 QUE ES IGUAL A 0b00011000 OUT PORTD,R17; SACO EL VALOR DE R17 POR EL PUERTO D OSEA
ESTARIA ; ENCENDIDO PD4 Y PD3
RCALL DELAY_300ms; TIEMPO DE RETARDO PARA PODER VISUALIZAR LO ; ANTERIOR
RJMP T1; SALTO A ETIQUETA T1 PARA REPETIR M EL CICLO DE NUEVO
;--------------------------------------------------; CARGAREMOS A LOS REGISTROS DE LA SIGUIENTE MODO: |; 45;46;49 EN ESTE ORDEN Y NOS DARA APROXIMADAMENTE |; UN TIEMPO DE 300ms |;--------------------------------------------------
DELAY_300ms: LDI R18,45; CARGAMOS 45 EN DECIMAL AL REGISTRO R18X0: LDI R19,46; CARGAMOS 46 EN DECIMAL AL REGISTRO R19X1: LDI R20,49; CARGAMOS 49 EN DECIMAL AL REGISTRO R20X2: DEC R20; DECREMENTO EN UNA UNIDAD AL REGISTRO R20
BRNE X2; MIENTRAS QUE R20 SEA DIFERENTE DE CERO SALTAR ; A X2
DEC R19; DECREMENTO EN UNA UNIDAD AL REGISTRO R19
BRNE X1; MIENTRAS QUE R19 SEA DIFERENTE DE CERO SALTAR ; A X1
DEC R18; DECREMENTO EN UNA UNIDAD AL REGISTRO R18
BRNE X0; MIENTRAS QUE R18 SEA DIFERENTE DE CERO SALTAR ; A X0
RET ; RETORNO A LA SIGUIENTE LINEA DE DONDE FUE ; LLAMADO
C.- HACER LA SIMULACION
EL INTERRUPTOR ESTA ABIERTO
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
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330
R8
330
D1LED-YELLOW
D2LED-YELLOW
D3LED-YELLOW
D4LED-YELLOW
D5LED-YELLOW
D6LED-YELLOW
D7LED-YELLOW
D8LED-YELLOW
R910k
INTERRUPTOR ESTA CERRADO
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
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330
R8
330
D1LED-YELLOW
D2LED-YELLOW
D3LED-YELLOW
D4LED-YELLOW
D5LED-YELLOW
D6LED-YELLOW
D7LED-YELLOW
D8LED-YELLOW
R910k
PB0/ICP114
PB1/OC1A15
PB2/SS/OC1B16
PB3/MOSI/OC217
PB4/MISO18
PB5/SCK19
PB6/TOSC1/XTAL19
PB7/TOSC2/XTAL210PC6/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
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330
R8
330
D1LED-YELLOW
D2LED-YELLOW
D3LED-YELLOW
D4LED-YELLOW
D5LED-YELLOW
D6LED-YELLOW
D7LED-YELLOW
D8LED-YELLOW
R910k
PROBLEMA 7.-A.- REALIZAR EL DIAGRAMA DE FLUJO
B.-ESCRIBA LAS INSTRUCCIONES COMENTADAS
.INCLUDE "M8DEF.INC"
.CSEG
.ORG 0x0000
. RJMP INICIO
.ORG 0x0020 INICIO: LDI R16,HIGH(RAMEND) OUT SPH,R16
LDI R16,LOW(RAMEND) OUT SPL,R16;-------------------------------------------; INICIALIZO LA SALIDA TODO EL PUERTO D |;-------------------------------------------
SER R17; PONGO TODO EL REGISTRO R17 A UNO LOGICOOUT DDRD,R17; CARGO UNO LOGICO Y ACTIVO TODO EL PUERTO D COMO SALIDACBI DDRC,PC1; PONGO PC1 COMO ENTRADACBI DDRC,PC0;PONGO PC0 COMO ENTRADA
;---------------------------------------------; INTERRUPTOR |;---------------------------------------------
PC1_: SBIC PINC,PC1;PREGUNTA POR PC1=0? SI LO ES SALTA UNA LINEA DE INSTRUCCION
SBIS PINC,PC1;PREGUNTA POR PC1=1? SI LO ES SALTA UNA LINEA DE INSTRUCCION RJMP PC1_0;SALTA A ETIQUETA PC1_0 SI PC1=0
RJMP PC1_1;SALTA A ETIQUETA PC1_1 SI PC1=1
PC1_0: SBIC PINC,PC0;PREGUNTA POR PC0=0? SI LO ES SALTA UNA LINEA DE INSTRUCCION RJMP AUTO_FANTASTICO;SI PC0=1 SALTA A ETIQUETA AUTO_FANTASTICO RJMP LED_APAGADO ;SI PC0=0 SALTA A ETIQUETA LED_APAGADO
PC1_1: SBIC PINC,PC0;PREGUNTA POR PC0=0? SI LO ES SALTA UNA LINEA DE INSTRUCCION RJMP JUEGO_DE_LEDS;SI PC0=1 SALTA A ETIQUETA JUEGO_DE_LEDS RJMP LEDS_INTERMITENTES;SI PC0=0 SALTA A ETIQUETA LEDS_INTERMITENTES;-----------------------------------------------
JUEGO_DE_LEDS: SBIS PINC,PC1;PREGUNTA POR PC1=1? SI LO ES SALTA UNA LINEA DE INSTRUCCIÓNRJMP PC1_;SALTA A PC1_ SI PC1=0 SBIS PINC,PC0;PREGUNTA POR PC0=1? SI LO ES SALTA UNA LINEA DE INSTRUCCIÓNRJMP PC1_1;SALTA A PC1_1 SI PC0=0LDI R17,129;CARGO 120 QUE ES IGUAL A 0b10000001OUT PORTD,R17;SACO EL VALOR DE R17 POR EL PUERTO D OSEA ESTARIA ENCENDIDO PD7 Y PD0RCALL DELAY_300ms;TIEMPO DE RETARDO PARA PODER VISUALIZAR LO ANTERIORSBIS PINC,PC1;PREGUNTA POR PC1=1? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_;SALTA A PC1_ SI PC1=0 SBIS PINC,PC0;PREGUNTA POR PC0=1? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_1;SALTA A PC1_1 SI PC0=0LDI R17,66;CARGO 66 QUE ES IGUAL A 0b01000010OUT PORTD,R17;SACO EL VALOR DE R17 POR EL PUERTO D OSEA ESTARIA ENCENDIDO PD6 Y PD1RCALL DELAY_300ms;TIEMPO DE RETARDO PARA PODER VISUALIZAR LO ANTERIORSBIS PINC,PC1;PREGUNTA POR PC1=1? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_;SALTA A PC1_ SI PC1=0
SBIS PINC,PC0;PREGUNTA POR PC0=1? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_1;SALTA A PC1_1 SI PC0=0LDI R17,36;CARGO 36 QUE ES IGUAL A 0b00100100OUT PORTD,R17;SACO EL VALOR DE R17 POR EL PUERTO D OSEA ESTARIA ENCENDIDO PD5 Y PD2RCALL DELAY_300ms;TIEMPO DE RETARDO PARA PODER VISUALIZAR LO ANTERIORSBIS PINC,PC1;PREGUNTA POR PC1=1? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_;SALTA A PC1_ SI PC1=0 SBIS PINC,PC0;PREGUNTA POR PC0=1? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_1;SALTA A PC1_1 SI PC0=0LDI R17,24;CARGO 24 QUE ES IGUAL A 0b00011000OUT PORTD,R17;SACO EL VALOR DE R17 POR EL PUERTO D OSEA ESTARIA ENCENDIDO PD4 Y PD3RCALL DELAY_300ms;TIEMPO DE RETARDO PARA PODER VISUALIZAR LO ANTERIORSBIS PINC,PC1;PREGUNTA POR PC1=1? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_;SALTA A PC1_ SI PC1=0 SBIS PINC,PC0;PREGUNTA POR PC0=1? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_1;SALTA A PC1_1 SI PC0=0RJMP JUEGO_DE_LEDS;SALTO A ETIQUETA JUEGO_DE_LEDS PARA REPETIR M EL CICLO DE NUEVO
LEDS_INTERMITENTES: SBIS PINC,PC1;PREGUNTA POR PC1=1? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_;SALTA A PC1_ SI PC1=0 SBIC PINC,PC0;PREGUNTA POR PC0=0? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_1;SALTA A PC1_1 SI PC0=1SER R17; INICIALIZO TODO EL REGISTRO R17 CON UNOSOUT PORTD,R17; SACO EL VALOR DE R17 POR EL PUERTO DRCALL DELAY_300ms;LLAMO A UNA SUBRUTINA DELAY _200ms PARA OBSERVAR LO ANTERIOR UN ; INSTANTESBIS PINC,PC1;PREGUNTA POR PC1=1? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_;SALTA A PC1_ SI PC1=0 SBIC PINC,PC0;PREGUNTA POR PC0=0? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_1;SALTA A PC1_1 SI PC0=1CLR R17; INICIALIZO TODO EL REGISTRO R17 CON CEROSOUT PORTD,R17; SACO EL VALOR DE R17 POR EL PUERTO DRCALL DELAY_300ms; LLAMO A UNA SUBRUTINA DELAY _200ms PARA OBSERVAR LO ANTERIOR ; UN INSTANTESBIS PINC,PC1;PREGUNTA POR PC1=1? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_;SALTA A PC1_ SI PC1=0 SBIC PINC,PC0;PREGUNTA POR PC0=0? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_1;SALTA A PC1_1 SI PC0=1RJMP LEDS_INTERMITENTES; SALTA A ETIQUETA LEDS_INTERMITENTES PARA HACER LOS CICLOS ; SUCESIVOS
AUTO_FANTASTICO: SBIC PINC,PC1;PREGUNTA POR PC1=0? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_; SALTA A PC1_ SI PC1=1SBIS PINC,PC0; PREGUNTA POR PC0=1? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_0;SALTA A PC1_0 SI PC0=0
AUTO_FANTASTICO1: CLC; BORRAMOS CARRYCLR R17; INICIALIZO TODO EL REGISTRO R17 CON CEROSLDI R17,1; CARGO R17 CON UNOA1: OUT PORTD,R17; SACO EL VALOR DE R17 POR EL PUERTO D AQUI SOLO PRENDE PD0 RCALL DELAY_300ms; LLAMO A UNA SUBRUTINA DELAY _300ms PARA OBSERVAR LO ANTERIOR UN ; INSTANTEROL R17; ROTO UN BIT A LA ISQUIERDA
SBIC PINC,PC1;PREGUNTA POR PC1=0? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_ ;SALTA A PC1_ SI PC1=1SBIS PINC,PC0;PREGUNTA POR PC0=1? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_0;SALTA A PC1_0 SI PC0=0BRCS AUTO_FANTASTICO2; ME PREGUNTO EXISTE CARRY AL FINAL C=1? SI EXISTE SALTA A ; AUTO_FANTASTICO2RJMP A1;MIENTRA NO CUMPLA LO ANTERIOR AQUI SALTAMOS A ETIQUETA A1 AUTO_FANTASTICO2: SBIC PINC,PC1;PREGUNTA POR PC1=0? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_;SALTA A PC1_ SI PC1=1CLC;BORRAMOS CARRYCLR R17;INICIALIZO TODO EL REGISTRO R17 CON CEROSLDI R17,128;CARGO R17 CON 0b10000000A2: OUT PORTD,R17; MUESTRO LO QUE CARGUE EN EL REGISTRO R17 POR EL PUERTO D AQUI SOLO ; PRENDE PD7RCALL DELAY_300ms;LLAMO A UNA SUBRUTINA DELAY _300ms PARA OBSERVAR LO ANTERIOR UN ; INSTANTEROR R17; ROTO A LA DERECHA EL BITSBIC PINC,PC1;PREGUNTA POR PC1=0? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_ ;SALTA A PC1_ SI PC1=1SBIS PINC,PC0;PREGUNTA POR PC0=1? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_0;SALTA A PC1_0 SI PC0=0BRCS AUTO_FANTASTICO1; ME PREGUNTO EXISTE CARRY AL FINAL C=1? SI EXISTE SALTA A ; AUTO_FANTASTICO1RJMP A2;MIENTRA NO CUMPLA LO ANTERIOR AQUI SALTAMOS A ETIQUETA A2
LED_APAGADO: SBIC PINC,PC1;PREGUNTA POR PC1=0? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_;SALTA A PC1_ SI PC1=1SBIC PINC,PC0;PREGUNTA POR PC0=0? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_0;SALTA A PC1_0 SI PC0=1CLR R17 ;BORRO EL REGISTRO R17OUT PORTD,R17;MUESTRO EL REGISTRO R17 POR EL PUERTO DRCALL DELAY_300ms;LLAMO A UNA SUBRUTINA DELAY _300ms PARA OBSERVAR LO ANTERIOR UN ; INSTANTESBIC PINC,PC1;PREGUNTA POR PC1=0? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_; SALTA A PC1_ SI PC1=1SBIC PINC,PC0;PREGUNTA POR PC0=0? SI LO ES SALTA UNA LINEA DE INSTRUCCIONRJMP PC1_0;SALTA A PC1_0 SI PC0=1RJMP LED_APAGADO;SALTO A ETIQUETA LED_APAGADO MIENTRAS NO CUMPLA LO ANTERIOR OSEA ; PC0=1;--------------------------------------------------; CARGAREMOS A LOS REGISTROS DE LA SIGUIENTE MODO: |; 45;46;49 EN ESTE ORDEN Y NOS DARA APROXIMADAMENTE |; UN TIEMPO DE 300ms |;--------------------------------------------------
DELAY_300ms: LDI R18,45;CARGAMOS 45 EN DECIMAL AL REGISTRO R18X0: LDI R19,46;CARGAMOS 46 EN DECIMAL AL REGISTRO R19X1: LDI R20,49;CARGAMOS 49 EN DECIMAL AL REGISTRO R20X2: DEC R20;DECREMENTO EN UNA UNIDAD AL REGISTRO R20 BRNE X2;MIENTRAS QUE R20 SEA DIFERENTE DE CERO SALTAR A X2 DEC R19;DECREMENTO EN UNA UNIDAD AL REGISTRO R19 BRNE X1;MIENTRAS QUE R19 SEA DIFERENTE DE CERO SALTAR A X1 DEC R18;DECREMENTO EN UNA UNIDAD AL REGISTRO R18 BRNE X0;MIENTRAS QUE R18 SEA DIFERENTE DE CERO SALTAR A X0 RET ;RETORNO A LA SIGUIENTE LINEA DE DONDE FUE LLAMADO
C.-HACER LA SIMULACION
PC1=0 Y PC0=0
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
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330
R8
330
D1LED-YELLOW
D2LED-YELLOW
D3LED-YELLOW
D4LED-YELLOW
D5LED-YELLOW
D6LED-YELLOW
D7LED-YELLOW
D8LED-YELLOW
R910k
R1010k
PC1 PC0
0 0
PC1 PC0
PC1=0 Y PC0=1
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
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330
R8
330
D1LED-YELLOW
D2LED-YELLOW
D3LED-YELLOW
D4LED-YELLOW
D5LED-YELLOW
D6LED-YELLOW
D7LED-YELLOW
D8LED-YELLOW
R910k
R1010k
PC1 PC0
0 1
PC1 PC0
PC1=1 Y PC0=0
PB0/ICP114
PB1/OC1A15
PB2/SS/OC1B16
PB3/MOSI/OC217
PB4/MISO18
PB5/SCK19
PB6/TOSC1/XTAL19
PB7/TOSC2/XTAL210PC6/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
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330
R8
330
D1LED-YELLOW
D2LED-YELLOW
D3LED-YELLOW
D4LED-YELLOW
D5LED-YELLOW
D6LED-YELLOW
D7LED-YELLOW
D8LED-YELLOW
R910k
R1010k
PC1 PC0
1 0
PC1 PC0
PC1=1 Y PC0=1
PB0/ICP114
PB1/OC1A15
PB2/SS/OC1B16
PB3/MOSI/OC217
PB4/MISO18
PB5/SCK19
PB6/TOSC1/XTAL19
PB7/TOSC2/XTAL210PC6/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
R1
330
R2
330
R3
330
R4
330
R5
330
R6
330
R7
330
R8
330
D1LED-YELLOW
D2LED-YELLOW
D3LED-YELLOW
D4LED-YELLOW
D5LED-YELLOW
D6LED-YELLOW
D7LED-YELLOW
D8LED-YELLOW
R910k
R1010k
PC1 PC0
1 1
PC1 PC0
PROBLEMA8.-
A.-REALIZAR EL DIAGRAMA DE FLUJO DEL PROGRAMA
B.- ESCRIBA LAS INSTRUCCIONES
.INCLUDE "M8DEF.INC"
.CSEG
.ORG 0x0000
. RJMP INICIO
.ORG 0x0020 INICIO: LDI R16,HIGH(RAMEND) OUT SPH,R16
LDI R16,LOW(RAMEND) OUT SPL,R16;----------------------------------------------------------------------; DECLARO LAS ENTRADAS PARA LOS PULASDORES:BP,BM,BI,S |;---------------------------------------------------------------------- CBI DDRB,PB0; DECLARO BP COMO ENTRADA
CBI DDRB,PB1; DECLARO BM COMO ENTRADA CBI DDRB,PB2; DECLARO BI COMO ENTRADA CBI DDRD,PD0; DECLARO S COMO ENTRADA
;--------------------------------------------------------; DECLARO LA SALIDA PARA EL MOTOR DC |;-------------------------------------------------------- LDI R16,3;CARGO 0b00000011
OUT DDRC,R16; DECLARO PC0 Y PC1 COMO SALIDA DEL MOTOR;--------------------------------------------------------; SUPERVICION |;--------------------------------------------------------
SUPERVISION_S: SBIC PIND,PD0; PREGUNTO POR PD0=0? SI ES CIERTO NO LEE LA SIGUIENTE LINEA DE LA ; PROGRAMACIONRJMP SUPERVISION_S ; SALTO A SUPERVISION_S SI PD0=1
LDI R16,1; CARGO UNO EN DECIMAL AL REGISTRO R16RCALL DELAY_500ms ; UNA PAUSA PARA LEER LO QUE BIENE DESPUES DE ESTO
PREGUNTA_PB0: SBIS PINB,PB0;PREGUNTO POR PB1=1? SI ES CIERTO NO LEE LA SIGUIENTE LINEA DE LA ; PROGRAMACIONRJMP APAGADO; SALTO A APAGADO SI LO ANTERIOR ES PB1=0PREGUNTA_PB1: SBIC PINB,PB1; PREGUNTO POR PB1=0? SI ES CIERTO NO LEE LA SIGUIENTE LINEA DE LA ; PROGRAMACIONRJMP INTERMITENTE; SI LO ANTERIOR SE COMPRUEBA QUE PB1=1 SALTAMOS A INTERMITENTERJMP MARCHA; SI LO ANTERIOR SE COMPRUEBA QUE PB1=0 SALTAMOS A MARCHA MARCHA: OUT PORTC,R16; SACO EL VALOR DE R16 POR EL PUERTO C OSEA 1 LOGICORCALL DELAY_500ms; RETARDO PARA OBSERVAR LO ANTERIORSBIS PINB,PB0; PREGUNTO POR PB0=1? SI ES CIERTO NO LEE LA SIGUIENTE LINEA DE LA ; PROGRAMACIONRJMP APAGADO ; SI LO ANTERIOR ES PB0=0 SALTAMOS A APAGADOSBIS PINB,PB2;PREGUNTO POR PB2=1? SI ES CIERTO NO LEE LA SIGUIENTE LINEA DE LA
; PROGRAMACIONRJMP PREGUNTA_PB1; SI LO ANTERIOR ES PB2=0 SALTAMOS A PREGUNTA_PB1RJMP MARCHA; SI PB2=1 SALTAMOS A MARCHA
APAGADO: CBI PORTC,PC0;MUESTRO CERO LOGICO POR EL PUERTO C RCALL DELAY_500ms;UN RETARDO PARA PODER PERCATAR LO ANTERIORSBIS PINB,PB0;PREGUNTO POR PB0=1? SI ES CIERTO NO LEE LA SIGUIENTE LINEA DE LA ; PROGRAMACIONRJMP APAGADO ; SI LO ANTERIOR PB0=0 SALTAMOS A APGADORJMP PREGUNTA_PB1;SI LO ANTERIOR PB0=1 SALTA A PREGUNTA_PB1
INTERMITENTE: SBIS PINB,PB0;PREGUNTO POR PB0=1? SI ES CIERTO NO LEE LA SIGUIENTE LINEA DE LA ; PROGRAMACIONRJMP APAGADO; SALTA A APAGADO SI PB0=0SBIS PINB,PB1;PREGUNTO POR PB1=1? SI ES CIERTO NO LEE LA SIGUIENTE LINEA DE LA ; PROGRAMACIONRJMP MARCHA; SALTA A MARCHA SI PB1=0SBIC PINB,PB2;PREGUNTO POR PB2=0? SI ES CIERTO NO LEE LA SIGUIENTE LINEA DE LA ; PROGRAMACIONRCALL APA;LLAMO A LA SUBRRUTINA SI PB2=1SBIS PINB,PB2;PREGUNTO POR PB2=1? SI ES CIERTO NO LEE LA SIGUIENTE LINEA DE LA; PROGRAMACIONRCALL PRE; LLAMO A LA SUBRRUTINA SI PB2=0RJMP INTERMITENTE;SALTO A ETIQUETA INTERMITENTEPRE: SBI PORTC,PC0; MUESTRO UNO LOGICO POR PC0RET; RETORNA A LA SIGUIENTE LINEA DE DONDE FUE LLAMADOAPA: CBI PORTC,PC0;MUESTRO CERO LOGICO POR PC0RCALL DELAY_500ms;LLAMO UN RETARDO PARA APRECIAR LO ANTERIORRET;RETORNA A LA SIGUIENTE LINEA DE DONDE FUE LLAMADO
;--------------------------------------------------; CARGAREMOS A LOS REGISTROS DE LA SIGUIENTE MODO: |; 73;51;46 EN ESTE ORDEN Y NOS DARA APROXIMADAMENTE |; UN TIEMPO DE 500ms |;--------------------------------------------------
DELAY_500ms: LDI R18,73Y0: LDI R19,51Y1: LDI R20,46Y2: DEC R20
BRNE Y2 DEC R19 BRNE Y1 DEC R18 BRNE Y0 RET
CUANDO EL SENSOR ESTA ABIERTO NO PASA NADA ASI LOS PULSADORES ESTEN CERRADOS
CUANDO CERRAMOS EL CENSOR Y CERRAMOS BP
CERRAMOS “S” Y CERRAMOS “BM”
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
IN12 OUT1 3
OUT2 6
OUT3 11
OUT4 14
IN27
IN310
IN415
EN11
EN29
VS
8
VSS
16
GND GND
U2
L293D
0.0
0
R110k
R210k
R310k
R410k
BP
BM
BI
S
(PARADA)
(MARCHA)
(INTERMITENTE)
(SENSOR)
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
IN12 OUT1 3
OUT2 6
OUT3 11
OUT4 14
IN27
IN310
IN415
EN11
EN29
VS
8
VSS
16
GND GND
U2
L293D
+13
5
R110k
R210k
R310k
R410k
BP
BM
BI
S
(PARADA)
(MARCHA)
(INTERMITENTE)
(SENSOR)
CERRAMOS “S” Y CERRAMOS “BI”
PROBLEMA 9.-
A.-REALIZAR EL DIAGRAMA DE FLUJO
B.-ESCRIBA LAS INSTRUCCIONES ,COMENTADAS
.INCLUDE"M8DEF.INC"
.CSEG
.ORG 0X000RJMP INICIO;------------------------------;DECLARO LAS ENTRADAS |;------------------------------
INICIO:LDI R16,255; CARGO 0b11111111 EN EL REGISTRO R16OUT DDRD,R16;SACO EL VALOR DE R16 POR EL PUERTO D DANDO COMO SALIDAD A TODO EL PUERTO DCBI DDRB,PB0;DECLARO ENTRADA A PB0;----------------------------;INTERRUPTOR |;----------------------------INTERRUPTOR:SBIC PINB,PB0; PREGUNTO PB0=0? SI LO ES SALTO UNA LINEA DE PROGRAMACION OSEA NO LO LEO LA LINEA SIGUIENTE RJMP CONTEO; SALTO A CONTEO SI PB0=1SBIS PINB,PB0; PREGUNTO PB0=1? SI LO ES SALTO UNA LINEA DE PROGRAMACION OSEA NO LO LEO LA LINEA SIGUIENTE RJMP HOLA;SALTO A HOLA SI PB0=0RJMP INTERRUPTOR ; SALTO A INTERRUPCION
CONTEO:LDI R17,0B00111111;CARGO EN R17 0B00111111OUT PORTD,R17;MUESTRO LO ANTERIOR O SEA R17 SACO POR EL PUERTO DRCALL DELAY; LLAMO A SUBRRUTINA PARA VISUALIZAR LO ANTERIOR
LDI R17,0B00000110;CARGO EN R17 0B00000110OUT PORTD,R17;MUESTRO LO ANTERIOR O SEA R17 SACO POR EL PUERTO DRCALL DELAY; LLAMO A SUBRRUTINA PARA VISUALIZAR LO ANTERIOR
LDI R17,0B01011011;CARGO EN R17 0B01011011OUT PORTD,R17;MUESTRO LO ANTERIOR O SEA R17 SACO POR EL PUERTO DRCALL DELAY;LLAMO A SUBRRUTINA PARA VISUALIZAR LO ANTERIOR
LDI R17,0B01001111;CARGO EN R17 0B01001111OUT PORTD,R;LLAMO A SUBRRUTINA PARA VISUALIZAR LO ANTERIOR17RCALL DELAY
LDI R17,0B01100110;CARGO EN R17 0B01100110OUT PORTD,R17;MUESTRO LO ANTERIOR O SEA R17 SACO POR EL PUERTO DRCALL DELAY;LLAMO A SUBRRUTINA PARA VISUALIZAR LO ANTERIOR
LDI R17,0B01101101;CARGO EN R17 0B01101101OUT PORTD,R17;MUESTRO LO ANTERIOR O SEA R17 SACO POR EL PUERTO DRCALL DELAY;LLAMO A SUBRRUTINA PARA VISUALIZAR LO ANTERIOR
LDI R17,0B01111101;CARGO EN R17 0B01111101OUT PORTD,R17;MUESTRO LO ANTERIOR O SEA R17 SACO POR EL PUERTO DRCALL DELAY;LLAMO A SUBRRUTINA PARA VISUALIZAR LO ANTERIOR
LDI R17,0B00000111;CARGO EN R17 0B00000111OUT PORTD,R17;MUESTRO LO ANTERIOR O SEA R17 SACO POR EL PUERTO DRCALL DELAY;LLAMO A SUBRRUTINA PARA VISUALIZAR LO ANTERIOR
LDI R17,0B01111111;CARGO EN R17 0B01111111OUT PORTD,R17;MUESTRO LO ANTERIOR O SEA R17 SACO POR EL PUERTO DRCALL DELAY;LLAMO A SUBRRUTINA PARA VISUALIZAR LO ANTERIOR
LDI R17,0B01100111;CARGO EN R17 0B01100111OUT PORTD,R17;MUESTRO LO ANTERIOR O SEA R17 SACO POR EL PUERTO DRCALL DELAY;LLAMO A SUBRRUTINA PARA VISUALIZAR LO ANTERIORRJMP INTERRUPTOR;SALTO A INTERRUPTOR
HOLA:LDI R17,0B01110110;CARGO EN R17 0B01110110OUT PORTD,R17;MUESTRO LO ANTERIOR O SEA R17 SACO POR EL PUERTO DRCALL DELAY;LLAMO A SUBRRUTINA PARA VISUALIZAR LO ANTERIOR
LDI R17,0B00111111;CARGO EN R17 0B00111111OUT PORTD,R17;MUESTRO LO ANTERIOR O SEA R17 SACO POR EL PUERTO DRCALL DELAY;LLAMO A SUBRRUTINA PARA VISUALIZAR LO ANTERIOR
LDI R17,0B00111000;CARGO EN R17 0B00111000OUT PORTD,R17;MUESTRO LO ANTERIOR O SEA R17 SACO POR EL PUERTO DRCALL DELAY;LLAMO A SUBRRUTINA PARA VISUALIZAR LO ANTERIOR
LDI R17,0B01110111;CARGO EN R17 0B01110111OUT PORTD,R17;MUESTRO LO ANTERIOR O SEA R17 SACO POR EL PUERTO DRCALL DELAY;LLAMO A SUBRRUTINA PARA VISUALIZAR LO ANTERIOR
RJMP INTERRUPTOR ; SALTO A INTERRUPCION;--------------------------------------------------; CARGAREMOS A LOS REGISTROS DE LA SIGUIENTE MODO: |; 46;60;60 EN ESTE ORDEN Y NOS DARA APROXIMADAMENTE |; UN TIEMPO DE 500ms |;--------------------------------------------------
DELAY: LDI R20,46 X3: LDI R19,60 X2: LDI R18,60 X1: DEC R18 BRNE X1 DEC R19 BRNE X2 DEC R20 BRNE X3 RET
C.- HACER LA SIMULACION
PULSADOR ABIERTO EMPIEZA A CONTAR
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
CIERRO EL PULSADOR EMPIZA A MOSTRAR LAS LETRAS H-O-L-A
PB0/ICP114
PB1/OC1A15
PB2/SS/OC1B16
PB3/MOSI/OC217
PB4/MISO18
PB5/SCK19
PB6/TOSC1/XTAL19
PB7/TOSC2/XTAL210PC6/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
PROBLEMA 10.-
B.-ESCRIBA LAS INSTRUCCIONES ,COMENTADAS
.INCLUDE "M8DEF.INC" .CSEG .ORG 0X000 RJMP INICIO
INICIO: LDI R16,255;CARGO 0B11111111 EN R16 OUT DDRD,R16;DECLARO SALIDA EL PUERTO D CBI DDRB,PB0;PONGO PB0 COMO ENTADA CBI DDRB,PB1;PONGO PB1 COMO ENTRADA LDI R17,0;CARGO 0 EN DECIMAL LDI R21,9;CARGO 9 EN DECIMAL INTERRUPTOR: SBIS PINB,PB0;PREGUNTO PB0=1? SI LO ES SALTA UNA LINEA RJMP DESCENDENTE; SI PB0=0 SALTAMOS A DECENDENTE RJMP ASCENDENTE;SI PB0=1 SALTAMOS ASCENDENTE
ASCENDENTE: SBIC PINB,PB1;PREGUNTO PB1=0? SI LO ES SALTA UNA LINEA RJMP ASCENDENTE;SI PB1=1 SALTO A ASCENDENTE RCALL DELAY;RETARDO OUT PORTD,R17;MUESTRO EL VALOR DE R17 Y LO SACO POR EL PUERTO D INC R17;INCREMENTO R17 EN UNA UNIDAD CPI R17,10;COMPARO CON 10 BREQ I1;SI LO ANTERIOR ES IGUAL OSEA R17=10 SALTO A ETIQUETA I1 RJMP INTERRUPTOR;SALTO A INTERRUPTOR
DESCENDENTE: SBIC PINB,PB1;PREGUNTO PB1=0? SI LO ES SALTA UNA LINEA RJMP DESCENDENTE;SI PB1=1 SALTO A ASCENDENTE RCALL DELAY;RETARDO OUT PORTD,R21;MUESTRO EL VALOR DE R21 Y LO SACO POR EL PUERTO D DEC R21;DECREMENTO A R21 EN UNA UNIDAD CPI R21,-1 ;COMPARO CON -1 BREQ I2;SI LO ANTERIOR ES IGUAL OSEA R21=-1 SALTO A ETIQUETA I2 RJMP INTERRUPTOR;SALTO A INTERRUPTOR
I1: LDI R17,0;INICIALIZO DE NUEVO CON CERO A R17 RJMP ASCENDENTE; SALTO ASCENDENTE I2: LDI R21,9;INICIALIZO DE NUEVO CON NUEVE A R21 RJMP DESCENDENTE; SALTO DESCENDENTE
DELAY: ;CREACION DE RETARDO LDI R20,50 X3:LDI R19,45 X2:LDI R18,40 X1:DEC R18 BRNE X1 DEC R19 BRNE X2 DEC R20 BRNE X3 RET
C.-HACER SIMULACION
PB1=0 Y PB0=0
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
A7 QA 13
B1 QB 12
C2 QC 11
D6 QD 10
BI/RBO4 QE 9
RBI5 QF 15
LT3 QG 14
U2
7447
R9
330R10
330R11
330R12
330R13
330R14
330R15
330
R110k
R210k
PB0=1 Y PB1=0 ESTA EN MODO ASCENDENTE
PB0/ICP114
PB1/OC1A15
PB2/SS/OC1B16
PB3/MOSI/OC217
PB4/MISO18
PB5/SCK19
PB6/TOSC1/XTAL19
PB7/TOSC2/XTAL210PC6/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
A7 QA 13
B1 QB 12
C2 QC 11
D6 QD 10
BI/RBO4 QE 9
RBI5 QF 15
LT3 QG 14
U2
7447
R9
330R10
330R11
330R12
330R13
330R14
330R15
330
R110k
R210k
PB0=0 Y PB1=0 EN MODO DESCEMNDENTE
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
A7 QA 13
B1 QB 12
C2 QC 11
D6 QD 10
BI/RBO4 QE 9
RBI5 QF 15
LT3 QG 14
U2
7447
R9
330R10
330R11
330R12
330R13
330R14
330R15
330
R110k
R210k