• No se han encontrado resultados

8.8 LCD_08.asm ( Entrenador Básico 6 )

In document Entrenadores (página 133-160)

title " Mientras se mantenga presionado el pulsador conectado al pin RA4, incrementa un contador" title " que se visualiza en la pantalla del LCD en formato decimal ,Hexadecimal y binario."

;************************************** LCD_08.asm ******************************************************************** ; Mientras se mantenga presionado el pulsador conectado al pin RA4, se incrementa un contador

; visualizado en la pantalla en tres formatos: decimal, hexadecimal y binario. Un ejemplo: ; Primera Línea: "CE 206"

; Segunda Línea: "11001110"

;************************************************************************************************************************** ;Programa para PIC 16F877.

;Velocidad del Reloj:1 MHz. ;Reloj instrucción: 250 KHz = 4 uS. ;Perro Guardián deshabilitado. ;Tipo de Reloj XT.

;Protección de Código: OFF.

;************************************** Elegimos PIC ******************************************************************** list p=16f877, f=inhx32

;**************** Asignación de nombres de Registros de Funciones especiales a direcciones ****************** #include <p16f877.inc> ;Este fichero contiene los nombres y direcciones de los

; registros de funciones especiales.

; Este fichero esta localizado en el directorio ; con el nombre MPASM.

;************************************** Igualdades *********************************************************************** #DEFINE Pulsador PORTA,4 ; Línea donde se conecta el pulsador.

CBLOCK 0x20 Contador Auxiliar Desplaza ENDC

;************************************* Sección Código de Reset ******************************************************* ORG 0 ;Dirección del Vector Reset

GOTO COMIENZO ;Comienzo del Programa

;*********************************** Sección de Configuración ********************************************************* ORG 5

COMIENZO clrf PORTA ; Reseteamos el PORTA. bsf STATUS,RP0 ; Ir al Banco 1.

movlw 0x06 ; Poner el PORTA como señales digitales. movwf ADCON1

bsf Pulsador ; Línea del pulsador se configura como entrada. bcf STATUS,RP0 ; Ir al Banco 0.

call LCD_Inicializa ; Inicializar el LCD. clrf Contador ; Inicializa contador y call VisualizaContador ; lo visualiza.

;************************************* Principal ************************************************************************** Principal btfsc Pulsador ; Lee el pulsador.

goto Fin ; Si no pulsa salta a final.

call Retardo_20ms ; Espera a que se estabilicen los niveles de tensión. btfsc Pulsador ; Vuelve a leer el pulsador.

goto Fin

incf Contador,F ; Incrementa el contador. call VisualizaContador

call Retardo_200ms ; Se incrementara de nuevo cuando pase este Fin goto Principal ; tiempo.

;********************************** Subrutina "VisualizaContador" ***************************************************** VisualizaContador call LCD_Borra ; Borra la pantalla.

movf Contador,W ; A continuación visualiza el contador. call LCD_ByteCompleto ; Visualiza en HEXADECIMAL. call LCD_TresEspaciosBlancos ; Como separador. movf Contador,W ; Ahora se visualiza en DECIMAL. call BIN_a_BCD ; Primero se convierte a BCD. movwf Auxiliar ; Guarda las decenas y unidades. movf BCD_Centenas,W ; Visualiza centenas.

call LCD_Nibble

movf Auxiliar,W ; Visualiza las decenas y unidades. call LCD_ByteCompleto

call LCD_Linea2 ; En la segunda línea para visualizar en BINARIO. movlw D'8' ; Utiliza el registro auxiliar como contador del

movwf Auxiliar ; numero de bits que se va visualizando por la movf Contador,W ; pantalla.

movwf Desplaza

VisualizaBit rlf Desplaza,F ; El BIT a visualizar pasa al Carry . movlw '1' ; En principio supone que es un uno. btfss STATUS,C ; Comprueba su valor.

movlw '0' ; Ha sido cero. call LCD_Caracter ; Lo visualiza.

decfsz Auxiliar,F ; Ha terminado de visualizar los 8 bits? goto VisualizaBit ; No, sigue visualizando otro bit. return ;*********************************************** Librerias **************************************************************** INCLUDE <LCD_4BIT.INC> INCLUDE <RETARDOS.INC> INCLUDE <BIN_BCD.INC> END

8.9.- Mens_01.asm

( Entrenador Básico 6 )

title " Visualización de un mensaje fijo utilizando la librería LCD_4BIT.INC "

;************************************ Mens_01.asm ********************************************************************* ; En la pantalla del modulo LCD se visualiza un mensaje de menos de 16 caracteres grabado

; en la memoria ROM mediante la directiva DT.

;*************************************************************************************************************************** ;Programa para PIC 16F877.

;Velocidad del Reloj:1 MHz. ;Reloj instrucción: 250 KHz = 4 uS. ;Perro Guardián deshabilitado. ;Tipo de Reloj XT.

;Protección de Código: OFF.

;************************************** Elegimos PIC ******************************************************************** list p=16f877, f=inhx32

;**************** Asignación de nombres de Registros de Funciones especiales a direcciones ****************** #include <p16f877.inc> ;Este fichero contiene los nombres y direcciones de los

; registros de funciones especiales.

; Este fichero esta localizado en el directorio ; con el nombre MPASM.

;************************************** Igualdades *********************************************************************** ;************************************** Registros ************************************************************************

CBLOCK 0x20

LCD_ApuntaCaracter ; Indica la posición del carácter a visualizar ; respecto del comienzo de todos los mensajes ; (posición de la etiqueta "Mensajes").

LCD_ValorCaracter ; Valor del código ASCII del carácter a ; visualizar.

ENDC

;************************************* Sección Código de Reset ******************************************************* ORG 0 ;Dirección del Vector Reset

GOTO COMIENZO ;Comienzo del Programa

;*********************************** Sección de Configuración ********************************************************* ORG 5

COMIENZO clrf PORTA ; Reseteamos el PORTA. bsf STATUS,RP0 ; Ir al Banco 1.

movlw 0x06 ; Poner el PORTA como señales digitales. movwf ADCON1

bcf STATUS,RP0 ; Ir al Banco 0. call LCD_Inicializa ; Inicializar el LCD.

clrf LCD_ApuntaCaracter ; Se visualizara la primera posición del mensaje.

;************************************* Principal ************************************************************************** LCD_VisualizaOtroCaracter movf LCD_ApuntaCaracter,W

call Mensajes ; Obtiene el código ASCII del carácter apuntado.

movwf LCD_ValorCaracter ; Guarda el valor de carácter. movf LCD_ValorCaracter,F ; Lo único que hace es posicionar

flag Z. En caso

btfsc STATUS,Z ; que sea "0x00", que es código indicador final

goto Fin ; de mensaje, sale fuera.

LCD_NoUltimoCaracter call LCD_Caracter ; Visualiza el carácter ASCII leído. incf LCD_ApuntaCaracter,F ; Apunta a la posición del siguiente

carácter

goto LCD_VisualizaOtroCaracter ; dentro del mensaje.

Fin sleep ; Pasa a modo bajo consumo.

;********************************* Subrutina "Mensajes" *************************************************************** Mensajes addwf PCL,F

Mensaje0 DT "Hola!, que tal? ", 0x00 ; Posición inicial del mensaje. ;*********************************************** Librerías ****************************************************************

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

8.10.- Mens_02.asm

( Entrenador Básico 6 )

title " Visualización de un mensaje fijo utilizando la librería LCD_MENS.INC "

;************************************ Mens_02.asm ********************************************************************* ; En la pantalla del modulo LCD se visualiza un mensaje de menos de 16 caracteres grabado

; librería LCD_MENS.INC

;************************************************************************************************************************** ;Programa para PIC 16F877.

;Velocidad del Reloj:1 MHz. ;Reloj instrucción: 250 KHz = 4 uS. ;Perro Guardián deshabilitado. ;Tipo de Reloj XT.

;Protección de Código: OFF.

;************************************** Elegimos PIC ******************************************************************** list p=16f877, f=inhx32

;**************** Asignación de nombres de Registros de Funciones especiales a direcciones ****************** #include <p16f877.inc> ;Este fichero contiene los nombres y direcciones de los

; registros de funciones especiales.

; Este fichero esta localizado en el directorio ; con el nombre MPASM.

;************************************** Igualdades *********************************************************************** ;************************************** Registros ************************************************************************

CBLOCK 0x20 ENDC

;************************************* Sección Código de Reset ******************************************************* ORG 0 ;Dirección del Vector Reset

GOTO COMIENZO ;Comienzo del Programa

;*********************************** Sección de Configuración ********************************************************* ORG 5

COMIENZO clrf PORTA ; Reseteamos el PORTA. bsf STATUS,RP0 ; Ir al Banco 1.

movlw 0x06 ; Poner el PORTA como senales digitales. movwf ADCON1

bcf STATUS,RP0 ; Ir al Banco 0. call LCD_Inicializa ; Inicializar el LCD.

;************************************* Principal ************************************************************************** Principal movlw Mensaje0 ; Apunta donde se encuentra el mensaje.

call LCD_Mensaje ; Visualiza el mensaje. sleep ; Pasa a modo bajo consumo.

;********************************* Subrutina "Mensajes" **************************************************************** Mensajes addwf PCL,F

Mensaje0 DT "Hola!, que tal? ", 0x00 ; Posición inicial del mensaje.

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

8.11.- Mens_03.asm

( Entrenador Básico 6 )

title " Visualización de varios mensajes fijo utilizando la librería LCD_MENS.INC "

;************************************ Mensaje_03.asm ****************************************************************** ; En la pantalla se visualizan varios mensajes, uno detrás de otro. Cada mensaje permanece

; durante 2 segundos. Entre mensaje y mensaje la pantalla se apaga durante unos 200 ms.

;*************************************************************************************************************************** ;Programa para PIC 16F877.

;Velocidad del Reloj:1 MHz. ;Reloj instrucción: 250 KHz = 4 uS. ;Perro Guardián deshabilitado. ;Tipo de Reloj XT.

;Protección de Código: OFF.

;************************************** Elegimos PIC ******************************************************************** list p=16f877, f=inhx32

;***************** Asignación de nombres de Registros de Funciones especiales a direcciones ***************** #include <p16f877.inc> ;Este fichero contiene los nombres y direcciones de los

; registros de funciones especiales.

; Este fichero esta localizado en el directorio ; con el nombre MPASM.

;************************************** Igualdades *********************************************************************** ;************************************** Registros ************************************************************************

CBLOCK 0x20 ENDC

;************************************* Sección Código de Reset ******************************************************* ORG 0 ;Dirección del Vector Reset

GOTO COMIENZO ;Comienzo del Programa

;*********************************** Sección de Configuración ********************************************************* ORG 5

COMIENZO clrf PORTA ; Reseteamos el PORTA. bsf STATUS,RP0 ; Ir al Banco 1.

movwf ADCON1

bcf STATUS,RP0 ; Ir al Banco 0. call LCD_Inicializa ; Inicializar el LCD.

;************************************* Principal ************************************************************************** Principal movlw Mensaje0 ; Apunta al mensaje 0.

call Visualiza

movlw Mensaje1 ; Apunta al mensaje 1. call Visualiza

movlw Mensaje2 ; Apunta al mensaje 2. call Visualiza

call Retardo_5s ; Permanece apagada durante este tiempo. goto Principal ; Repite la visualización de todos los mensajes.

;************************************ Subrutina "Visualiza" ************************************************************* Visualiza call LCD_Mensaje

call Retardo_2s ; Visualiza el mensaje durante este tiempo. call LCD_Borra ; Borra la pantalla y se mantiene así durante call Retardo_200ms ; este tiempo.

return

;********************************* Subrutina "Mensajes" **************************************************************** Mensajes addwf PCL,F

Mensaje0 DT "Estudia PIC, es", 0x00 ; Posición inicial del mensaje 0. Mensaje1 DT "bueno.", 0x00 ; Posición inicial del mensaje 1. Mensaje2 DT "IES JOAN MIRO", 0x00 ; Posición inicial del mensaje 2.

;*********************************************** Librerías **************************************************************** INCLUDE <LCD_4BIT.INC>

INCLUDE <LCD_MENS.INC> INCLUDE <RETARDOS.INC> END

8.12.- Mens_03B.asm

( Entrenador Básico 6 )

title " Visualización de varios mensajes fijo utilizando la librería LCD_MENS.INC " title " Cuando se visualiza el ultimo mensaje el proceso se repite "

;************************************ Mens_03B.asm ******************************************************************* ; En la pantalla se visualizan varios mensajes, uno detrás de otro. Cada mensaje permanece

; durante 2 segundos. Entre mensaje y mensaje la pantalla se apaga durante unos 200 mS.

;*************************************************************************************************************************** ;Programa para PIC 16F877.

;Velocidad del Reloj:1 MHz. ;Reloj instrucción: 250 KHz = 4 uS. ;Perro Guardián deshabilitado. ;Tipo de Reloj XT.

;************************************** Elegimos PIC ******************************************************************** list p=16f877, f=inhx32

;***************** Asignación de nombres de Registros de Funciones especiales a direcciones ***************** #include <p16f877.inc> ;Este fichero contiene los nombres y direcciones de los

; registros de funciones especiales.

; Este fichero esta localizado en el directorio ; con el nombre MPASM.

;************************************** Igualdades *********************************************************************** ValorMaximo EQU D'6' ; Numero de mensajes a visualizar

;************************************** Registros ************************************************************************ CBLOCK 0x20

Contador ENDC

;************************************* Sección Código de Reset ******************************************************* ORG 0 ;Dirección del Vector Reset

GOTO COMIENZO ;Comienzo del Programa

;*********************************** Sección de Configuración ********************************************************* ORG 5

COMIENZO clrf PORTA ; Reseteamos el PORTA. bsf STATUS,RP0 ; Ir al Banco 1.

movlw 0x06 ; Poner el PORTA como señales digitales. movwf ADCON1

bcf STATUS,RP0 ; Ir al Banco 0. call LCD_Inicializa ; Inicializar el LCD.

clrf Contador ; Inicializa el registro Contador.

;************************************* Principal ************************************************************************** Principal movlw ValorMaximo ; Comprueba que Contador no haya llegado al máximo.

subwf Contador,W ; (W) <- (Contador)-ValorMaximo

btfss STATUS,C ; Si C=1 salta una instrucción. ValorMaximo > (Contador) goto Visualiza ; No. El contador todavía no ha llegado al máximo.

clrf Contador ; Sí. Inicializa el contador y lo visualiza. call LCD_Borra ; Pantalla apagada durante unos instantes call Retardo_5s ; para señalar el último mensaje de la lista. Visualiza call LCD_Borra ; Borra la pantalla y se sitúa en la línea 1.

call Retardo_200ms

movf Contador,W ; Apunta al mensaje que se va a visualizar. call ApuntaMensaje

call LCD_Mensaje ; Lo visualiza.

incf Contador,F ; Incrementa el contador. goto Principal ; Repite el proceso.

;************************************ Subrutina "ApuntaMensaje" ****************************************************** ApuntaMensaje addwf PCL,F retlw Mensaje0 retlw Mensaje1 retlw Mensaje2 retlw Mensaje3 retlw Mensaje4 retlw Mensaje5 ;********************************* Subrutina "Mensajes" **************************************************************** Mensajes addwf PCL,F

Mensaje0 DT "Estudia PIC, es", 0x00; ; Posición inicial del mensaje 0. Mensaje1 DT "muy divertido.", 0x00 ; Posición inicial del mensaje 1. Mensaje2 DT "IES JOAN MIRO", 0x00 ; Posición inicial del mensaje 2. Mensaje3 DT "S.S. de los Reyes", 0x00 ; Posición inicial del mensaje 3. Mensaje4 DT " Estudia ", 0x00 ; Posición inicial del mensaje 4. Mensaje5 DT " ELECTRONICA ", 0x00 ; Posición inicial del mensaje 5.

;*********************************************** Librerías **************************************************************** INCLUDE <LCD_4BIT.INC>

INCLUDE <LCD_MENS.INC> INCLUDE <RETARDOS.INC> END

8.13.- Mens_04.asm

( Entrenador Básico 6 )

title " Visualización de mensajes parpadeantes en dos líneas del LCD "

;************************************ Mens_04.asm ********************************************************************* ; En las dos líneas de la pantalla apareceren dos mensajes parpadeantes.

;*************************************************************************************************************************** ;Programa para PIC 16F877.

;Velocidad del Reloj:1 MHz. ;Reloj instrucción: 250 KHz = 4 uS. ;Perro Guardián deshabilitado. ;Tipo de Reloj XT.

;Protección de Código: OFF.

list p=16f877, f=inhx32

;********************* Asignación de nombres de Registros de Funciones especiales a direcciones ************* #include <p16f877.inc> ;Este fichero contiene los nombres y direcciones de los

; registros de funciones especiales.

; Este fichero esta localizado en el directorio ; con el nombre MPASM.

;************************************** Igualdades *********************************************************************** ;************************************** Registros ************************************************************************

CBLOCK 0x20 ENDC

;************************************* Sección Código de Reset ******************************************************* ORG 0 ;Dirección del Vector Reset

GOTO COMIENZO ;Comienzo del Programa

;*********************************** Sección de Configuración ********************************************************* COMIENZO clrf PORTA ; Reseteamos el PORTA.

bsf STATUS,RP0 ; Ir al Banco 1.

movlw 0x06 ; Poner el PORTA como señales digitales. movwf ADCON1

bcf STATUS,RP0 ; Ir al Banco 0. call LCD_Inicializa ; Inicializar el LCD.

;************************************* Principal ************************************************************************** Principal movlw Mensaje0 ; Apunta al mensaje de la primera línea y

call LCD_Mensaje ; lo visualiza.

call LCD_Linea2 ; Pasa a la segunda línea.

movlw Mensaje1 ; Apunta al mensaje de la segunda línea. call LCD_Mensaje ; Lo visualiza.

call Retardo_500ms ; Durante este tiempo. call LCD_Borra ; Borra la pantalla.

call Retardo_500ms ; Durante este tiempo, produciendo un efecto de goto Principal ; parpadeo.

;********************************* Subrutina "Mensajes" **************************************************************** Mensajes addwf PCL,F

Mensaje0 DT " Estudia un", 0x00 ; Posición inicial del mensaje 0. Mensaje1 DT "Ciclo Formativo", 0x00 ; Posición inicial del mensaje 1.

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

8.14.- Mens_05.asm

( Entrenador Básico 6 )

title " Visualización de un mensaje fijo y parpadeantes "

;*************************************** Mens_05.asm ****************************************************************** ; En la primera línea de la pantalla aparece un mensaje fijo. En la segunda linea aparece

; un mensaje parpadeante.

;*************************************************************************************************************************** ;Programa para PIC 16F877.

;Velocidad del Reloj:1 MHz. ;Reloj instrucción: 250 KHz = 4 uS. ;Perro Guardián deshabilitado. ;Tipo de Reloj XT.

;Protección de Código: OFF.

;************************************** Elegimos PIC ******************************************************************** list p=16f877, f=inhx32

;***************** Asignación de nombres de Registros de Funciones especiales a direcciones ***************** #include <p16f877.inc> ;Este fichero contiene los nombres y direcciones de los

; registros de funciones especiales.

; Este fichero esta localizado en el directorio ; con el nombre MPASM.

;************************************** Igualdades *********************************************************************** ;************************************** Registros ************************************************************************

CBLOCK 0x20 ENDC

;************************************* Sección Código de Reset ******************************************************* ORG 0 ;Dirección del Vector Reset

GOTO COMIENZO ;Comienzo del Programa

;*********************************** Sección de Configuración ********************************************************* COMIENZO clrf PORTA ; Reseteamos el PORTA.

bsf STATUS,RP0 ; Ir al Banco 1.

movlw 0x06 ; Poner el PORTA como señales digitales. movwf ADCON1

bcf STATUS,RP0 ; Ir al Banco 0. call LCD_Inicializa ; Inicializar el LCD.

;************************************* Principal ************************************************************************** Principal movlw MensajeFijo ; Apunta al mensaje fijo y lo visualiza.

call LCD_Mensaje

seguir call LCD_Linea2 ; Pasa a la segunda línea.

movlw MensajeParpadeante ; Apunta al mensaje parpadeante. call LCD_Mensaje ; Lo visualiza.

call Retardo_500ms ; Durante este tiempo.

call LCD_Linea2 ; Vuelve a situarse al principio de la línea 2. call LCD_LineaEnBlanco ; Visualiza línea en blanco.

call Retardo_500ms ; Durante este tiempo, produciendo un efecto de goto seguir ; parpadeo.

;********************************* Subrutina "Mensajes" **************************************************************** Mensajes addwf PCL,F MensajeFijo DT " Estudia ", 0x00; MensajeParpadeante DT " ELECTRONICA ", 0x00 ;*********************************************** Libreras **************************************************************** INCLUDE <LCD_4BIT.INC> INCLUDE <LCD_MENS.INC> INCLUDE <RETARDOS.INC> END

8.15.- Mens_06.asm

( Entrenador Básico 6 )

title " Visualización de mensajes en función de un pulsador "

;************************************** Mens_06.asm ******************************************************************* ; En el modulo LCD se pueden visualizar varios mensajes diferentes. El paso de uno

; a otro se realiza al actuar sobre un pulsador conectado a la línea RA4. ; En pantalla aparecere por ejemplo:

; " Mensaje 2 " (primera línea). ; "S.S. de los Reyes." (segunda línea).

;*************************************************************************************************************************** ;Programa para PIC 16F877.

;Velocidad del Reloj:1 MHz. ;Reloj instrucción: 250 KHz = 4 uS. ;Perro Guardián deshabilitado. ;Tipo de Reloj XT.

;Protección de Código: OFF.

list p=16f877, f=inhx32

;***************** Asignación de nombres de Registros de Funciones especiales a direcciones ***************** #include <p16f877.inc> ;Este fichero contiene los nombres y direcciones de los

; registros de funciones especiales.

; Este fichero esta localizado en el directorio ; con el nombre MPASM.

;************************************** Igualdades *********************************************************************** #DEFINE Pulsador PORTA,4 ; Línea donde se conecta el pulsador.

ValorMaximo EQU D'4' ; Numero de mensajes.

;************************************** Registros ************************************************************************ CBLOCK 0x20

Contador ; El contador a visualizar. ENDC

;************************************* Sección Código de Reset ******************************************************* ORG 0 ;Dirección del Vector Reset

GOTO COMIENZO ;Comienzo del Programa

;*********************************** Sección de Configuración ********************************************************* COMIENZO clrf PORTA ; Reseteamos el PORTA.

bsf STATUS,RP0 ; Ir al Banco 1.

movlw 0x06 ; Poner el PORTA como señales digitales. movwf ADCON1

bsf Pulsador ; Línea del pulsador configurada como entrada. bcf STATUS,RP0 ; Ir al Banco 0.

call LCD_Inicializa ; Inicializar el LCD. clrf Contador

call Visualiza ; Inicializa contador y los visualiza por primera vez.

;************************************* Principal ************************************************************************** Principal btfsc Pulsador ; Lee el pulsador.

goto Fin

call Retardo_20ms ; Espera estabilicen niveles de tensión. btfsc Pulsador ; Vuelve a leer el pulsador.

goto Fin

call IncrementaContador ; Incrementa el contador.

call Visualiza ; Visualiza el mensaje correspondiente. EsperaDejePulsar btfss Pulsador

goto EsperaDejePulsar Fin goto Principal

;********************************** Subrutina "IncrementaContador" ************************************************** ; Incrementa el valor de la variable Contador. Si llega al valor máximo lo resetea.

movf Contador,W ; Ha superado su valor máximo? sublw ValorMaximo-1 ; (W)<- ValorMaximo-(Contador). btfss STATUS,C ; Si C=1 salta una instrucción.

(Contador)> #ValorMaximo

clrf Contador ; Lo inicializa si ha superado su valor máximo. return

;************************************** Subrutina "Visualiza" ********************************************************** Visualiza call LCD_Borra ; Borra la pantalla y se sitúa en la línea 1.

movlw MensajeN ; Apunta a este mensaje. call LCD_Mensaje ; Lo visualiza.

movf Contador,W ; A continuación visualiza el contador. call BIN_a_BCD ; Se debe visualizar en BCD.

call LCD_Byte

call LCD_Linea2 ; Al principio de la segunda línea del LCD. movf Contador,W

call ApuntaMensaje ; Apunta al mensaje que se va a visualizar. call LCD_Mensaje ; Lo visualiza.

return ;************************************** Subrutina "ApuntaMensaje" **************************************************** ApuntaMensaje addwf PCL,F retlw Mensaje0 retlw Mensaje1 retlw Mensaje2 retlw Mensaje3 ;***************************************** Subrutina "Mensajes" ******************************************************** Mensajes addwf PCL,F

Mensaje0 DT " DESARROLLO DE ",0x00 ; Posición inicial del mensaje 0. Mensaje1 DT " PROYECTOS ", 0x00 ; Posición inicial del mensaje 1. Mensaje2 DT "S.S. SEBASTIAN", 0x00 ; Posición inicial del mensaje 2. Mensaje3 DT "de los Reyes", 0x00 ; Posición inicial del mensaje 3.

MensajeN DT " Mensaje ", 0x00 ; Posición inicial del mensaje primera línea del LCD.

;*********************************************** Librerías **************************************************************** INCLUDE <LCD_MENS.INC> INCLUDE <LCD_4BIT.INC> INCLUDE <RETARDOS.INC> INCLUDE <BIN_BCD.INC> END

8.16.- Mens_07.asm

( Entrenador Básico 6 )

title " El modulo LCD visualiza un mensaje largo (más de 16 caracteres) que se desplaza "

;**************************************************** Mens_07.asm ***************************************************** ;

; El modulo LCD visualiza un mensaje largo (más de 16 caracteres) que se desplaza a lo largo ; de la pantalla. Se utiliza la subrutina LCD_MensajeMovimiento de la librería LCD_MENS.INC.

;*************************************************************************************************************************** ;Programa para PIC 16F877.

;Velocidad del Reloj:1 MHz. ;Reloj instrucción: 250 KHz = 4 uS. ;Perro Guardián deshabilitado. ;Tipo de Reloj XT.

;Protección de Código: OFF.

;************************************** Elegimos PIC ******************************************************************** list p=16f877, f=inhx32

;*********** Asignación de nombres de Registros de Funciones especiales a direcciones *********************** #include <p16f877.inc> ;Este fichero contiene los nombres y direcciones de los

; registros de funciones especiales.

; Este fichero esta localizado en el directorio ; con el nombre MPASM.

;************************************** Igualdades *********************************************************************** ;************************************** Registros ************************************************************************

CBLOCK 0x20 ENDC

;************************************* Sección Código de Reset ******************************************************* ORG 0 ;Dirección del Vector Reset

GOTO COMIENZO ;Comienzo del Programa

;*********************************** Sección de Configuración ********************************************************* COMIENZO clrf PORTA ; Reseteamos el PORTA.

bsf STATUS,RP0 ; Ir al Banco 1.

movlw 0x06 ; Poner el PORTA como señales digitales. movwf ADCON1

bcf STATUS,RP0 ; Ir al Banco 0. call LCD_Inicializa ; Inicializar el LCD.

;************************************* Principal ************************************************************************** Principal movlw Mensaje0 ; Apunta al mensaje.

call LCD_MensajeMovimiento

goto Principal ; Repite la visualización.

;***************************************** Subrutina "Mensajes" ******************************************************** Mensajes addwf PCL,F

Mensaje0 DT " " ; Posición inicial del mensaje.

; Espacios en blanco al principio para mejor DT "Estudia un Ciclo Formativo " ; visualización.

DT "de ELECTRONICA."

;*********************************************** Librerías **************************************************************** 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.

8.17.- Mens_08.asm

( Entrenador Básico 6 )

title " Juego de la Quiniela "

;*********************************************** Mens_08.asm ********************************************************** ; Programa para el juego de la Quiniela: Al presionar sobre el pulsador conectado al pin RA4

; se incrementara en pantalla aparecerá rápidamente "1", "X", "2". Cuando se suelta el pulsador ; permanece el signo seleccionado.

;*************************************************************************************************************************** ;Programa para PIC 16F877.

;Velocidad del Reloj:1 MHz. ;Reloj instrucción: 250 KHz = 4 uS. ;Perro Guardián deshabilitado. ;Tipo de Reloj XT.

;Protección de Código: OFF.

;************************************** Elegimos PIC ******************************************************************** list p=16f877, f=inhx32

;************** Asignación de nombres de Registros de Funciones especiales a direcciones ******************** #include <p16f877.inc> ;Este fichero contiene los nombres y direcciones de los

; registros de funciones especiales.

; Este fichero esta localizado en el directorio ; con el nombre MPASM.

;************************************** Igualdades *********************************************************************** #DEFINE Pulsador PORTA,4 ; Línea donde se conecta el pulsador.

;************************************** Registros ************************************************************************ CBLOCK 0x20

Contador ENDC

;************************************* Sección Código de Reset ******************************************************* ORG 0 ;Dirección del Vector Reset

GOTO COMIENZO ;Comienzo del Programa

;*********************************** Sección de Configuración ********************************************************* COMIENZO clrf PORTA ; Reseteamos el PORTA.

movlw 0x06 ; Poner el PORTA como señales digitales. movwf ADCON1

bsf Pulsador ; Línea del pulsador que se configura como entrada. bcf STATUS,RP0 ; Ir al Banco 0.

call LCD_Inicializa ; Inicializar el LCD. movlw MensajeQuiniela

call LCD_Mensaje

;************************************* Principal ************************************************************************** Principal btfss Pulsador ; Lee el pulsador.

call IncrementaVisualiza ; Si pulsa salta a incrementar y visualizar el goto Principal ; contador

;************************************** Subrutina "IncrementaVisualiza" *********************************************** IncrementaVisualiza incf Contador,F

movlw D'7' ; Se sitúa en el centro de la línea 2.

In document Entrenadores (página 133-160)

Documento similar