En la siguiente figura se muestran las macros que se usaran mas adelante.
- SETZ setea un valor al puntero Z (ZH:ZL ó R31:R30).
- PUTC imprime un carácter.
- PUTV imprime el valor de un registro.
- CMD_LCD envía un comando al LCD.
- PRINTF_LCD imprime un string ( debe estar almacenado en la flash ). Éste string debe terminar en un 0.
Ahora pasare a mostrar la rutina de comunicación con el LCD.
En ésta primera parte de la rutina de muestra las definiciones de algunas variables y algunas constantes. Cuando se quiera usar un puerto diferente del predefinido ( PORTC ) solamente se debe cambiar esta línea “PUERTO_LCD = PORTC”, aquí se deberá poner el puerto que se usara para manejar el LCD.
En la siguiente figura se muestra lo restante del archivo LCD.asm.
En éste momento no tengo mucho tiempo para explicar estas rutinas, si tienen alguna pregunta por favor escríbanme.
Tanto las rutinas del archivo LCD.asm como el programa principal necesitan la rutinas de retardo, en éste caso pueden usar las rutinas dadas en post pasados ( si no la encuentran me escriben y les enviare el archivo RETARDOS.asm).
Pasaremos a mostrar unos ejemplos muy sencillos del uso de estas rutinas.En la simulación veremos lo siguiente:
En el siguiente ejemplo se llena el LCD con parte del codigo ASCII.
El ejecución del ejemplo anterior nos mostrara los siguiente:
Por último mostrare un ejemplo en el cual se imprimirá un string definido en la flash.
Luego de la simulación veremos los siguiente:
Buenos amigos, espero les sea útil la información…
estaba observando como estructuraste tu programa y me di cuenta de que "CHAR" lo tienes como registro bajo R11
ResponderEliminarComo es que puedes usar la instruccion LDI con el?
Atte:Jahir
LDI nunca la uso con R11, el valor lo cargo en R16 y luego hago un MOV hacia R11.
ResponderEliminar