Você está na página 1de 5

Labo1

Se trabajara con dispositivos de salida como leds, dispositivos de entrada como


pulsadores, as como instrucciones de salto condicional, de testeo de bits, de
manipulacin de bits,

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

El circuito con los LEDs y pulsadores seria as:

;************************************************
; 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

DELAY: MOV R1 #200H


OTRO: MOV R2 #100H
DJNZ R2 $

;este lazo lo realiza 100H veces

DJNZ R1 OTRO

;este lazo lo realiza 200H veces

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

DJNZ Rn, rel

Decrementa al registro y jump si no es cero.

CALL addr16

llamado de subrutina.

RET

Retorna de subrutina.

Si el cristal es de 11.056mhz el ciclo se obtiene dividiendo entre 12 lo cual da


aproximadamente 1 MHZ de frecuencia y 1 microsegundo de ciclo

Você também pode gostar