Sunteți pe pagina 1din 7

EJERCICIO 01

; Cada vez que presiona el pulsador conectado al pin RA4 incrementa un


contador
; visualizado en el centro de la primera lnea de la pantalla.
;
; ZONA DE DATOS
**********************************************************************
LIST
INCLUDE
__CONFIG

P=16F84A
<P16F84A.INC>
_CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

CBLOCK 0x0C
Contador
ENDC
#DEFINE Pulsador PORTA,4
pulsador.

; El contador a visualizar.
; Lnea donde se conecta el

; ZONA DE CDIGOS
********************************************************************
ORG 0
Inicio
call
LCD_Inicializa
bsf
STATUS,RP0
bsf
Pulsador
como entrada.
bcf
STATUS,RP0
clrf
Contador
1 vez,
call
Visualiza
Principal
btfss Pulsador
call
IncrementaVisualiza
visualizar el
goto Principal

; Lnea del pulsador se configura


; Inicializa contador y los visualiza por

; Lee el pulsador.
; Si pulsa salta a incrementar y
; contador

; Subrutina "IncrementaVisualiza" ------------------------------------------------------;


IncrementaVisualiza
call
Retardo_20ms
; Espera a que se estabilicen
los niveles de tensin.
btfsc Pulsador
; Vuelve a leer el pulsador.
goto Fin_Incrementa
incf Contador,F
; Incrementa el contador y despus lo
visualiza.
Visualiza
movlw
.7
; Se sita en el centro de la
lnea 1.
call
LCD_PosicionLinea1
movf Contador,W
call
BIN_a_BCD
; Se debe visualizar en decimal.
call
LCD_Byte

EsperaDejePulsar
btfss Pulsador
goto EsperaDejePulsar
Fin_Incrementa
return
INCLUDE <RETARDOS.INC>
INCLUDE <BIN_BCD.INC>
INCLUDE <LCD_4BIT.INC>
END
EJERCICIOS 02
; Cada vez que presiona el pulsador conectado al pin RA4, incrementa un
contador que se
; visualiza en la pantalla. Cuando llegue a su valor mximo (por ejemplo 6)
se resetea y
; comienza de nuevo la cuenta.
;
; ZONA DE DATOS
**********************************************************************
LIST
INCLUDE
__CONFIG

P=16F84A
<P16F84A.INC>
_CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

CBLOCK 0x0C
Contador
ENDC
#DEFINE Pulsador PORTA,4
pulsador.

; El contador a visualizar.
; Lnea donde se conecta el

; ZONA DE CDIGOS
********************************************************************
ORG 0
Inicio
call
bsf
bsf
entrada.
bcf
clrf
call
1 vez,
Principal
btfss
call
visualizar el
goto

LCD_Inicializa
STATUS,RP0
Pulsador

; Lnea del pulsador configurada como

STATUS,RP0
Contador
Visualiza

; Inicializa contador y los visualiza por

Pulsador
IncrementaVisualiza

; Lee el pulsador.
; Si pulsa salta a incrementar y

Principal

; contador

; Subrutina "IncrementaVisualiza" ------------------------------------------------------;


IncrementaVisualiza

call
Retardo_20ms
nivel de tensin.
btfsc Pulsador
goto Fin_Incrementa
call
IncrementaContador
despus lo visualiza.
Visualiza
movlw
.7
lnea 1.
call
LCD_PosicionLinea1
movf Contador,W
call
BIN_a_BCD
call
LCD_Byte
EsperaDejePulsar
btfss Pulsador
goto EsperaDejePulsar
Fin_Incrementa
return

; Espera a que se estabilice el


; Vuelve a leer el pulsador.
; Incrementa el contador y
; Se sita en el centro de la

; Debe visualizar en decimal.

; Subrutina "IncrementaContador" --------------------------------------------------------;


; Incrementa el valor de la variable Contador. Si llega al valor mximo lo
resetea.
VALOR_MAX EQU

.6

IncrementaContador
incf Contador,F
movf Contador,W
sublw VALOR_MAX
btfss STATUS,C
(VALOR_MAX>=(Contador)?
clrf
Contador
mximo.
return
INCLUDE <LCD_4BIT.INC>
INCLUDE <RETARDOS.INC>
INCLUDE <BIN_BCD.INC>
END

; Valor mximo de la cuenta.


;
;
;
;

Incrementa el contador
Ha superado su valor mximo?
(W)=VALOR_MAX-(Contador).
C=1?, (W) positivo?,

; Lo inicializa si ha superado su valor

; Subrutinas de control del LCD.


; Subrutinas de retardo.
; Subrutina BIN_a_BCD.
; Fin del programa.

EJERCICIO 03
; En la pantalla del mdulo LCD se visualiza un mensaje de menos de 16
caracteres grabado
; en la memoria ROM mediante la directiva DT. Utiliza la subrutina
LCD_Mensaje de la
; librera LCD_MENS.INC
;
; ZONA DE DATOS
**********************************************************************
LIST
INCLUDE

P=16F84A
<P16F84A.INC>

__CONFIG

_CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

CBLOCK 0x0C
ENDC
; ZONA DE CDIGOS
********************************************************************
ORG 0
Inicio
call
LCD_Inicializa
movlw
Mensaje0
mensaje.
call
LCD_Mensaje
sleep

; Apunta dnde se encuentra el


; Visualiza el mensaje.
; Pasa a modo bajo consumo.

; Mensajes -----------------------------------------------------------------------------;
Mensajes
addwf PCL,F
Mensaje0
DT "Hola!, que tal? ", 0x00
INCLUDE <LCD_4BIT.INC>
INCLUDE <LCD_MENS.INC>
INCLUDE <RETARDOS.INC>
END
EJERCICIOS 04
; El mdulo LCD visualiza un mensaje largo (ms de 16 caracteres) que se
desplaza a lo largo
; de la pantalla. Se utiliza la subrutina LCD_MensajeMovimiento de la librera
LCD_MENS.INC.
;
; ZONA DE DATOS
**********************************************************************
LIST
INCLUDE
__CONFIG

P=16F84A
<P16F84A.INC>
_CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

CBLOCK 0x0C
ENDC
; ZONA DE CDIGOS
********************************************************************
ORG 0
Inicio
call
LCD_Inicializa
; Prepara la pantalla.
Principal
movlw
Mensaje0
; Apunta al mensaje.
call
LCD_MensajeMovimiento
goto Principal
; Repite la visualizacin.

; "Mensajes" ---------------------------------------------------------------------------;
Mensajes
addwf PCL,F
Mensaje0
; Posicin inicial del mensaje.
DT "
"
; Espacios en blanco al principio
para mejor
DT "Estudia un Ciclo Formativo "
; visualizacin.
DT "de ELECTRONICA."
DT "
", 0x0
; Espacios en blanco al final.
;
INCLUDE <LCD_MENS.INC>
; Subrutina
LCD_MensajeMovimiento.
INCLUDE <LCD_4BIT.INC>
; Subrutinas de control del LCD.
INCLUDE <RETARDOS.INC>
; Subrutinas de retardos.
END
; Fin del programa.
EJERCICIOS 05
; En pantalla visualiza "Cerrado" o "Abierto" segn si un pulsador est
presionado o no.
;
; ZONA DE DATOS
**********************************************************************
LIST
INCLUDE
__CONFIG

P=16F84A
<P16F84A.INC>
_CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

CBLOCK 0x0C
ENDC
#DEFINE Pulsador PORTA,4
pulsador.

; Lnea donde se conecta el

; ZONA DE CDIGOS
********************************************************************
ORG 0
Inicio
call
LCD_Inicializa
movlw
MensajePulsador
call
LCD_Mensaje
bsf
STATUS,RP0
bsf
Pulsador
; Lnea del pulsador que se configura como
entrada.
bcf
STATUS,RP0
Principal
call
LCD_Linea2
movlw
MensajeCerrado
; En principio considera que
est presionado.
btfsc Pulsador
; Lee el pulsador.
movlw
MensajeAbierto
; No, estaba en reposo.
call
LCD_Mensaje
; Visualiza el resultado.

goto Principal
; "Mensajes" ---------------------------------------------------------------------------;
Mensajes
addwf PCL,F
MensajePulsador
DT " Pulsador", 0x00
MensajeAbierto
DT " abIERto", 0x00
MensajeCerrado
DT " CErraDO", 0x00
INCLUDE <RETARDOS.INC>
INCLUDE <LCD_4BIT.INC>
INCLUDE <LCD_MENS.INC>
END
EJERCICIO 06
; Una LDR se conecta a la entrada Trigger Schmitt RA4/T0CKI aplicando
impulsos al Timer 0 cada
; vez que se oscurece al interponerse un objeto entre la fuente de luz y la
LDR. En la pantalla
; del mdulo LCD se visualiza el nmero de veces que se interrumpe el haz
de luz en dos dgitos
; (hasta 99 mximo).
;
; ZONA DE DATOS
**********************************************************************
LIST
INCLUDE
__CONFIG

P=16F84A
<P16F84A.INC>
_CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

CBLOCK
ENDC

0x0C

; ZONA DE CDIGOS
********************************************************************
ORG 0
Inicio
call
LCD_Inicializa
bsf
STATUS,RP0
movlw
b'00101000'
por flanco ascendente de
movwf
OPTION_REG
asignado al Watchdog.
bcf
STATUS,RP0
clrf
TMR0

; Acceso al Banco 1.
; TMR0 como contador
; RA4/T0CKI. Prescaler
; Acceso al Banco 0.
; Inicializa contador.

; La seccin "Principal" es de mantenimiento. Slo se dedica a visualizar el


Timer 0, cuya

; cuenta se incrementa con los flancos ascendentestes procedente de la


entrada Trigger Schmitt
; RA4/T0CKI donde se ha conectado la LDR.
Principal
call
1.
movf
call
call
decenas en
goto

LCD_Linea1
TMR0,W
BIN_a_BCD
LCD_Byte
caso de que sean 0.
Principal

INCLUDE <RETARDOS.INC>
INCLUDE <BIN_BCD.INC>
INCLUDE <LCD_4BIT.INC>
END

; Se pone al principio de la lnea


; Lee el Timer 0.
; Se debe visualizar en BCD.
; Visualiza, apagando las

S-ar putea să vă placă și