TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: jttpic en 24 de Octubre de 2003, 08:40:00
-
Utilicé un microcontrolador MCHC08 MORTOROLA para escribir en una pantalla (LCD) y utilicé un código como el siguiente:
MSG_MENU db "Menu"
Lo que hace es mandar letra a letra la palabra entre comillas simples a la LCD.
Quiero escribir en la LCD cualquier cosa usando una instrucción parecida a la de arriba pero usando un PIC16F876 ya sé hacerlo usando tablas y el opcode retlw sin embargo resultaría muy extenso y complicado de modificar porque tengo que hacer un menú largo. Por esto busqué varias directivas como db, DATA, etc y los registros indf y fsr pero no sé como usarlos. Si saben algo que pudiera ayudarme, de verdad, les estaría enormemente agradecida...gracias por la ayuda que puedan brindarme...
-
Saludos... a ver yo hice un menu en el 877A, era algo asi:
TM EQU 0x08 ;Direccion de las Tablas de mensajes
;de los menus
;Funcion que pide contraseña para poder mostrar
;el menu principal
DISPLAY_PASSWORD
CLRF PORTB
CLRF CONTMSG ;Limpio el contador de mensaje
LCDRS_ALTO
INICIO_MENSAJE
_MOVLF TM,PCLATH ;Coloca la parte alta del
;program counter
MOVF CONTMSG,W
CALL MSG_PASSWORD
CLRF PCLATH
ANDLW 0xFF ;se compara con el caracter de
;fin de cadena
BTFSC STATUS,Z ;FIN DE MENSAJE?
GOTO FIN_MENSAJE ;SI -> se acabo el mensaje, salte
CALL WLCD ;NO -> todavia hay caracteres
;continue escribiendo LCD
INCF CONTMSG,F
GOTO INICIO_MENSAJE
FIN_MENSAJE
LCDRS_BAJO
.
.
.
MSG_PASSWORD
ADDWF PCL,F
DT "PASSWORD:",0x00
END
Explico:
>como el programa era grande la tabla esta en la posicion 0800 de la memoria de programa (creo que es la pagina 1), por eso debo utilizar el PCLATH, de lo contrario el contador de programa se pierde despues del CALL MSG_PASSWORD... bueno eso me pasaba a mi.
>Utilizo un caracter de fin de cadena para saber hasta donde sigo haciendo el CALL
>El INDF y FSR son registros de memoria RAM. El FSR es como un apuntador de posicion de memoria y el INDF es el contenido de esa posicon de memoria, para leer/escribir de (en) la RAM, debes incrementar (dec) el FSR hasta donde tu lo decidas y luego lees/escribes con el INDF. Debes tener en cuenta la configuracion de bancos de RAM de tu PIC.
>El LCD modulo HD44780, configurado a 4 bits.
Espero haberte ayudado...
Suerte
-
Se me olvidaba... la directiva DT es como varias instrucciones RETLW (eso lo puedes ver en la ventana de memoria de programa si estas trabajando con el MPLAB)... el punto es que el valor devuelto esta en W.
Te mando el mi codigo para que lo veas.
-
En realidad el comando DT (Data Table) es una forma organizada de armar una tabla de datos ASCII para enviar a un mensaje, haciendolo mas legible y mantenible.
Utilizara el mismo espacio que una tabla hecha utilizando varios Retlw X.
No es utilizable, por ejemplo, cuando tienes que buscar un valor a enviar a un puerto, donde por cuestiones de legibilidad es mejor escribirlo en binario.

