Documente Academic
Documente Profesional
Documente Cultură
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
; Lee el pulsador.
; Si pulsa salta a incrementar y
; contador
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
STATUS,RP0
Contador
Visualiza
Pulsador
IncrementaVisualiza
; Lee el pulsador.
; Si pulsa salta a incrementar y
Principal
; contador
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
.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
Incrementa el contador
Ha superado su valor mximo?
(W)=VALOR_MAX-(Contador).
C=1?, (W) positivo?,
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
CBLOCK 0x0C
ENDC
; ZONA DE CDIGOS
********************************************************************
ORG 0
Inicio
call
LCD_Inicializa
movlw
Mensaje0
mensaje.
call
LCD_Mensaje
sleep
; 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.
; 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.
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