Subrutina Display LCD 16X2 AVR asm

Subrutina Display LCD 16X2, AVR ensamblador (assembler)


LINK DE DESCARGA AL FINAL DEL POST

;***************************************************************************
; SUBRUTINA DE CONTROL Y ESCRITURA EN DISPLAY LCD 16X2 (1602), PARA DIFERENTES 
; FRECUENCIAS DE OPERACION, EN LENGUAJE ENSAMBLADOR, COMPATIBLE PARA DIFERENTES 
; FAMILIAS DE MICOCONTROLADORES AVR DE 8 BITS.
;
; REALIZADA POR ING. C.N. JOSUE NORBERTO MARTINEZ F. (OCTUBRE 2018)
; produccionesrek@gmail.com
; http://prdiagramasyelectronica.blogspot.com/
;***************************************************************************
;
;EL CODIGO DE ESTAS SUBRUTINAS PUEDE SER AGREGADO AL CODIGO DEL PROGRAMA 
;PRINCIPAL O PUEDE SER INCLUIDO UTILIZANDO EL COMANDO ".INCLUDE"
;
;  EJEMPLO:
;  .INCLUDE "SUBRUTINA_LCD_16X2_4HILOS.INC"
;
;
;PARA EJECUTAR ESTA SUBRUTINA SE DEBEN SEGUIR LOS SIGUIENTES PASOS:
;1.- DEFINIR LAS CONSTANTES:
; FRECUENCIA_MHZ
; REFERENCIA_CERO
; DDRX_DISPLAY
; PORTX_DISPLAY
; DATA_BIT4
; DATA_BIT5
; DATA_BIT6
; DATA_BIT7
; REGISTER_SELECT
; ENABLE_PIN
;
;2.- INICIALIZAR EL DISPLAY EJECUTANDO LA SUBRUTINA:
; INICIAR_SUBRUTINA_LCD16X2_4HILOS
;
;3.- ENCENDER EL DISPLAY EJECUTANDO LA SUBRUTINA:
; ENCIENDE_DISPLAY
;
;4.- UTILIZAR EL COMANDO "RCALL" PARA EJECUTAR LA DIFERENTES SUBRUTINAS DE CONTROL
;    Y ESCRITURA DISPONIBLES EN ESTE ARCHIVO
;
;
;5.- NO ES NECESARIO CONFIGURAR EL PUERTO DDR, YA QUE LA CONFIGURACION DE ENTRADAS Y SALIDAS
;    PARA EL DISPLAY SE ENCUENTRA INCLUIDA EN ESTA SUBRUTINA.
;
;
;EJEMPLO DE IMPLEMENTACION:
;---------------------------------------------------------------------
;
;  .EQU FRECUENCIA_MHZ = 4 ;FRECUENCIA DEL MICROCONTROLADOR (MHZ)
;  .EQU REFERENCIA_CERO = 0 ;NO CAMBIAR
;  .EQU DDRX_DISPLAY = DDRB ;DDRX  (SELECCIONAR PUERTO DE SALIDA DEL AVR)
;  .EQU PORTX_DISPLAY = PORTB ;PORTX  (SELECCIONAR PUERTO DE SALIDA DEL AVR)
;  .EQU DATA_BIT4         = 0 ;PX0  (PIN DE SALIDA)
;  .EQU DATA_BIT5         = 1 ;PX1  (PIN DE SALIDA)
;  .EQU DATA_BIT6         = 2 ;PX2  (PIN DE SALIDA)
;  .EQU DATA_BIT7         = 3 ;PX3  (PIN DE SALIDA)
;  .EQU REGISTER_SELECT = 4 ;PX4  (PIN DE SALIDA)
;  .EQU ENABLE_PIN         = 5 ;PX5  (PIN DE SALIDA)
;
;  RCALL INICIAR_SUBRUTINA_LCD16X2_4HILOS ;CONFIGURACION INICIAL
;  RCALL ENCIENDE_DISPLAY ;ENCIENDE DISPLAY, CURSOR EN PRIMERA LINEA
;  RCALL H ;TEXTO EN PRIMER RENGLON "HOLA"
;  RCALL O
;  RCALL L
;  RCALL A
;  RCALL CURSOR_A_LINEA2 ;CURSOR EN 2DA LINEA
;  RCALL M ;TEXTO EN SEGUNDO RENGLON "MUNDO"
;  RCALL U
;  RCALL N
;  RCALL D
;  RCALL O
;
;  FIN: ;FIN
;  RJMP FIN
;
;  .INCLUDE "SUBRUTINA_LCD_16X2_4HILOS.INC"
;---------------------------------------------------------------------
;
;ESTA  SUBRUTINA  SOBREESCRIBE  EL  REGISTRO  (R16) DURANTE  LAS 
;OPERACIONES QUE REALIZA
;
;NOTA: CON EL FIN DE DISMINUIR EL TAMAÑO DE MEMORIA UTILIZADO, LAS SUBRUTINAS DE LAS 
;LETRAS Y SIMBOLOS QUE NO SE UTILICEN PUEDEN SER BORRADAS DE ESTE ARCHIVO (OPCIONAL).
;
;***************************************************************************
;LISTA DE SUBRUTINAS DISPONIBLES EN ESTE ARCHIVO
;***************************************************************************
;
;SUBRUTINA FUNCION
;
;RCALL INICIAR_SUBRUTINA_LCD16X2_4HILOS - - - - CONFIGURA LOS PUERTOS DEL MICROCONTROLADOR
;  Y LOS AJUSTES GENERALES DEL DISPLAY, SE EJECUTA
; UNA SOLA VEZ AL ENCENDER EL DISPLAY
;RCALL APAGA_DISPLAY - - - - - - - - - - - - -  APAGA EL DISPLAY 
; (LOS DATOS DEL DISPLAY NO SE BORRAN)
;RCALL BORRA_MEMORIA_DISPLAY - - - - - - - - -  BORRA LOS DATOS DEL DISPLAY
;RCALL ENCIENDE_DISPLAY - - - - - - - - - - - - ENCIENDE EL DISPLAY Y ACTIVA EL CURSOR
;RCALL ENCIENDE_DISPLAY_SIN_CURSOR - - - - - -  ENCIENDE EL DISPLAY SIN CURSOR
;RCALL CURSOR_A_HOME - - - - - - - - - - - - -  COLOCA EL CURSOR EN EL INICIO (IZQUIERDA)
; DEL PRIMER RENGLON DEL DISPLAY
;RCALL CURSOR_A_LINEA2 - - - - - - - - - - - -  COLOCA EL CURSOR EN EL INICIO (IZQUIERDA)
; DEL SEGUNDO SENGLON
;RCALL CURSOR_A_LA_DERECHA - - - - - - - - - -  MUEVE EL CURSOR UNA POSICION A LA DERECHA SIN
; MODIFICAR NINGUN TEXTO EN EL DISPLAY
;RCALL CURSOR_A_LA_IZQUIERDA - - - - - - - - -  MUEVE EL CURSOR UNA POSICION A LA IZQUIERDA SIN
; MODIFICAR NINGUN TEXTO EN EL DISPLAY
;RCALL DISPLAY_A_LA_DERECHA - - - - - - - - - - MUEVE TODO EL TEXTO DEL DISPLAY UN ESPACIO A LA DERECHA
; (LA COLUMNA 16 VUELVE A APARECER EN LA COLUMNA 1
; DESPUES DE HABERSE DESPLAZADO 24 ESPACIOS A LA DERECHA)
;RCALL DISPLAY_A_LA_IZQUIERDA - - - - - - - - - MUEVE TODO EL TEXTO DEL DISPLAY UN ESPACIO A LA IZQUIERDA
; (LA COLUMNA 1 VUELVE A APARECER EN LA COLUMNA 16
; DESPUES DE HABERSE DESPLAZADO 24 ESPACIOS A LA IZQUIERDA)
;
;SUBRUTINA        FUNCION
;
;RCALL A ;ESCRIBE "A" EN EL DISPLAY
;RCALL B ;ESCRIBE "B" EN EL DISPLAY
;RCALL C ;ESCRIBE "C" EN EL DISPLAY
;RCALL D ;ESCRIBE "D" EN EL DISPLAY
;RCALL E ;ESCRIBE "E" EN EL DISPLAY
; . .
; . .
; . .
;RCALL U ;ESCRIBE "U" EN EL DISPLAY
;RCALL V ;ESCRIBE "V" EN EL DISPLAY
;RCALL W ;ESCRIBE "W" EN EL DISPLAY
;RCALL XX ;ESCRIBE "X" EN EL DISPLAY
;RCALL YY ;ESCRIBE "Y" EN EL DISPLAY
;RCALL ZZ ;ESCRIBE "Z" EN EL DISPLAY
;RCALL CERO ;ESCRIBE "0" EN EL DISPLAY
;RCALL UNO ;ESCRIBE "1" EN EL DISPLAY
;RCALL DOS ;ESCRIBE "2" EN EL DISPLAY
; . .
; . .
; . .
;RCALL OCHO ;ESCRIBE "8" EN EL DISPLAY
;RCALL NUEVE ;ESCRIBE "9" EN EL DISPLAY
;RCALL ADMIRACION ;ESCRIBE "!" EN EL DISPLAY
;RCALL COMILLAS ;ESCRIBE " " " EN EL DISPLAY
;RCALL GATO ;ESCRIBE "#" EN EL DISPLAY
;RCALL MONEDA ;ESCRIBE "$" EN EL DISPLAY
;RCALL PORCENTAJE ;ESCRIBE "%" EN EL DISPLAY
;RCALL ABRE_PARENTESIS ;ESCRIBE "(" EN EL DISPLAY
;RCALL CIERRA_PARENTESIS ;ESCRIBE ")" EN EL DISPLAY
;RCALL MAS ;ESCRIBE "+" EN EL DISPLAY
;RCALL COMA ;ESCRIBE "," EN EL DISPLAY
;RCALL MENOS ;ESCRIBE "-" EN EL DISPLAY
;RCALL PUNTO ;ESCRIBE "." EN EL DISPLAY
;RCALL DIAGONAL ;ESCRIBE "/" EN EL DISPLAY
;RCALL DOS_PUNTOS ;ESCRIBE ":" EN EL DISPLAY
;RCALL PUNTO_Y_COMA ;ESCRIBE ";" EN EL DISPLAY
;RCALL MENOR_QUE ;ESCRIBE "<" EN EL DISPLAY
;RCALL IGUAL ;ESCRIBE "=" EN EL DISPLAY
;RCALL MAYOR_QUE ;ESCRIBE ">" EN EL DISPLAY
;RCALL INTERROGACION ;ESCRIBE "?" EN EL DISPLAY
;RCALL POTENCIA ;ESCRIBE SIMBOLO DE POTENCIA DE UN NUMERO
;RCALL GUION_BAJO ;ESCRIBE "_" EN EL DISPLAY
;RCALL FLECHA_DERECHA ;DIBUJA UNA FLECHA APUNTANDO A LA DERECHA
;RCALL FLECHA_IZQUIERDA ;DIBUJA UNA FLECHA APUNTANDO A LA IZQUIERDA
;RCALL GRADOS ;ESCRIBE "°" EN EL DISPLAY
;RCALL MIU ;ESCRIBE LA LETRA GRIEGA "MU", SUFIJO DE "MICRO-"
;RCALL RAIZ_CUADRADA ;ESCRIBE SIMBOLO DE "RAIZ CUADRADA"
;RCALL ENHE ;ESCRIBE "ñ" EN EL DISPLAY
;RCALL INFINITO ;ESCRIBE SIMBOLO DE "INFINITO"
;RCALL OHM ;ESCRIBE EL SIMBOLO DE "OHMS"
;RCALL PI         ;ESCRIBE EL SIMBOLO "PI" EN EL DISPLAY
;RCALL ENTRE ;ESCRIBE EL SIMBOLO DE DIVISION EN EL DISPLAY
;RCALL ESPACIO ;DEJA UN ESPACIO VACIO Y AVANZA EL CURSOR
;RCALL RELLENO ;RELLENA UN ESPACIO Y AVANZA EL CURSOR
;***************************************************************************


LINK DE DESCARGA DEL CÓDIGO DE LA SUBRUTINA, EN LENGUAJE ENSAMBLADOR

Tamaño: 5KB
Tipo: Archivo comprimido en WinRar