necesito de su ayuda, tengo que hacer un semaforo utilizando interrupciones con el micro 8051 y no puedo hacerlo, no he entendido como!!
el semaforo ya lo hice utilizando el temporizador:
valor equ 20
org 0000
mov tmod, #01h
mov 20h, #valor
mov th0, #high(15536)
mov tl0, #low(15536)
setb tr0
REPITE:
; SE ESTABLECE EL PRIMER ESTADO
mov a, #014h
cpl a
mov p1, a
mov 21h, #5
call espera_segundos
; SE ESTABLECE EL SEGUNDO ESTADO
mov a, #012h
cpl a
mov p1, a
mov 21h, #3
call espera_segundos
; SE ESTABLECE EL TERCER ESTADO
mov a, #041h
cpl a
mov p1, a
mov 21h, #5
call espera_segundos
; SE ESTABLECE EL CUARTO ESTADO
mov a, #021h
cpl a
mov p1, a
mov 21h, #3
call espera_segundos
jmp REPITE
espera_segundos:
Espero_TF0:
jnb TF0, Espero_TF0
; baja la bandera TF0
clr TF0
; pone el valor de cuenta para que el timer 0 cuente 50 ms
mov TH0, #HIGH (65536-50000)
mov TL0, #LOW (65536-50000)
djnz 20h, Espero_TF0
;recarga el contador para segundos
mov 20h, #VALOR
djnz 21h, Espera_Segundos
; regresa al punto de llamada
ret
END
el semaforo ya lo hice utilizando el temporizador:
valor equ 20
org 0000
mov tmod, #01h
mov 20h, #valor
mov th0, #high(15536)
mov tl0, #low(15536)
setb tr0
REPITE:
; SE ESTABLECE EL PRIMER ESTADO
mov a, #014h
cpl a
mov p1, a
mov 21h, #5
call espera_segundos
; SE ESTABLECE EL SEGUNDO ESTADO
mov a, #012h
cpl a
mov p1, a
mov 21h, #3
call espera_segundos
; SE ESTABLECE EL TERCER ESTADO
mov a, #041h
cpl a
mov p1, a
mov 21h, #5
call espera_segundos
; SE ESTABLECE EL CUARTO ESTADO
mov a, #021h
cpl a
mov p1, a
mov 21h, #3
call espera_segundos
jmp REPITE
espera_segundos:
Espero_TF0:
jnb TF0, Espero_TF0
; baja la bandera TF0
clr TF0
; pone el valor de cuenta para que el timer 0 cuente 50 ms
mov TH0, #HIGH (65536-50000)
mov TL0, #LOW (65536-50000)
djnz 20h, Espero_TF0
;recarga el contador para segundos
mov 20h, #VALOR
djnz 21h, Espera_Segundos
; regresa al punto de llamada
ret
END