Sol Lab2 Calificado Ciclo2023-I
Sol Lab2 Calificado Ciclo2023-I
Sol Lab2 Calificado Ciclo2023-I
DE CIENCIA DE LA
COMPUTACION
“ARQUITECTURA DE COMPUTADORES” (CC221)
CICLO 2023 - I
Solucionario del 2do. Laboratorio Calificado
Por: Lic. César Martín Cruz Salazar
Tiempo: 2h.45m.
inter_ext0:
jnb P3.3,salir
;Parpadea 4 veces
mov R7,#4
repite_:
mov R0,#offDsp
lcall wrLCDcom4
lcall retardo2
lcall retardo2
mov R0,#onDsp
lcall wrLCDcom4
lcall retardo2
lcall retardo2
djnz R7,repite_
;Hacia la izq.
mov R0,#offCur
lcall wrLCDcom4
repite:
mov R7,#16
lazo:
mov R0,#shLfDsp
lcall wrLCDcom4
lcall retardo
lcall retardo
lcall retardo2
djnz R7,lazo
mov R0,#offCur
lcall wrLCDcom4
;Hacia la der.
mov R7,#16
lazo2:
mov R0,#shRtDsp
lcall wrLCDcom4
lcall retardo
lcall retardo
lcall retardo2
djnz R7,lazo2
mov R0,#offCur
lcall wrLCDcom4
lcall retardo2
lcall retardo2
lcall retardo2
jnb P3.3,salir
sjmp repite
salir:
reti
inter_ext1:
mov A,#1
mov B,#0
lcall placeCur4
lcall prtLCD4
db "Siempre adelante"
db 0
mov A,#2
mov B,#0
lcall placeCur4
lcall prtLCD4
db "Todo es posible ",0
reti
$INCLUDE(subrutinas_LCD_sim.inc)
$INCLUDE(subrutinasDeUsoFreq.inc)
end
org 0h
sjmp inicio
;Aqui empieza la rutina de interrupción
org 03h
ljmp intExt0
org 13h
ljmp intExt1
inicio:
lcall configura_LCD
setb IT0 ;fija la interrupción externa sensible en el flanco de bajada
setb IT1 ;fija la interrupción externa sensible en el flanco de bajada
setb EX0 ;habilita interrupción externa 0 en el registro IE
setb EX1
setb EA ;flag de interrupción maestra del registro IE
setb p3.2 ;fija el pin p3.2 como entrada botón conectado
setb p3.3
lcall prtLCD4
db "Frecuencia :",0
mov A,#2
mov B,#10
lcall placeCur4
lcall prtLCD4
db "25hz",0
mov R0,#offCur
lcall wrLCDcom4
repite:
lcall _25hz
sjmp repite
intExt0:
mov A,#2
mov B,#10
lcall placeCur4
lcall prtLCD4
db "69hz",0
repite1:
jnb P3.3,sale
lcall _69hz
sjmp repite1
sale:
reti
intExt1:
mov A,#2
mov B,#10
lcall placeCur4
lcall prtLCD4
db "129hz",0
repite2:
jnb P3.2,sale1
lcall _129hz
sjmp repite2
sale1:
reti
_25hz:
setb TR0
mov TH0,#0B8h
mov TL0,#0h
jnb TF0,$
cpl P1.0
clr TF0
clr TR0
ret
_69hz:
setb TR0
mov TH0,#0e5h
mov TL0,#0eah
jnb TF0,$
cpl P1.0
clr TF0
clr TR0
ret
_129hz:
setb TR0
mov TH0,#0f2h
mov TL0,#0ch
jnb TF0,$
cpl P1.0
clr TF0
clr TR0
ret
$INCLUDE(subrutinas_LCD_Sim.inc)
$INCLUDE(subrutinasDeUsoFreq.inc)
end
sjmp $
inter_ext0:
mov A,#1
mov B,#0
lcall placeCur4
lcall prtLCD4
db " No arregla",0
mov A,#2
mov B,#0
lcall placeCur4
lcall prtLCD4
db " El Problema",0
mov A,#1
mov B,#2
lcall placeCur4
lcall retardo
reti
inter_ext1:
mov A,#1
mov B,#0
lcall placeCur4
lcall prtLCD4
db " STARSHIP :",8,20h,0
mov A,#2
mov B,#0
lcall placeCur4
lcall prtLCD4
db " EXPLOTA ",0
sjmp $
reti
muestra_problema:
mov A,#1
mov B,#4
lcall placeCur4
lcall prtLCD4
db "Motor1,2,3,4",0
mov A,#2
mov B,#0
lcall placeCur4
lcall prtLCD4
db " No funcionan ",0
ret
$INCLUDE(subrutinas_LCD_sim.inc)
$INCLUDE(subrutinasDeUsoFreq.inc)
end