Vous êtes sur la page 1sur 12

LABORATORIO N5 : MANEJO DE FLASH COMO MEMORIA DE DATOS

Bryan Montes Castaeda 20091005042 (Crditos) Sebastian Eduardo Villalobos Bernal 20091005036 (Horas)
Universidad Distrital Francisco Jos de Caldas el perfecto funcionamiento que debe tener la LCD teniendo en cuenta que los smbolos que se puede Disear e implementar con el microcontrolador un visualizar en esta son los propuestos por el cdigo programa que visualice en cinco (5) matrices de LED un mensaje de mnimo diez (10) caracteres, ASCII y otra rutina en el cual se encargue de el mensaje debe desplazarse a lo largo de las mandarle a la LCD las instrucciones necesarias matrices de derecha a izquierda (publik). Debe para poder visualizar. tenerse en cuenta que las matrices no pueden ser para modificar una tabla en la flash se utilizo manejadas directamente por el microcontrolador rutinas ya descrita por el fabricante as que lo por el consumo de corriente que pueden requerir, nico que se debe hacer es modificar unas as que ser necesario incluir algn tipo de variables escritas en la RAM y llamar la rutina elemento amplificador de corriente (buffer). El correspondiente del borrado de la FLASH o de la mensaje a visualizar se almacenara en la flash, este escritura de ella. mensaje puede ser cambiado utilizando un teclado Manejo de la FLASH: matricial.

1. Descripcin del problema :

2. Anlisis del problema :


Para llevar a cabo este laboratorio es necesario inicialmente escribir las constantes y variables que se van a utilizar en la RAM que incluyen entre ellas las correspondientes para escribir o borrar en la memoria FLASH y conocer el funcionamiento de una pantalla LCD alfanumrica en donde se mostraran el texto correspondiente que se mostrara de derecha a la izquierda en el modulo de cinco matrices de LED de 5X7, para realizar el Publik en la matriz de LED se utilizo una respectiva rutina capaz de mover un respectivo mensaje guardado en la FLASH en cada hilera de derecha a izquierda de la matriz de LED se utilizo tambin el modulo de teclado (y sus respectivas interrupciones ) para configurar el mensaje a visualizar, utilizando tres botones de un teclado matricial: uno para cambiar la letra, otro para aceptarla y un ltimo botn para comenzar a arrojar el mensaje publik . La etapa de la LCD del proyecto debe estar compuesta de dos rutinas esenciales en el cual controle primeramente

Inicial se debe proteger la memoria FLASH desde una determinada posicin para que a la hora de borrar la memoria esta no sea afectada, esta memoria protegida es en la cual estar grabado el programa general de la prctica. Para escribir o borrar un determinado mensaje en esta memoria como ya se dijo anteriormente se utilizo rutinas ya descrita por el fabricante as se debe hacer es modificar unas variables escritas en la ram y llamar la rutina correspondiente del borrado de la FLASH o de la escritura de ella.las variables que se deben modificar son: BUS_SPD: el cual le avisa a la rutina de borrado a escritura la frecuencia en la cual est trabajando el microcontrolador. DATASIZE: especifica el nmero de datos a escribir en la memoria FLASH. START_ADDR: almacena una direccin en la cual va a comenzar a escribirse en la FLASH. DATAARRAY: corresponde a los datos que se guardaran en la memoria.

Las rutinas descritas por el fabricante son: esta vez CONTC = 23 para que estn activadas ERARNGE: es la encarga de de borrar en la todas las columnas y se usa otra variable similar FLASH. para la lectura de una ventana de 24 datos de la PRGRNGE: es la rutina que escribe datos en la flash que se va desplazando en cada ciclo. FLASH. Modulo de teclado: Al haber una interrupcin por el modulo de teclado se verifica inicialmente que botn fue presionado para saber si se va a incrementar la letra que se va a tomar, si se va a escoger esa letra o seleccionar modo publik Adems se utilizo para mostrar en las matrices de led un mensaje mximo de 18 caracteres. Rutina de actualizacin: En el programa hecho en assembler se encuentra una rutina en la cual actualiza en la LCD el mensaje hasta ahora escrito (que se encontrara en la segunda lnea de la LCD alfanumrico) y la letra que est disponible para agregar al mensaje(que estar en la mitad de la primera lnea). Diagrama de flujo: A continuacin se muestra el diagrama de flujo base para la tarea el cual muestra el algoritmo para la visualizacin del publik. Bsicamente se va leyendo byte a byte el mensaje de la memoria FLASH y se va visualizando dinmicamente en cada columna, realizando un barrido de derecha a izquierda. Existe una variable llamada CONTC la cual indica el numero de columnas que deben estar prendidas, y que en cada ciclo de visualizacin se incrementa en una unidad. Tambin una variable que maneja las columnas (Column). Se empieza por visualizar una sola columna, luego dos, luego tres y as sucesivamente hasta 23, y se van mostrando en cada columna los respectivos datos de la flash. Al llegar a 23 columnas en visualizacin, se salta a otra rutina (SCREEN2) la cual es la misma pero

3. Diseo :
Implementacin del Cdigo

ORG 1000H Main: 1000H LDHX #FLBPR LDA # 10D STA ,X ;PROTEGE MEMORIA FLASH DESDE CLRX CLRH BSET BSET MOV MOV MOV MOV MOV COPD,CONFIG1 4,CONFIG2 #0FFH,DDRA ;LCD data #0FFH,LEDA #0FCH,DDRC ;LCD control #0FFH,DDRB ;Rows #1FH,DDRD ;Columns

Definicin, Inicializacin configuracin:

de

variables

Antes de empezar es necesario declarar las variables que se utilizaran. Despus de haber inicializado la RAM se declaran las variables ya determinadas para el problema y que sern utilizadas durante el programa:
COPD EQU 0 PRGRNGE EQU 0FC34H ERARNGE EQU 0FCE4H IMASKK EQU 1 ACKK EQU 2 IMASK1 EQU 1 FLASH_START EQU 860H RS E ALARMAA EQU EQU EQU 2 3 5 ;Borrar display ;Incrementar y ;Display ON, ;Interface de 8

BSET IMASKK, KBSCR MOV # 0E0H, KBIER BSET ACKK, KBSCR BCLR IMASKK,KBSCR BSET IMASK1 , INTSCR1 CLI CLR SAVEWORD CLR CHARACTER

; HABILITAR KBI ; DESHAB IRQ1

CLEAR_DIS EQU %00000001 MODE_SET EQU %00000110 mover DIS_NOCUR_NOBLI EQU %00001100 cursor Off, cursor Esttico DL_N_F EQU %00111000 bits, 2 lineas ORG 60H FILE_PTR: BUS_SPD DS 1 DATASIZE DS 1 START_ADDR DS 2 DATAARRAY DS 100 Column DS 1 CONTCH DS 1 RAM_P DS 1 DATACH DS 1 XTEMP DS 1 CONTC DS 1 CONT DS 1 CONTSW DS 1 TIME DS 1 CONTC2 DS 1 SAVEWORD DS 1 CHARACTER DS 1 CHECKER DS 1

BCLR E,PTC LDHX #2000D ;Espera 20ms. a estabilizacin de fuente D.C. JSR Delay ;para iniciar configuracin del LCD. LDA #DL_N_F JSR CONTROL LDA #MODE_SET JSR CONTROL LDA #DIS_NOCUR_NOBLI JSR CONTROL LDA #CLEAR_DIS JSR CONTROL LDHX #2000D JSR Delay

Subrutina para el desplazamiento del mensaje en las matrices de leda: Esta rutina consiste en escribir en la ltima lnea de la ultima matriz de leds la primera fila de la primera letra que se encuentra en la flash y mostrarla un determinado tiempo despus rotarla para mostrarla en la penltima, y en la ltima se mostrara la siguiente fila de la primera letra. Este proceso se realiza de tal forma que termine de leer todos los datos escritos en la FLASH.
SCREEN:CLRH CLRX INC CONTC LDA CONTC CMP #24D primeras 24 columnas BEQ SCREEN2 CLR Column LDA #150D

A continuacin se deshabilita el modulo COP y se protege la flash desde la posicin 1000H para no tener inconvenientes a la hora de trabajar con la memoria FLASH, adems se configura puertos y variables:

;Mira si ya termino las

CLRH LDX CONTC DIV STA TIME MOV #20D,CONTSW SCREEN_C: MOV #8D,CONT SWEEP: LDA FLASH_START,X PSHX STA PTB MOV Column,PTD LDX TIME JSR Delay PULX DBNZ CONT,SWEEP LDA Column CMP CONTC BEQ GO_ON INC Column AIX #-1 JMP SCREEN_C CLRH LDX CONTC CLR Column DBNZ CONTSW,SCREEN_C JMP SCREEN

GO_ON2: CLRH LDX CONTC2 CLR Column DBNZ CONTSW,SCREEN_C2 JMP SCREEN2A RTSC: CLR CONTC DEC CONTC CLRX JMP SCREEN

Borrar y escribir en la FLASH: Inmediatamente despus de presionar el botn para iniciar a mostrar el mensaje se borra lo que estaba en la flash y se escribe lo que se encuentra en la variable DATAARRAY en la memoria flash por medio de las siguientes lneas de cdigo:
SCREE: CLRH CLRX MOV # 4, BUS_SPD LDHX #0860H STHX START_ADDR LDHX #BUS_SPD JSR ERARNGE MOV # 4, BUS_SPD MOV #100D, DATASIZE LDHX #0860H STHX START_ADDR LDHX #BUS_SPD JSR PRGRNGE

GO_ON:

SCREEN2: MOV #23D,CONTC2 DEC CONTC SCREEN2A: INC CONTC2 LDA CONTC2 CMP #100D caracteres BEQ RTSC CLRH CLR Column LDX CONTC2 MOV #6D,TIME MOV #30D,CONTSW SCREEN_C2: MOV #8D,CONT SWEEP2: LDA FLASH_START,X PSHX STA PTB MOV Column,PTD LDX TIME JSR Delay PULX DBNZ CONT,SWEEP2 LDA Column CMP CONTC BEQ GO_ON2 INC Column AIX #-1 JMP SCREEN_C2

;Mira si ya termino los 20

Interrupcin del KBI: En esta interrupcin se escoge si se quiere cambiar de letra, escoger la que est disponible o comenzar la rutina del publik. .
INTERRUPT_KBI: BRCLR 5,PTD,JMP_INCWORDS BRCLR 6,PTD,CHOOSE_WORDS BRCLR 7,PTD,STARTSCREEN JMP INCREMENT_WORDS BRCLR 0 , CHECKER ,CHANGECHECKER BCLR 0 , CHECKER MOV # 4, BUS_SPD MOV #100D, DATASIZE LDHX #860H STHX START_ADDR LDHX FILE_PTR JSR ERARNGE RTI

JMP_INCWORDS: STARTSCREEN:

CHANGECHECKER:

BSET 0, CHECKER RTI INC CHARACTER LDA #0C0H ADD CHARACTER JSR CONTROL PSHX LDX SAVEWORD LDA LETTERS,X JSR DATO PULX LDA CMP BNE CLR DEC RTI CHARACTER #20D NEXT CHARACTER CHARACTER

Tablas utilizadas: Las tablas utilizadas son tres: la de las letras y nmeros que se pondrn en la LCD, la tabla que corresponde a la decodificacin de cada letra para ubicarla en el modulo de matrices de le, y otra que va a la primera letra que se podr visualizar en la LCD.
LETTERS: FCB 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789'
TABLA: FCB FCB FCB FCB FCB FCB FCB FCB FCB FCB 3FH,44H,44H,44H,3FH,7FH,49H,49H,49H,36H,3EH,41H,41H,41H,22H,7FH,41H,41H,41H,3EH 7FH,49H,49H,49H,41H,7FH,48H,48H,48H,40H,3EH,41H,4DH,49H,2EH,7FH,08H,08H,08H,7FH 41H,41H,7FH,41H,41H,42H,41H,41H,41H,7EH,7FH,08H,14H,22H,41H,7FH,01H,01H,01H,01H 7FH,10H,08H,10H,7FH,7FH,10H,08H,04H,7FH,3EH,41H,41H,41H,3EH,7FH,48H,48H,48H,30H 3EH,41H,45H,43H,3FH,7FH,48H,4CH,4AH,31H,32H,49H,49H,49H,26H,40H,40H,7FH,40H,40H 7EH,01H,01H,01H,7EH,7CH,02H,01H,02H,7CH,7EH,01H,0EH,01H,7EH,62H,14H,08H,14H,62H 60H,10H,0FH,10H,60H,43H,45H,49H,51H,61H,00H,00H,00H,00H,00H,3EH,51H,49H,45H,3EH 11H,21H,7FH,01H,01H,21H,43H,45H,49H,31H,22H,41H,49H,49H,36H,0CH,14H,24H,7FH,04H 7AH,49H,49H,49H,46H,3EH,49H,49H,49H,26H,40H,40H,4FH,50H,60H,36H,49H,49H,49H,36H 32H,49H,49H,49H,3EH

CHOOSE_WORDS:

NEXT:

LDA SAVEWORD JSR TABLA_P STX XTEMP

TABLAINICIAL: FCB '

'

MOV #5D,CONTCH FILL_DATA: LDA TABLA,X STA DATACH PSHX LDA CHARACTER JSR TABLA_P STX RAM_P PULX TXA PSHX SUB XTEMP ADD RAM_P PSHA PULX LDA DATACH STA DATAARRAY,X PULX INCX DBNZ CONTCH,FILL_DATA RTI INC SAVEWORD LDA SAVEWORD CBEQA #38 , MODIFYWORD LDA #89H JSR CONTROL CLRH LDX SAVEWORD LDA LETTERS,X JSR DATO RTI CLR SAVEWORD LDA #89H JSR CONTROL CLRH LDX SAVEWORD LDA LETTERS,X JSR DATO RTI

El cdigo implementado completo se adjunta en los anexos, adems del circuito base.

5. Conclusiones :
Se logro configurar y manipular satisfactoriamente la memoria FLASH del microcontrolador MC68HC908AP16 para guardar un mensaje el cual se muestra en el momento indicado por nosotros en una matriz de LED de tal manera que se desplazara en ellas de derecha a izquierda (publik). Adems se record y reforz los conocimientos adquiridos en el semestre sobre interrupciones y LCD.

RTIN: INCREMENT_WORDS:

MODIFYWORD:

ANEXOS Programas utilizados:


Fresscale CodeWarrior V6.3.

Cdigo completo implementado:

CIRCUITO BSICO IMPLEMENTADO

Vous aimerez peut-être aussi