Anda di halaman 1dari 9

Instituto Politcnico Nacional.

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

mov.b R4,&P1OUT

cmp #0x80,R4 ;fila1
jeq fila1

cmp #0x20,R4 ;fila2
jeq fila2

cmp #0x10,R4 ;fila3
jeq fila3

3



cmp #0x08,R4 ;fila4
jeq fila4

fila0: RRA R4
jmp derecha

fila1: RRA R4
mov.b &P2IN, R5

cmp #8,R5
jeq digito1

cmp #4,R5
jeq digito2

cmp #2,R5
jeq digito3

cmp #1,R5
jeq digitoA

jmp derecha

fila2: RRA R4
mov.b &P2IN, R5

cmp #8,R5
jeq digito4

cmp #4,R5
jeq digito5

cmp #2,R5
jeq digito6

cmp #1,R5
jeq digitoB

jmp derecha

fila3: RRA R4
mov.b &P2IN, R5

cmp #8,R5
jeq digito7

cmp #4,R5
jeq digito8

cmp #2,R5
jeq digito9

cmp #1,R5
jeq digitoC

jmp derecha
4




fila4: RRA R4
mov.b &P2IN, R5

cmp #8,R5
jeq digitoAS

cmp #4,R5
jeq digito0

cmp #2,R5
jeq digitoGT

cmp #1,R5
jeq digitoD

jmp cargar


digito0: mov.b &P2IN, R5
cmp #0,R5
jeq w0
jne digito0
w0: mov.b #0x01,P1OUT
mov.b #48,&UCA0TXBUF
jeq cargar


digito1: mov.b &P2IN, R5
cmp #0,R5
jeq w1
jne digito1
w1: mov.b #0x01,P1OUT
mov.b #49,&UCA0TXBUF
jmp cargar

digito2: mov.b &P2IN, R5
cmp #0,R5
jeq w2
jne digito2
w2: mov.b #0x01,P1OUT
mov.b #50,&UCA0TXBUF
jmp cargar

digito3: mov.b &P2IN, R5
cmp #0,R5
jeq w3
jne digito3
w3: mov.b #0x01,P1OUT
mov.b #51,&UCA0TXBUF
jmp cargar

digito4: mov.b &P2IN, R5
cmp #0,R5
jeq w4
jne digito4
5



w4: mov.b #0x01,P1OUT
mov.b #52,&UCA0TXBUF
mov.w #0xFFFF,R15
jmp cargar

digito5: mov.b &P2IN, R5
cmp #0,R5
jeq w5
jne digito5
w5: mov.b #0x01,P1OUT
mov.b #53,&UCA0TXBUF
jmp cargar

digito6: mov.b &P2IN, R5
cmp #0,R5
jeq w6
jne digito6
w6: mov.b #0x01,P1OUT
mov.b #54,&UCA0TXBUF
jmp cargar

digito7: mov.b &P2IN, R5
cmp #0,R5
jeq w7
jne digito7
w7: mov.b #0x01,P1OUT
mov.b #55,&UCA0TXBUF
jmp cargar

digito8: mov.b &P2IN, R5
cmp #0,R5
jeq w8
jne digito8
w8: mov.b #0x01,P1OUT
mov.b #56,&UCA0TXBUF
jmp cargar

digito9: mov.b &P2IN, R5
cmp #0,R5
jeq w9
jne digito9
w9: mov.b #0x01,P1OUT
mov.b #57,&UCA0TXBUF
jmp cargar

digitoA: mov.b &P2IN, R5
cmp #0,R5
jeq wA
jne digitoA
wA: mov.b #0x01,P1OUT
mov.b #65,&UCA0TXBUF
jmp cargar

digitoB: mov.b &P2IN, R5
cmp #0,R5
jeq wB
6



jne digitoB
wB: mov.b #0x01,P1OUT
mov.b #66,&UCA0TXBUF
jmp cargar

digitoC: mov.b &P2IN, R5
cmp #0,R5
jeq wC
jne digitoC
wC: mov.b #0x01,P1OUT
mov.b #67,&UCA0TXBUF
jmp cargar

digitoD: mov.b &P2IN, R5
cmp #0,R5
jeq wD
jne digitoD
wD: mov.b #0x01,P1OUT
mov.b #68,&UCA0TXBUF
jmp cargar

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

Anda mungkin juga menyukai