Vous êtes sur la page 1sur 10

ESCUELA POLITCNICA NACIONAL

FACULTAD DE INGENIERA ELCTRICA


Y ELECTRNICA

LABORATORIO DE
SISTEMAS MICROPROCESADOS
TRABAJO PREPARATORIO
Prctica No:
Tema:

9
Aplicaciones de Interrupciones

Paralelo:
Grupo:

Realizado por:

Estefana Erreyes
Edwin Cabrera

Fecha de Entrega:

2016-06-22
Semestre 2016A

Escuela Politcnica Nacional


Facultad de Ingeniera Elctrica y Electrnica
LABORATORIO DE SISTEMAS MICROPROCESADOS

ESCUELA POLITCNICA NACIONAL


Campus Politcnico "J. Rubn Orellana R."
FACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA
LABORATORIO DE SISTEMAS MICROPROCESADOS
PRCTICA N9
TEMA:

Aplicaciones de Interrupciones

OBJETIVO:

DISEAR UN CIRCUITO, Y EL SOFTWARE ASOCIADO PARA MANEJAR UN


DISPOSITIVO QUE CONTROLA UN JUEGO DE 4 JUGADORES, EN CONJUNTO CON
4 DISPLAY DE 7 SEGMENTOS E INDICADORES Y SENSORES ADICIONALES. EL
DISPLAY USAR LA TCNICA DE BARRIDO, Y SE TRABAJAR EXCLUSIVAMENTE
CON INTERRUPCIONES EXTERNAS (INT0, INT1, INT2 Y DE CAMBIO DE ESTADO)
PARA MANEJO DE LOS SENSORES.

DESARROLLO:
.include"m164pdef.inc"
;definicion de Variables
.def pause = r14
.def num_gan = r15
.def tempo = r16
.def dig = r17
.def cont = r18
.def jug1 = r19
.def jug2 = r20
.def jug3 = r21
.def jug4 = r22
.def last_state = r23
.def actual_state = r24
;Espacio SRAM
.dseg
aros:

.byte 4

;Inicio Programa Principal


.cseg
.org 0x00
JMP
.org 0x02
JMP
.org 0x04
JMP
.org 0x06
JMP
.org 0x08
JMP

Main
Reinicio_Juego
Pausa_Reanudar
Alarma_Off
Conteo_Aros

;Programa Principal
Main:
;definicion de Puertos
clr tempo
out ddra,tempo
ldi tempo,0b00001000

Escuela Politcnica Nacional


Facultad de Ingeniera Elctrica y Electrnica
LABORATORIO DE SISTEMAS MICROPROCESADOS
out
ldi
out
ldi
out

ddrb,tempo
tempo,0b01111111
ddrc,tempo
tempo,0b11110000
ddrd,tempo

;Estado Alto En Entradas


ser tempo
out porta,tempo
ldi tempo,0b11110111
out portb,tempo
ldi tempo,0b11111111
out portc,tempo
ldi tempo,0b11111111
out portd,tempo
;PUD En Cero Logico
in tempo,MCUCR
andi tempo,0b11101111
out MCUCR,tempo
;Inicializacin del Stack
ldi tempo,high(ramend)
out SPH,tempo
ldi tempo,low(ramend)
out SPL,tempo
;Habilitacion de Interrupciones Globales
SEI
;Habilitacion de INT0 INT1 INT2
ldi tempo,0b00000111
out EIMSK,tempo
;Configuracion del Flanco
;FALLING EDGE
ldi tempo,0b000101010
sts EICRA,tempo
;Eliminar Habilitaciones Pendientes
ldi tempo,0b00000111
out EIFR,tempo
;Habilitacion de Interrupciones PCINT0
ldi tempo,0b00000001
sts PCICR,tempo
;Habilitacion Mascara de PCINT0
ldi tempo,0b00001111
sts PCMSK0,tempo
;Eliminar Habilitaciones Pendientes
ldi tempo,0b00001111
out PCIFR,tempo
;Inicializacion de Estados
clr pause
clr num_gan
clr jug1
clr jug2
clr jug3
clr jug4
call datos_SRAM
;Obtencion del Estado Anterior
in last_state,PINA
;Barrido del display
Barrido:
ldi dig,0xEF
ldi cont,4
ldi xl,low(aros)
ldi xh,high(aros)
Lazo:

Escuela Politcnica Nacional


Facultad de Ingeniera Elctrica y Electrnica
LABORATORIO DE SISTEMAS MICROPROCESADOS
ld tempo,x+
call bin_dec
out portd,dig
out portc,tempo
call Retardo
ldi tempo,0xFF
out portd,tempo
sec
rol dig
dec cont
brne Lazo
;Generacion del Sonido de La Alarma
lds tempo,PCICR
sbrc tempo,0
RJMP Barrido
sbrc pause,0
RJMP Barrido
in tempo,PINB
com tempo
out portb,tempo
call Retardo
com tempo
out portb,tempo
RJMP Barrido
;Rutina de Interrupcion PCINT0
;Conteo de Aros Realizados
Conteo_Aros:
;Salvo Estado
push tempo
in tempo,SREG
push tempo
in actual_state,PINA
eor actual_state,last_state
in last_state,PINA
sbrc
call
sbrc
call
sbrc
call
sbrc
call

actual_state,0
Jugador1
actual_state,1
Jugador2
actual_state,2
Jugador3
actual_state,3
Jugador4

;Conteo de Ganadores
cpi jug1,9
in tempo,SREG
sbrc tempo,1
inc num_gan
cpi jug2,9
in tempo,SREG
sbrc tempo,1
inc num_gan
cpi jug3,9
in tempo,SREG
sbrc tempo,1
inc num_gan
cpi jug4,9
in tempo,SREG
sbrc tempo,1
inc num_gan
mov tempo,num_gan
cpi tempo,2
breq Salto_1
cpi tempo,3
breq Empate_de_3
cpi tempo,4
breq Salto_2
cpi tempo,1

Escuela Politcnica Nacional


Facultad de Ingeniera Elctrica y Electrnica
LABORATORIO DE SISTEMAS MICROPROCESADOS
in tempo,SREG
sbrc tempo,1
rjmp Ganador
JMP Fin
Salto_1:
rjmp Empate_de_2
Salto_2:
rjmp Empate_Total
;Cuando Tres Concursantes Empatan
Empate_de_3:
cp jug1,jug2
in tempo,SREG
sbrc tempo,1
call Empate_3_1_2
cp jug2,jug3
in tempo,SREG
sbrc tempo,1
call Empate_3_2_3
cp jug3,jug4
in tempo,SREG
sbrc tempo,1
call Empate_3_3_4
call datos_SRAM
;deshabilito Interrupciones PCINT0
ldi tempo,0x00
sts PCICR,tempo
JMP Fin
Empate_3_3_4:
cp jug1,jug4
in tempo,SREG
sbrc tempo,1
call Empate_3_1_3_4
ret
Empate_3_1_3_4:
ldi jug1,11
ldi jug2,12
ldi jug3,11
ldi jug4,11
ret
Empate_3_2_3:
cp jug2,jug4
in tempo,SREG
sbrc tempo,1
call Empate_3_2_3_4
ret
Empate_3_2_3_4:
ldi jug1,12
ldi jug2,11
ldi jug3,11
ldi jug4,11
ret
Empate_3_1_2:
cp jug1,jug3
in tempo,SREG
sbrc tempo,1
call Empate_3_1_2_3
cp jug1,jug4
in tempo,SREG
sbrc tempo,1
call Empate_3_1_2_4
ret
Empate_3_1_2_3:
ldi jug1,11
ldi jug2,11
ldi jug3,11
ldi jug4,12
ret

Escuela Politcnica Nacional


Facultad de Ingeniera Elctrica y Electrnica
LABORATORIO DE SISTEMAS MICROPROCESADOS
Empate_3_1_2_4:
ldi jug1,11
ldi jug2,11
ldi jug3,12
ldi jug4,11
ret
;Cuando Existe Un Empate Total
Empate_Total:
ldi jug1,11
ldi jug2,11
ldi jug3,11
ldi jug4,11
call datos_SRAM
;deshabilito Interrupciones PCINT0
ldi tempo,0x00
sts PCICR,tempo
JMP Fin
;Cuando Existe Un Solo Ganador
Ganador:
cpi jug1,9
in tempo,SREG
sbrc tempo,1
call Ganador_1
cpi jug2,9
in tempo,SREG
sbrc tempo,1
call Ganador_2
cpi jug3,9
in tempo,SREG
sbrc tempo,1
call Ganador_3
cpi jug4,9
in tempo,SREG
sbrc tempo,1
call Ganador_4
call datos_SRAM
;deshabilito Interrupciones PCINT0
ldi tempo,0x00
sts PCICR,tempo
JMP Fin
Ganador_1:
ldi
ldi
ldi
ldi
ret
Ganador_2:
ldi
ldi
ldi
ldi
ret
Ganador_3:
ldi
ldi
ldi
ldi
ret
Ganador_4:
ldi
ldi
ldi
ldi
ret

jug1,10
jug2,12
jug3,12
jug4,12

jug1,12
jug2,10
jug3,12
jug4,12

jug1,12
jug2,12
jug3,10
jug4,12

jug1,12
jug2,12
jug3,12
jug4,10

;Cuando dos Concursantes Empatan


Empate_de_2:
cp jug1,jug2
in tempo,SREG

Escuela Politcnica Nacional


Facultad de Ingeniera Elctrica y Electrnica
LABORATORIO DE SISTEMAS MICROPROCESADOS
sbrc tempo,1
call Empate_1_2
cp jug1,jug3
in tempo,SREG
sbrc tempo,1
call Empate_1_3
cp jug1,jug4
in tempo,SREG
sbrc tempo,1
call Empate_1_4
cp jug2,jug3
in tempo,SREG
sbrc tempo,1
call Empate_2_3
cp jug2,jug4
in tempo,SREG
sbrc tempo,1
call Empate_2_4
cp jug3,jug4
in tempo,SREG
sbrc tempo,1
call Empate_3_4
call datos_SRAM
;deshabilito Interrupciones PCINT0
ldi tempo,0x00
sts PCICR,tempo
JMP Fin
Empate_1_2:
ldi
ldi
ldi
ldi
ret
Empate_1_3:
ldi
ldi
ldi
ldi
ret
Empate_1_4:
ldi
ldi
ldi
ldi
ret
Empate_2_3:
ldi
ldi
ldi
ldi
ret
Empate_2_4:
ldi
ldi
ldi
ldi
ret
Empate_3_4:
ldi
ldi
ldi
ldi
ret

jug1,11
jug2,11
jug3,12
jug4,12

jug1,11
jug2,12
jug3,11
jug4,12

jug1,12
jug2,11
jug3,11
jug4,12

jug1,12
jug2,11
jug3,11
jug4,12

jug1,12
jug2,11
jug3,12
jug4,11

jug1,12
jug2,12
jug3,11
jug4,11

;Lazo del Jugador1


Jugador1:
sbis pina,0
ret
inc jug1
call datos_SRAM
ret
;Lazo del Jugador2

Escuela Politcnica Nacional


Facultad de Ingeniera Elctrica y Electrnica
LABORATORIO DE SISTEMAS MICROPROCESADOS
Jugador2:
sbis pina,1
ret
inc jug2
call datos_SRAM
ret
;Lazo del Jugador3
Jugador3:
sbis pina,2
ret
inc jug3
call datos_SRAM
ret
;Lazo del Jugador4
Jugador4:
sbis pina,3
ret
inc jug4
call datos_SRAM
ret
Fin:
;Recupero Estado
pop tempo
out SREG,tempo
pop tempo
reti
;Rutina de Interrupcion INT0
;Reinico de Contadores Y Juego
Reinicio_Juego:
;Salvo Estado
push tempo
in tempo,SREG
push tempo
;Habilito Interrupciones PCINT0
ldi tempo,0x01
sts PCICR,tempo
;Limpio Registros
clr jug1
clr jug2
clr jug3
clr jug4
clr num_gan
call datos_SRAM
;Recupero Estado
pop tempo
out SREG,tempo
pop tempo
reti
;Rutina de Interrupcion INT1
;Pausa Y Reanudacion del Juego
Pausa_Reanudar:
;Salvo Estado
push tempo
inc pause
ldi tempo,2
cp pause,tempo
in tempo,SREG
sbrc tempo,1
rjmp Habilitacion
rjmp Inhabilitacion
Habilitacion:
;Habilito Interrupciones PCINT0
ldi tempo,0x01
sts PCICR,tempo
clr pause
rjmp End
Inhabilitacion:
ldi tempo,0x00

Escuela Politcnica Nacional


Facultad de Ingeniera Elctrica y Electrnica
LABORATORIO DE SISTEMAS MICROPROCESADOS
sts PCICR,tempo
End:
;Recupero Estado
pop tempo
reti
reti
;Rutina de Interrupcion INT2
;Apagado de La Alarma del Ganador
Alarma_Off:
;Salvo Estado
push tempo
;Habilito Interrupciones PCINT0
ldi tempo,0x01
sts PCICR,tempo
;Recupero Estado
pop tempo
reti
;Retardo
Retardo:
;Salvo Estado
push tempo
in tempo,SREG
push tempo
push dig
push cont
ldi dig,16
Retardo_1:
ldi cont,19
Retardo_2:
dec cont
brne Retardo_2
dec dig
brne Retardo_1
nop nop nop
;Recupero Estado
pop cont
pop dig
pop tempo
out SREG,tempo
pop tempo
ret
;Retardo de La Alarma
Retardo_Alarma:
;Salvo Estado
push tempo
in tempo,SREG
push tempo
push dig
push cont
ldi dig,5
Retardo_3:
ldi cont,4
Retardo_4:
dec cont
brne Retardo_4
dec dig
brne Retardo_3
nop nop nop
;Recupero Estado
pop cont
pop dig
pop tempo
out SREG,tempo
pop tempo
ret
;datos En La SRAM
datos_SRAM:

Escuela Politcnica Nacional


Facultad de Ingeniera Elctrica y Electrnica
LABORATORIO DE SISTEMAS MICROPROCESADOS
ldi xl,low(aros)
ldi xh,high(aros)
st x+,jug1
st x+,jug2
st x+,jug3
st x,jug4
ret
;Binario A Hexadecimal
bin_dec:
ldi zl,low(tabla_bin_dec<<1)
ldi zh,high(tabla_bin_dec<<1)
add zl,tempo
clr tempo
adc zh,tempo
lpm tempo,z
ret
;Tabla
tabla_bin_dec:
.db 0b00111111,0b00000110
.db 0b01011011,0b01001111
.db 0b01100110,0b01101101
.db 0b01111101,0b00000111
.db 0b01111111,0b01101111
.db 0b01111101,0b11111001;GANADOR, EMPATE ,G,E
.db 0b00000000,0b00000000

Vous aimerez peut-être aussi