aplicación del sci con hcs12 e hyperterminal

Download Aplicación del SCI con HCS12 e Hyperterminal

Post on 15-Oct-2015

44 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

INSTITUTO TECNOLOGICO DE NUEVO LAREDOINGENIERIA EN ELECTRONICA

APLICACIN DE MICROCONTROLADORESMAESTRO: ING. JOSE JUAN RODRIGUEZ LOERA

PRACTICA: APLICACIN DEL MODULO SCI

ALUMNO: JUAN DANIEL FLORES GUTIERREZNUMERO DE CONTROL: 09100617

Nuevo Laredo, Tamaulipas. Lunes 9 de Diciembre del 2013

Objetivo: Realizar un interfaz de comunicacin serie (SCI) tipo full-dplex entre el MC9S12E128V1 e Hyperterminal hacer una aplicacin en la cual al momento de escribir el nombre del alumno encienda un LED, que para este caso ser el nombre de DANIEL. Material y Equipo: Computadora personal Programa: Code Warrior e Hyperterminal MC9S12E128V1 Pantalla LCD Teclado Matricial Protoboard Alambres (Jumpers) Fuente de voltaje

Marco Terico:Teclado y Pantalla

Teclado matricial 4x4Un teclado matricial est compuesto por filas y columnas de cables, de manera que al pulsar una tecla se pone en contacto una fila con una columna. En la figura anterior es posible ver que las columnas del teclado matricial estn conectadas a los 4 bits bajos de algn puerto, mientras que las filas estn conectadas a los 4 bits altos del mismo puerto.

Display LCD:Las pantallas de cristal lquido LCD o display LCD para mensajes (Liquid CristalDisplay) tienen la capacidad de mostrar cualquier carcter alfanumrico, permitiendo representar la informacin que genera cualquier equipo electrnicode una forma fcil y econmica. La pantalla consta de una matriz de caracteres (normalmente de 5x7 o 5x8 puntos) distribuidos en una, dos, tres o cuatro lneas de 16 hasta 40 caracteres cada lnea. El proceso de visualizacin es gobernado por un microcontrolador incorporado a la pantalla, siendo el Hitachi 44780 el modelo de controlador ms utilizado.

A continuacin se presenta la descripcin de seales empleadas por el mduloLCD as como el nmero de patilla a la que corresponden.

Comunicacin SCI.La comunicacin SCI permite comunicacin serie full dplex, asncrona entre un CPU y dispositivos remotos, incluyendo otros CPUs. El transmisor y receptor operan independientemente, a su vez estos usan el mismo generador de velocidad de transferencia o tambin llamado Generator Baud Rate. Se puede usar la hyperterminal de una computadora como dispositivo remoto para transmitir y recibir datos, dispositivo que ser utilizado en esta prctica. Registros SCI

Los registros SCIBDH sirven para configurar la velocidad de transferencia de bits. (Baud Rate). Los registros de control (SCICR1) se utilizan para configurar el sistema SPI, los registros de status (SCISR1) se utilizan para identificar la situacin en la que se encuentra el sistema SPI y tambin sus cambios, estos se dan mediante la activacin de banderas y finalmente los registros SCIDRH son los que almacenan o cargan el dato de la comunicacin.Diagrama de bloques:

Desarrollo:Antes de comenzar la explicacin del cdigo primeramente se mostrara el diagrama de flujo a seguir:

En esta primera parte del cdigo hacemos la declaracin de los puertos que se estarn usando como entradas y salida de propsito general, de las cuales el puerto A se utilizara como los Datos de la LCD, el puerto B es donde estar la configuracin de esta misma (RS, RW, E), y en el puerto P solamente se usara una terminal, la cual servir de indicadora cada vez que se presione una tecla.Despus tenemos la configuracin del puerto que se estar usando con interrupciones que es el puerto AD, del cual usaremos solo la parte baja, donde estamos configurando de byte para las columnas y de byte para las filas del teclado matricial, para la parte donde estaremos usando entradas configuramos las resistencias internas y habilitamos como interrupciones, por consiguiente limpiamos banderas de interrupcin y habilitamos esa parte baja del AD como digital y habilitamos interrupciones con CLIEn la configuracin del SCI, hablitamos el SCI0BDL con un baud rate de 9600 y el SCI0CR2 como transmisor y receptor.

En esta parte del programa solo se inicializa la LCD de la cual calrgas las 2 lineas $38, despus limpias el LCD $01 y enciendes el cursor $0F y despus la posicin del cursor $80, pero para esto cada vez que cargas uno de estos valores tienes que irte a la configuracin de la cual guardas el dato en el puerto que se utilizara cono bus de datos del LCD el cual en mi caso fue el puerto A, posteriormente limpiar el RS (bit 7) y RW(bit 6) y mandar un 1 pulso al E(bit 5) [de los cuales estos 3 bits se encuentran en el puerto B] y posteriormente regresar a la parte del cdigo donde se mand llamar, que en este caso fue de la inicializacin del LCD.

Dentro del programa principal se est monitoreando el contador ya que si este es igual a 6 entonces encender un LED que se coloc en el bit menos significativo del puerto P, pero si no es igual a 6 este programa continuara rotando un cero alrededor de las columnas, al igual que moretear ahora la bandera del RDRF del SCI0SR1 la cual cuando se active saltara a la seccin del programa correspondiente y haciendo una comparacin con la localidad de memoria $2000 la cual tiene un $0 guardado ah, entonces se estar retronando haciendo solo el recorrido de ceros monitoreando la bandera de RDRF y la localidad de memoria $2000 de la cual cuando la comparacin deje de valer cero entonces sale del retorno y carga los valores de los ndices X y Y no sin antes regresar un $0 a la localidad de memoria $2000, despus de esto carga lo que est en la localidad de memoria $2500, en la cual se encuentra un valor que fue el resultado de la suma ocurrida dentro de la interrupcin, del cual este resultado se compara con el ndice X (que contiene valores hexadecimales de lo que queremos mostrar en LCD) ya que hace la comparacin, se queda en un ciclo anidado incrementando tanto ndice X como incide Y, esperando a que el valor que est en la localidad $2500(producto de la suma en la interrupcin) coincida con alguno de los valores de una tabla que el ndice X est recorriendo, ya que encontr el valor de X con el de la localidad $2500, entonces se activa la bandera Z y se va a imprimir saliendo de ese ciclo anidado.Al momento de salir del ciclo anidado mencionado anteriormente y se va a imprimir, entonces antes de imprimir carga el valor de Y, cabe notar que este valor se estaba indexando al mismo tiempo que el X, entonces esto nos da la misma posicin en Y, entonces el valor que se encuentre en esta posicin es el valor que se imprimir, para ello, como mencione al principio del prrafo se carga el valor de Y en dos acumuladores A y B, en el acumulador A se carga y lo guarda en SCI0DBL para mostrarlo en la hyperterminal y en B se carga para despus guardarlo en la LCD, de esta manera se mostrara en ambas pantallas lo mismo (del cual cumple la caracterstica Full-Duplex), posteriormente, al momento de imprimir en LCD se hacen los mismos pasos que al inicializar la LCD y despus retorna al programa principal.

Dentro del programa principal cuando se activa la bandera RDRF, salta a una donde se encuentra la etiqueta comunicacin en la cual carga el dato SCI0DL en el acumulador B y se vuelve a enviar a SCI0BDL para que se visualice en la hyperterminal, de esta manera se podr ver en la pantalla de la PC, despus de esto brincamos a imprimir este mismo dato, para esto aprovechamos que se carg en el acumulador B y al momento de ir a imprimir se guarda lo que se econtraba en el acumulador B en el bus de datos del LCD, y despus se repite la configuracin de LCD para imprimir y despus pasa al siguiente etapa de la aplicacin.

En esta etapa de la aplicacin es donde se define la contrasea para poder mantener apagado (mientras no se cumple la condicin de encenderse un LED cuando el nombre del alumno escrito correctamente). Esto consiste primeramente en preguntar si en el contador hay algn valor, si no lo hay, compara la letra que se encuentra en la LCD con una D, en caso de que si sea una D se le suma un 1 al contador, en caso de que no sea una D, el contador estar en cero el bit 1 del PTP estar en cero, ahora si en el catador hay un 1 (sea que ya haba detectado una D) entonces salta a comparar si este valor de la LCD es A, si no lo es el contador se mantiene en cero y retornara al programa principal (esto con el fin de que la palabra DANIEL conserve su ortografa correctamente sin que dentro de esta palabra existan leras de ms) pero si si es A se incrementa otro 1 al contador y salta a preguntar por una N, ahora se continua haciendo lo mismo este programa, sea, pregunta por las dems letras e incrementa un 1 por cada letra acertada segn la secuencia del nombre DANIEL. Ya que se llega a la ltima letra L llega a la suma esperada de 6, entonces, como se explic anteriormente dentro del programa principal se pregunta por un 6 en el contador y como al llegar a la letra L el contador ahora es igual a 6, del programa principal brinca a encender el bit menos significativo del puerto P, que es donde se coloca un LED indicador. Ya que se enciende continua con su rutina normal y al momento de presionar otra tecla (cualquiera que sea) en el instante de imprimir la nueva letra y hacer nuevamente las comparaciones de la palabra y el contador regrese a cero entonces se mandara un cero en el bit 1 del PTP apagando nuevamente el LED indicador.

Al final del programa se declar en el vector de interrupciones una, la cual fue llamada como TECLADO, para poder entrar a esta interrupcin se crea una etiqueta en la cual est un cdigo que haga que cuando se presione un botn del teclado ( como se estn rotando ceros) al momento en que uno de los ceros se una con una interrupcin se encender #$01 en el puerto P (para encender el LED rojo) y #$01 en la localidad $2000, que es la que est monitoreando el programa principal, despus de esto se lee con PIFAD las filas y con PTAD las columnas para despus sumarlas y que el resultado de esta suma poder guardarlo en la localidad de memoria $2500 (el cual como ya se explic ante