Escolar Documentos
Profissional Documentos
Cultura Documentos
Dado el siguiente programa, que intenta prender y apagar los 3 LEDs segn se
presionen los pulsadores adecuados, est desarrollado de forma parcial, compltelo
para que realice lo que indica el algoritmo del diagrama de flujo
Tenga en cuenta que la configuracin bsica del microcontrolador en el protoboard es
;************************************************
; Este programa es MI PRIMER PROGRAMA
; Compaa: URP
; Uso: TITILA LEDS SEGUN ACTIVE LOS PULSADORES APROPIADOS
;*******************************************
ORG 000H
;inicio del programa
INIC:
MOV P1, #0FFH
;APAGO LEDS
JB
P1.3 $
;ACTIVO? PULSADOR1 NO ESPERAR
UNON:
CLR P1.0
;SE ACTIVO PULSADOR1 PRENDE LED1
JB
P1.4 UNOF
;ACTIVO? PULSADOR2, NO APAGAR LED1
2ON:
CLR P1.1
;SE ACTIVO PULSADOR2 PRENDE LED2
JB
P1.5 2OF
;SALTA SI EL PULSADOR3 SE ACTIVO
CLR P1.2
;PRENDO LED3
--------------falta una lnea---------------UNOF:
SETB P1.0
;APAGA LED1
JMP UNON
;SALTA A PRENDER LED1
2OF:
SETB P1.1
;APAGO LED2
JMP 2ON
;SALTO PARA PRENDER LED2
JMP INIC
LA SOLUCION ENTRE UNA DE TANTAS POSIBILIDADES ES:
;************************************************
; Este programa es MI SEGUNDO PROGRAMA
; Compaa: URP
; Uso: TITILA LEDS SEGUN ACTIVE LOS PULSADORES APROPIADOS
;PERO AHORA SI LOS VEO BIEN
;*******************************************
ORG 000H
;inicio del programa
INIC:
MOV P1, #0FFH
;APAGO LEDS
JB
P1.3 $
;ACTIVO? PULSADOR1 NO ESPERAR
UNON:
CLR P1.0
;SE ACTIVO PULSADOR1 PRENDE LED1
JB
P1.4 UNOF
;ACTIVO? PULSADOR2, NO APAGAR LED1
2ON:
CLR P1.1
;SE ACTIVO PULSADOR2 PRENDE LED2
JB
P1.5 2OF
;SALTA SI EL PULSADOR3 SE ACTIVO
CLR P1.2
;PRENDO LED3
SETB P1.2
JMP FIN
UNOF:
SETB P1.0
;APAGA LED1
JMP UNON
;SALTA A PRENDER LED1
2OF:
SETB P1.1
;APAGO LED2
JMP 2ON
;SALTO PARA PRENDER LED2
FIN:
JMP INIC
PARTE 2:
USO DE LAS INSTRUCCIONES DE LLAMADO DE SUBRUTINA (CALL), Y
RETORNO DE ELLA (RET), ASI COMO LA GENERACION DE TEMPORIZADORES
POR PROGRAMA PARA ADAPTARLOS A NUESTRA INTERFAZ.
El siguiente programa retarda un tiempo suficiente para poder apreciar el prendido y
apagado de los LEDs,
CALL DELAY
DJNZ R1 OTRO
RET
ESTO ES LA CANTIDAD DE CICLOS DE MQUINA 100H (TIEMPO DE DJNZR2) X
200H (TIEMPO DE DJNZR2 +DJNZR1+MOV R2)
SI QUIERE MAS TIEMPO:
Aumente el valor a cargar en los registros al mximo y si aun le parece insuficiente
anide otro registro mas
COMO SE INDICA A CONTINUACION:
DELAY: MOV R1 #200H
OTRO: MOV R2 #100H
OTRO1: MOV R3 #200H
DJNZ R3 $
DJNZ R2 OTRO1
DJNZ R1 OTRO
RET
;************************************************
; Este programa es MI SEGUNDO PROGRAMA
; Compaa: URP
; Uso: TITILA LEDS SEGUN ACTIVE LOS PULSADORES APROPIADOS
; PERO AHORA SI LOS VEO BIEN
;*******************************************
ORG 000H
;inicio del programa PRINCIPAL
INIC:
MOV P1, #0FFH
;APAGO LEDS
JB
P1.3 $
;ACTIVO? PULSADOR1 NO ESPERAR
UNON:
CLR P1.0
;SE ACTIVO PULSADOR1 PRENDE LED1
CALL DELAY
;SALTO A ESPERAR MILISEGUNDOS
JB
P1.4 UNOF
;ACTIVO? PULSADOR2, NO APAGAR LED1
2ON:
CLR P1.1
;SE ACTIVO PULSADOR2 PRENDE LED2
CALL DELAY
;SALTO A ESPERAR MILISEGUNDOS
JB
P1.5 2OF
;SALTA SI EL PULSADOR3 SE ACTIVO
CLR P1.2
;PRENDO LED3
CALL DELAY
;SALTO A ESPERAR MILISEGUNDOS
SETB P1.2
;APAGO LED3
CALL DELAY
;SALTO A ESPERAR MILISEGUNDOS
JMP FIN
;TERMINE
UNOF:
SETB P1.0
;APAGA LED1
CALL DELAY
;SALTO A ESPERAR MILISEGUNDOS
JMP UNON
;SALTA A PRENDER LED1
2OF:
SETB P1.1
;APAGO LED2
CALL DELAY
;SALTO A ESPERAR MILISEGUNDOS
JMP 2ON
;SALTO PARA PRENDER LED2
FIN:
JMP INIC
;*****************************************************************************
; SUBRUTINA DE RETARDO DE TIEMPO POR PROGRAMA
; SE USAN LOS REG R1 Y R2
;*******************************************************************************
DELAY:
MOV R1 #200H
OTRO:
MOV R2 #100H
DJNZ R2 $
DJNZ R1 OTRO
RET
Tamao ciclos
MOV Rn,#data
CALL addr16
llamado de subrutina.
RET
Retorna de subrutina.