You are on page 1of 9

Resumen

Investigar acerca del dispositivo LaunchPad MSP430 para una familia de los Microcontroladores Texas, como un ejercicio de actualizacin tecnolgica, que generen referentes de conocimiento y desarrolle el inters por la tecnologa emergente, las nuevas herramientas y sistemas de desarrollo para el diseo de proyectos.

Introduccin [1] El dispositivo de MSP430G2553 que viene


con LaunchPad viene pre programado con una aplicacin demo que demo mostrar algunas de las funciones disponibles en el dispositivo MSP430. Vamos a utilizar el ADC para probar el sensor de temperatura interna y presentar un informe cualquier desviacin de la temperatura inicial modulando un PWM seal usando los temporizadores integrados de la seal PWM el MSP430 est ligada al rojo y LED verdes del MSP430 LaunchPad el calentador se convierte, el rojo LED brillar ms brillantemente por el contrario, el refrigerador se pone, se encender el LED verde - Emulacin de a bordo para programacin & depuracin - Pulsadores y LEDs de propsito general - pernos de 20 pines, compatible con Booster Pack - DIP toma para conectar varios dispositivos de microcontrolador MSP430G2xx - 2 Dispositivos de Microcontroladores MSP430 MSP430G2553 - hasta 16MHz, 16kB Flash, RAM 512B, ADC de 10 bits de 8ch, integrados temporizadores, mdulo de comunicacin serial (USCI--I2C, SPI, UART HW), comparador, GPIO interrumpible & puertos capacitiva sentido I/O

Las etiquetas son opcionales. Cuando se utilizan, deben ser el primer carcter de la lnea. No pueden empezar por un nmero o se desarrolla que lee el estado de un pulsador LaunchPad. Mientras que el botn no es empujado LED rojo del LaunchPad est encendido. Si se pulsa el botn, el LED verde se enciende.

A pesar de este primer programa es corto slo 20 lneas de cdigo - el tutorial cubre mucho terreno. Adems de una visin general de la sintaxis y la estructura bsica de MSP430 lenguaje ensamblador, se proporciona informacin sobre cmo:

Configurar un pin como entrada o salida Encienda una salida dentro o fuera Leer una entrada digital Rama en un lugar diferente en un programa Implementar una simple IF / THEN Implementar una simple construccin LAZO Implementar una simple construccin DEMORA

La sintaxis que aqu se presenta se basa en el Code Composer Studio de TI (CCS), por lo que para completar este ejercicio tendr que tener CCS descargan e instalan en el equipo. Una versin gratuita de CCS est disponible en el sitio web de TI.

montaje bsico sintaxis del lenguaje


Un programa de cdigo en lenguaje ensamblador es un fichero de texto compuesto de una serie de declaraciones de origen. Una declaracin fuente contendr uno o ms de los siguientes elementos:

Label - acta como un marcador en el cdigo fuente, til como destino en la ramificacin declaraciones y llamadas a subrutinas Mnemotcnico - una instruccin de mquina, directiva de ensamblador o macro Operando lista - uno o ms valores a ser operado por la instruccin, directiva o macro Comentario - nota insertada por el programador que no est incluido en el conjunto de de

Si bien la declaracin de la instruccin:

jmp Delay se trasladar la ejecucin del programa hasta el punto marcado por el sello de retardo. Los operandos son muy flexibles. En los dos ejemplos anteriores, hay tres tipos de operando diferentes - el nmero 10, el registro general R5, y definido por el usuario etiqueta de smbolo Delay. En total, hay siete modos diferentes que abordan, as como soporte para numerosos tipos constantes como binario, decimal, hexadecimal y ASCII.

La siguiente declaracin de fuente ejemplo contiene todos estos elementos:

mnemotcnica label lista operando comentario Mainloop bit.b # 00001000b, y P1IN; Leer interruptor en P1.3

El ms fundamental de los elementos son los mnemnicos instrucciones de la mquina, ya que estos se asignan directamente a las funciones de la CPU del microcontrolador. El completo conjunto de instrucciones MSP430 consta de 27 instrucciones bsicas. Hay un adicional de 24 instrucciones emuladas que se traducen las instrucciones bsicas del software ensamblador. En comparacin con el conjunto de comandos de algunos lenguajes de alto nivel, estas instrucciones de mquina son tareas muy bsicas, rendimiento, como las operaciones matemticas y lgicas, la escritura y la recuperacin de los valores de la memoria, y se ramifican a diferentes secciones de cdigo.

La naturaleza de las directivas de ensamblador es muy diferente de la de instrucciones de la mquina. Mientras que las instrucciones de mquina se relacionan directamente con el funcionamiento del propio microcontrolador, directivas de ensamblador son instrucciones relacionadas con el proceso de montaje. Algunas funciones comunes de directivas incluyen smbolos que definen, la memoria, la inicializacin y bibliotecas especificando de que el ensamblador puede obtener macros.

Directivas del ensamblador se pueden distinguir de instrucciones de la mquina por su punto inicial, por ejemplo:

. Finales

Por ejemplo, la declaracin de la instruccin:

es la directiva que le dice al ensamblador que ha llegado a la ltima declaracin de fuente de un programa.

add.w # 10, R5 lleva el nmero 10, lo agrega al valor almacenado en el registro general R5 y almacena el resultado de nuevo en R5.

Las etiquetas son opcionales. Cuando se utilizan, deben ser el primer carcter de la lnea. No pueden empezar por un nmero o contener un espacio en blanco, pero por lo dems pueden incluir los caracteres alfanumricos AZ, az, 0-9, _ y $.Las etiquetas son sensibles a maysculas por

defecto, pero se pueden establecer como maysculas y minsculas como una opcin. Una etiqueta puede estar seguido de dos puntos (:), pero esto no es necesario y el colon no se trata como parte del nombre de la etiqueta cuando se hace referencia en otras partes del programa.

Los comentarios tambin son opcionales. Se puede utilizar cualquier carcter ASCII incluidos espacios. Cuando un comentario se inicia en el primer carcter de una lnea que puede comenzar con un asterisco (*) o un punto y coma (;), si no comienza en el primer carcter que slo puede comenzar con un punto y coma.

de entrada, un valor que se lee de un registro. Para guardar un valor de ms tarde, ese valor se escribe en un registro. En cuanto a la CPU de todas estas operaciones son funcionalmente lo mismo - a bit, byte, palabra o se escriben o leen desde una ubicacin especificada. Una vez que domine las tcnicas bsicas para la manipulacin de estos bits, bytes y palabras, aprender a implementar una caracterstica de la MSP430 convierte en gran medida una cuestin de la utilizacin de manuales y otros recursos para el estudio de los registros asociados a esa funcin para averiguar lo que va a producir la configuracin resultado deseado.

El primer carcter de una lnea slo puede ser una etiqueta, asterisco, punto y coma o un espacio en blanco. El primer carcter no puede ser un mnemnico o ser tratada como una etiqueta por el ensamblador.

La tarea de lectura y escritura a los registros como lugares de memoria discretas se simplifica en gran medida por el uso de alias simblicos en el programa de la asamblea. En lugar de utilizar direcciones numricas, los registros y los bits son referenciados normalmente con nombres ms o menos significativas, como SP para "Indicador de pila" o P1OUT para el "Puerto 1 Salida de Registro".

el programa de ejemplo
El programa de ejemplo para el tutorial aparece a continuacin. Como se ha explicado anteriormente, es un sencillo programa que est vinculado al hardware incorporado del LaunchPad. Si se pulsa el botn, el LED verde est encendido, si el botn no se presiona el LED rojo est encendido. El cdigo est completamente comentado y es probable que usted encontrar fcil de seguir la lgica bsica con slo leer los comentarios.

una nota acerca de arquitectura


El registro es un concepto muy importante en la programacin del microcontrolador. En el MSP430 todas las operaciones excepto para las instrucciones de flujo de programa se implementan como operaciones de registro. Para ajustar la frecuencia de un temporizador, un valor se escribe en un registro. Para recuperar el estado de un pin

; ------------------------------------------------ ---------------------------; Ejemplo Digital I / O para el LaunchPad , Leer el estado de construccin de pulsador - P1.3

; (Tenga en cuenta que P1.3 es "1" cuando el pulsador est abierto , Y "0" cuando se cierra el botn) , La luz roja si el botn no est presionado - P1.0 , La luz verde cuando se pulsa el botn - P1.6 ; Construir con Code Composer Studio ; ------------------------------------------------ ---------------------------. Cdecls C, LIST, "msp430g2231.h"; cdecls dice ensamblador para permitir , El archivo de encabezado c ; ------------------------------------------------ ---------------------------; Cdigo Principal ; ------------------------------------------------ ---------------------------. Texto; inicio del programa . _main Global; definir el punto de entrada _main mov.w # 0280h, SP; inicializar puntero de pila mov.w # WDTPW + WDTHOLD, y WDTCTL; parada temporizador de vigilancia bis.b # 01000001b, y P1DIR, hacer P1.0 y P1.6 salida , Todos los otros son entrada por

defecto Mainloop bit.b # 00001000b, y P1IN; ledo interruptor en P1.3 jc Off, si P1.3 sucursal abierta en Off label En bic.b # 00000001b, y P1OUT; claro P1.0 (rojo apagado) bis.b # 01000000b, y P1OUT; set P1.6 (verde encendido) jmp Espera, rama en una rutina de retardo Off bis.b # 00000001b, y P1OUT; set P1.0 (rojo) bic.b # 01000000b, y P1OUT; claro P1.6 (verde apagado) Espere mov.w # 1834, R15, R15 carga con el valor de retardo L1 dec.w R15, R15 decremento jnz L1, si R15 es distinto de cero salto a L1 jmp mainloop, saltar a la etiqueta mainloop ; ------------------------------------------------ ---------------------------; Vectores de interrupcin ; ------------------------------------------------ ---------------------------. Secta. "Reset", MSP430 REINICIAR Vector . Corto _main . Finales

Usted puede (o no) que desee cargar y montar el cdigo antes de estudiarla. Los siguientes pasos para la creacin de un

proyecto conjunto con CCS han sido muy abreviada de la gua del usuario del CCS.

programa . _main Global; definir el punto de entrada _main mov.w # 0280h, SP; inicializar puntero de pila mov.w # WDTPW + WDTHOLD, y WDTCTL; parada temporizador de vigilancia

Desde dentro de CCS seleccione Archivo -> Nuevo -> Proyecto CCS Introduzca el nombre para el proyecto, haga clic en siguiente y set Tipo de Proyecto para MSP430 Haga clic en Siguiente dos veces para ir a la pgina de configuracin del proyecto de CCS. Seleccione la variante de dispositivo apropiado, marque "Configurar como un nico proyecto conjunto" y haga clic en Finalizar Archivo> Fuente - Seleccione Archivo -> Nuevo Introduzca el nombre de archivo con el sufijo. Asm. Tipo de texto o programa de pegar en el archivo. Cuando el cdigo se haya completado Proyecto selecto -> Build proyecto activo Seleccione destino -> Debug proyecto activo Seleccione destino -> Ejecutar para iniciar la aplicacin.

Las primeras lneas de nuestro cdigo repiten arriba son lo que podramos llamar las tareas de limpieza. Son configuraciones bsicas necesarias que van a aparecer en una forma u otra en la mayora de sus programas. Inevitablemente estas tareas de configuracin se derraman en algunos conceptos como el "punto de entrada" y el "puntero de pila" que se alejan ms all de las nociones introductorias destinadas al tutorial. Como se examinan estos pasos se describen estas funciones, pero la mayora de la atencin se centrar en el lenguaje ensamblador y la sintaxis. Cuando se empez a desarrollar sus propios programas, puede en un principio simplemente copiar estas declaraciones como una plantilla.

primera algunos limpieza


. Cdecls C, LIST, "msp430g2231.h"; cdecls dice ensamblador para permitir , El archivo de encabezado c ; ------------------------------------------------ ---------------------------; Cdigo Principal ; ------------------------------------------------ ---------------------------. Texto; inicio del

Intercalados con los comentarios, los tres primeros estados son directivas de ensamblador. La directiva. Cdecls dice al ensamblador para permitir el uso del archivo de cabecera del programa C. Cuando instal CCS lleg con archivos de cabecera para todos los MSP430 variantes. Estos archivos proporcionan gran cantidad de informacin til sobre el dispositivo especfico que se est programando, incluyendo las definiciones de los smbolos que utilizaremos para registros de referencia. El archivo de encabezado apropiado para MSP430G2231 del LaunchPad se especifica entre comillas msp430g2231.h. La directiva. Texto indica el comienzo de un bloque de cdigo. La. Directiva global se utiliza aqu para declarar la _main smbolo como disponible a travs de mdulos externos, de modo que cuando se us en la siguiente declaracin el ensamblador lo reconocer como el punto de entrada para el programa.

Las dos ltimas lneas de este cdigo de limpieza poner la primera instruccin de mquina del programa - mov. Aqu se utiliza la instruccin mov dos veces: una para establecer el valor inicial del puntero de pila y otra vez para desactivar el temporizador de vigilancia. La pila es una zona especial e importante de la memoria utilizada para preservar los valores en subrutinas, interrupciones y en la aplicacin de ciertas instrucciones de la mquina. La pila se debe establecer en el inicio de la operacin microcontrolador - tpicamente en la parte superior de la memoria. El temporizador de vigilancia se utiliza para reiniciar automticamente el procesador si se produce un problema de software. El temporizador de vigilancia est activada por defecto, por lo que si no se utiliza en su programa debe ser desactivado para evitar reinicios inesperados.

para mayor claridad.Debido a SP es uno de los 16 registros que es parte de la propia CPU, que utiliza el modo de direccionamiento de registros y se puede hacer referencia aqu sin prefijo.

La siguiente declaracin:

mov.w # WDTPW + WDTHOLD, y WDTCTL

La instruccin mov carga el valor indicado por el primer operando (el operando de la fuente) en la ubicacin indicada por el segundo operando (el operando de destino). Debido a la naturaleza robusta y flexible MSP430 de direccionamiento, el operando de la fuente puede ser un valor literal para ser cargado al destino, o podra simplemente como referirse fcilmente a un valor almacenado en un registro u otra ubicacin de memoria. En el caso de estas dos lneas, la fuente es el valor del operando. Este modo de direccionamiento se denomina el modo inmediato y se indica por la almohadilla (#) que precede al operando. La declaracin:

es ms confuso a primera vista. Lo que estamos haciendo con esta instruccin mov est cargando al control de registro de vigilancia con un valor que va a desactivar el temporizador. WDTCTL es un alias simblicos iguales a la direccin del registro de control de temporizador de vigilancia, sino que se define en el archivo de encabezado. El ampersand (&) indica que este operando utilizar el modo de direccionamiento absoluto lo que significa que el nmero representado por el alias es la direccin del registro. WDTPW y WDTHOLD son dos alias que tambin se cargan con la cabecera. WDTPW es el valor de la contrasea del temporizador de vigilancia que debe ser la primera mitad de cualquier operacin que se escribe en el registro WDTCTL. WDTHOLD es igual al bit 7 que es el bit de parada de WDTCTL. Cuando se suman y se carga a WDTCTL van a detener el temporizador watchdog.

mov.w # 0280h, SP

configuracin de las entradas y salidas


Con las tareas de mantenimiento fuera del camino, es el momento de empezar a escribir algo de cdigo. Lo primero que tenemos que hacer es configurar los pines del microcontrolador para entrada y salida (I / O). El MSP430G2231 tiene 10 pines de E / S de cada uno de los cuales se pueden configurar de forma individual. Ocho pines estn implementadas en el puerto P1, y los dos restantes son los pins en el puerto

cargas el puntero de pila con el nmero 280h, con el h lo que indica que este nmero est en formato hexadecimal. La. W sigue a la instruccin mov indica que esta es una operacin de palabra. Todas las instrucciones de un solo operando y de doble operando puede ser byte (8 bits) o una palabra (16 bits) instrucciones de uso. B. W o extensiones. Si no se utiliza la extensin de la instruccin es una instruccin de palabra, pero no hay dao en la inclusin de la. W

P2. Pins, en un puerto se numeran de 0 a 7 y referenciados por la combinacin de su puerto y los nmeros de pin de tal manera que el puerto 1 Pin 3 es P1.3.

Los puertos P1 y P2 tienen cada uno un registro - P1DIR y P2DIR respectivamente que se utiliza para controlar si un pin es una entrada o una salida. Se trata de 8 registros de bits con cada bit corresponde a un pin de E / S. Si el bit se establece a continuacin, el pasador es una salida, si el bit es claro, entonces, el pasador es una entrada. Al igual que con los nmeros de pin, nmeros de bits en un registro siempre comienzan con 0; 8 bits registros son registros de 0-7 y 16 bits son 0-15.

que el P.3 tendr que ser clara.Podramos hacer esto una vez ms el uso de mov para cargar un valor en el registro P1DIR, sin embargo hay otra instruccin, bis - el "bit" instruccin, que es til para ajustar los bits individuales y se utilizan con mayor frecuencia para la escritura a los registros PxDIR :

bis.b # 01000001b, y P1DIR, hacer P1.0 y P1.6 salida , Todos los otros son entrada por defecto

A menudo se necesita un poco speficy registro en el operando de una instruccin de mquina. Cuando se expresa como registros de valores numricos, se crea un nmero binario en el que cada bit en el registro corresponde a un dgito en el nmero con el bit ms bajo (0) ms a la derecha: el bit 0 se expresa como binario 00000001 mientras que el bit 7 se expresa como binario 10000000. Tenga en cuenta aqu que, si bien el nmero binario representa una posicin de bit, el valor real del nmero binario no es igual al nmero decimal de la broca. Binario 10000000 es igual a decimal 128 y hexadecimal 80, el ensamblador aceptar cualquiera de esos formatos para el bit 7 siempre que se expresan en la sintaxis correcta. A menudo, ver hexadecimal utilizado con este tipo de comandos, pero esto es una cuestin de eleccin y conveniencia. Expresiones binarias pueden ser tiles para la visualizacin de los bits individuales, pero son propensos a errores que pueden ser difciles de encontrar especialmente cuando se trata de 16 nmeros de bits.

bis se comporta muy diferente a mov. Cuando se utiliza bis, cualquier bit que es un "1" en el operando de origen se encuentran en el operando destino, pero los bits restantes no se vern afectadas. En este caso todo el registro P1DIR habra sido clara en el arranque, por lo que no hay necesidad de hacer algo para borrar el bit de P.3 y la configuracin de patillas se ha completado.

Revisar rpidamente algunos de la sintaxis utilizada en esta ltima afirmacin, el. B extensin a la tecla de acceso indica que esta es una operacin de byte, el prefijo # para el operando fuente indica el uso de una reaccin inmediata, el sufijo b del operando fuente indica un binario nmero y el prefijo y al operando destino indica direccionamiento absoluto.

el bucle principal
El usuario define mainloop etiqueta es una buena indicacin de que hemos llegado al corazn del programa. Como una etiqueta, MainLoop no realiza ninguna accin, pero sirve como marcador para el inicio de un bloque de cdigo que se repetir indefinidamente como el programa se ejecuta. Ms adelante en el cdigo de una instruccin se ejecuta para el flujo del programa rama de nuevo a este punto.

Para este proyecto nos ocuparemos de tres de los pines de E / S. En el LaunchPad, el LED rojo est conectado a P1.0, el LED verde est conectado a P1.6 y el botn pulsador que queremos utilizar est conectado a P1.3. Por lo tanto, en nuestro ejemplo de programa tendrn que establecer los bits 0 y 6 del registro P1DIR, mientras

leyendo el botn y la toma de decisiones


Estas dos primeras lneas del cdigo mainloop trabajarn juntos para obtener el estado del pulsador del LaunchPad y utilizar ese estado para determinar si debe o no saltar a una seccin diferente:

donde se podra esperar de un 1 a la igualdad en el estado.

si el botn est activo


Si se pulsa el botn y el bit 3 de P1IN devuelve un 0, entonces la instruccin jc no saltar a la etiqueta de descuento y la ejecucin continuar con el siguiente bloque de cdigo:

Mainloop bit.b # 00001000b, y P1IN; ledo interruptor en P1.3 jc Off, si P1.3 sucursal abierta en Off label

Aqu estamos ante un registro diferente para P1, el registro P1IN, que refleja el valor de las seales de entrada correspondientes a los pines del puerto de E / S. El bit o "test poco" instruccin lee los bits del operando de destino, como se indica en el operando fuente - aqu bit 3. Sin embargo, a diferencia de las instrucciones anteriores mov y bis, la instruccin bits no cambia el operando de destino, sino que slo afecta a un grupo de bits de estado de la CPU registrarse convenientemente llamados los bits de estado. En este caso vamos a estar preocupados por el C o el bit "carry", que se establece cuando una operacin de prueba bits devuelve un 1. El "salto si carry" jc o instruccin leer el bit de acarreo y si se establece ser trasladarse hasta la posicin indicada por su nico operando - aqu la etiqueta Off. Si el bit de acarreo es clara, la ejecucin del programa continuar con la instruccin siguiente. MSP430 lenguaje ensamblador tiene siete instrucciones de salto condicional diferentes que son tiles en la creacin de tales IF / THEN construcciones.

En bic.b # 00000001b, y P1OUT; claro P1.0 (rojo apagado) bis.b # 01000000b, y P1OUT; set P1.6 (verde encendido) jmp Espera, rama en una rutina de retardo

La etiqueta de aqu es superfluo porque nada en el cdigo se refiere a ella, pero hace que dos instrucciones escribirn en el registro P1OUT, que como se puede intuir por ahora es el registro para controlar el estado de pines P1 que se han fijado como salidas. El bic o instruccin "poco clara" es lo opuesto funcional de bis - cualquier bit que es un "1" en el operando fuente se borra en el operando destino, pero los bits restantes no se ver afectada. En conjunto, estas lneas poco claras 0 de P1 y el bit 6, que se asegurar de que la luz roja est apagada y la luz verde est encendida. La instruccin jmp o "salto" es un salto incondicional que se trasladar la ejecucin del programa a la etiqueta Espere varias declaraciones ms adelante en el cdigo, pasando por alto el bloque que se pretende ejecutar cuando el botn est en la condicin de apagado.

Como un importante lado, tenga en cuenta que los botones LaunchPad se conectan de manera que el bit P1IN se establece en "1" cuando estn abiertas y claras para un "0" cuando son empujados. Esta es una prctica comn de ingeniera, pero hace que el cdigo slo un poco contradictorio en este punto

si el botn est desactivado


Si el botn no est presionado y el bit 3 de P1IN devuelve un 1, entonces el jc ramas de ejecucin de instrucciones a la etiqueta Apagado: Off bis.b # 00000001b, y P1OUT; set P1.0 (rojo) bic.b # 01000000b, y

P1OUT; claro P1.6 (verde apagado) Este bloque de cdigo es esencialmente una imagen especular del bloque On. La instruccin bis se enciende el LED rojo y la instruccin bic se apaga el LED verde.

the loop delay

Sin importar si el encendido o apagado de los bloques de cdigo se ejecutan, ambos caminos llevan al siguiente bloque de cdigo que comienza con el usuario define la etiqueta Espera: Espere mov.w # 1834, R15, R15 carga con el valor de retardo L1 dec.w R15, R15 decremento jnz L1, si R15 es distinto de cero salto a L1 jmp mainloop, saltar a la etiqueta mainloop

You might also like