Unidad Profesional Interdisciplinaria de Ingeniera Campus
Zacatecas Microprocesadores, microcontroladores e Interfaz Trasferencia de Datos Alumno: Jos Manuel Lira Avalos Ingeniera Mecatrnica 2MM3
Profesor: Teodoro Ibarra Prez
Zacatecas, Zacatecas, a 26 de noviembre de 2013 1
OBJETIVOS. Implementar un sistema que nos permita mantener la temperatura en una habitacin. INTRODUCCIN Utilizaremos lenguaje ensamblador para programar el microcontrolador MSP430-2553 e implementar un sistema de comunicacin. Esta comunicacin es de modo asncrono, la USART conecta el MSP430 a un sistema externo mediante dos pines denominados URXD (recepcin) y UTXD (transmisin). METODOLOGA EXPERIMENTAL Empezar por declarar los puertos P2.0 a P2.3 como entradas para poder leer si tengo o no voltaje en dichos pines, luego se declararn los puertos P1.3 a P1.7 como salidas, descartaremos el puerto P1.6. As mismo utilizaremos el puerto P1.0 para verificar que los datos se estn trasmitiendo, es decir, encender el LED cuando estemos enviando datos. Pare enviar voltaje a los diferentes pines del puerto 1 utilizar el desplazamiento de registros (RRA) el cual mover un uno lgico del P1.7 al P1.3. Para cerrar el circuito utilizar un teclado de 4x4, el cual tiene ocho puertos, los primeros cuatro son entradas, los ltimos cuatro son salidas, de las salidas del teclado enviar unos lgicos a los puertos P2.0 a P2.3 DESARROLLO. A continuacin se presenta el esquemtico del circuito utilizado.
Figura 1.1- Circuito empleado en el sistema de comunicacin, note la importancia de las resistencias pull down. 2
Figura 1.2- Circuito armado en el protoboard, la entrada 1 (in1) es la que se encuentra del lado del asterisco en el teclado, mietras que la salida 4 (out4) es la que se encuentra del lado de la letra D en el teclado.
A continuacin se presenta el cdigo utilizado Setup: clr.b &DCOCTL mov.b &CALBC1_12MHZ,&BCSCTL1 ; Set RSELxRRRR55 mov.b &CALDCO_12MHZ,&DCOCTL bis.b #0x06,&P1SEL bis.b #0x06,&P1SEL2 bis.b #0x41,&P1DIR bic.b #0x41,&P1OUT bis.b #0x80,&UCA0CTL1 bis.b #78,&UCA0BR0 mov.b #0,&UCA0BR1 bis.b #0x21,&UCA0MCTL bic.b #0x01,&UCA0CTL1 bis.b #0x03,&IE2
cargar: mov.b #0x80,R4 ;mov.w #0x0F,P2SEL mov.b #0x00,&P2IN mov.b #0xB9, P1DIR ;borrar esta lnea(slo autor) main: ;bic.b #UCA0TXIFG, &IFG2 ;limpiar banderas ;bic.b #UCA0RXIFG, &IFG2 ;limpiar banderas clr.b &IFG2 ;limpia todo1 derecha: cmp #0x40,R4;instruccion para desactivar el P1.6. es importante. jeq fila0 ;complemento de linea anterior
digitoAS: mov.b &P2IN, R5 cmp #0,R5 jeq wAS jne digitoAS wAS: mov.b #0x64,P1OUT ;digito asterisco mov.b #42,&UCA0TXBUF jmp cargar
digitoGT: mov.b &P2IN, R5 cmp #0,R5 jeq wGT jne digitoGT wGT: mov.b #0x74,P1OUT ;digito gato mov.b #35,&UCA0TXBUF jmp cargar A continuacin describo el cdigo utilizado, la etiqueta Setup es utilizada para configurar la transferencia de datos a 9600 baudios, as como para declarar los puertos de entrada, ver figura 2. Las etiquetas cargar y main sirven como bucle para regresar a las condiciones iniciales, es decir, en la etiqueta cargar movemos un 80 en hexadecimal al registro 4 (R4), este ochenta equivale a 10000000 en binario, con lo que le asignaremos un uno lgico al puerto P1.7, luego se limpia todo lo que ste en nuestro registro de entrada (P2IN) y se activan los puertos de salida asignando un B9 en hexadecimal al registro P1DIR, ver figura 3
Figura 2.1.- Configuracin a 9600 baudios. Figura 2.2.- Condiciones iniciales, para limpiar las banderas tambin funciona lo que est comentado. 7
Debido a que el cdigo es repetitivo solo se explicara el funcionamiento de la primera fila del teclado, es decir, los nmeros 1, 2, 3 y la letra A. En la figura 3.1 se declaran todas las filas del teclado 4x4, dependiendo del nmero almacenado en R4 pasaremos a encender dicha fila, una vez que entremos en la fila, en este caso es la fila 1, lo siguiente es ingresar o comprobar que digito est seleccionado. En la figura 3.2 lo primero que se hace es desplazar a la derecha lo que est en R4, es decir, para la siguiente vuelta R4 activara el P1.6, luego pregunto por el estado P2IN, y dependiendo de la tecla seleccionada puede saltar de digito1 a digitoA, respetivamente. Ahora seleccionaremos digitoA, slo para ejemplificar ya que cualquier digito se comporta igual, una vez en digitoA preguntamos por el estado de P2IN, previamente sabamos que tena un valor, para este ejemplo es el 1 en decimal, pero luego de soltar el botn ste valor ser cero, aprovechando esto yo puedo escribir un solo digito, como se ve en la Figura 3.3. Para saber que el usuario ha soltado la tecla comparamos lo que hay en R5 contra cero, si esto se cumple es porque ya se ha liberado la tecla con lo que pasamos a la funcin wA (writes letter A). Una vez en esa etiqueta empezamos otra vez el cdigo, por lo que no habr problema con las dems letras.
Figura 3.1.- Declaracin de las filas Figura 3.2.- Cdigo para ingresar en los dgitos. Figura 3.3.- Ejemplo del cdigo de la tecla A
Los resultados obtenidos en la HyperTerminal se muestran en la siguiente figura.
Figura 4.- Resultados obtenidos en la HyperTerminal
CONCLUSIONES. Necesitamos una resistencia pull down para enviar ceros a las entradas, es decir, enviar ceros a los pines P2.0 a P2.3, en caso de no incluir estas resistencias obtendremos valores extraos en las entradas. Los puertos P1.1 y P1.2 no pueden ser utilizados, ya que estn reservados para la trasferencia de datos. 8
Como primera opcin recurrimos a los retardos, pero no son del todo buenos, ya que, si dejamos presionado el botn continua escribiendo en la HyperTerminal, la solucin fue detectar cuando soltamos el botn, y entonces si pasar a una funcin de escritura. Por lo tanto solo se genera un carcter y no lneas de caracteres. No podemos entrar en modos de bajo consumo, pues dejaramos de tener voltajes en los pines, por lo tanto no podramos salir de ese estado. Se utiliz movimiento de registros por ser ms rpido que disminuir unidades al puerto 1
REFERENCIAS BIBLIOGRFICAS. Texas Instruments Incorporated (2012), MSP430x2xx Family User's Guide, USA. Disponible en: http://www.ti.com/product/msp430g2553