You are on page 1of 3

Para configurar los pines del microcontrolador MSP430G2 de entrada/salida, se debe tener encuentra que el estado

lógico “1” indica pin que se configura el/los pines de salida y el estado lógico “0”, indica de se pueden configurar el/los
pines de entrada.

Ejemplo 1.

El siguiente programa lee el estado de un pulsador conectado al pin P1.4 y coloca el estado de ese pin, por medio de un
led conectado en el pin P1.0 (ver Figura No 1).

1 #include <msp430g2231.h>
2
3 void main(void)
4 {
5 WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer Deshabilitado
6 P1DIR |= 0x01; // P1.0 Salida
7
8 while (1)
9 {
10 if ((0x08 & P1IN)) // lee el pin P1.4
11 P1OUT |= 0x01; // Si P1.4 es igual a ‘1’ el pin P1.0 es igual a ‘1’
12 else
13 P1OUT &= ~0x01; // Si P1.4 es igual a ‘0’ el pin P1.0 es igual a ‘0’
14 }
15 }
16
17
18

Programa No. 1

Figura No 1
La Tabla 1, muestra el estado de P1DIR por defecto, observando que el puerto uno (P1), inicializa por defecto con los
pines de entrada.

P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0


P1DIR 0 0 0 0 0 0 0 0
Tabla 1

A continuación se observa que tarea hace la instrucción ubicada en la línea 6:

6 P1DIR |= 0x01;

La anterior instrucción es equivalente a:

6 P1DIR = P1DIR | 0x01;

Lo que indica que toma el valor por defecto que tiene el registro P1DIR y realiza una OR (|) con el valor en hexadecimal
(0x01), el resultado queda almacenado en el registro P1DIR. Este resultado (Ver Tabla 2) indica la configuración de
Entrada/Salida que se ha realizado en el microcontrolador.

P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0


P1DIR 0 0 0 0 0 0 0 0
0x01 0 0 0 0 0 0 0 1
P1DIR |= 0x01 0 0 0 0 0 0 0 1
Entrada Entrada Entrada Entrada Entrada Entrada Entrada Salida
Tabla 2

Análogamente, el registro P1IN almacena el valor de entrada de los estados lógicos del microcontrolador, está
configurado por defecto en 1, como lo indica la tabla 3.

P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0


P1IN 1 1 1 1 1 1 1 1
Tabla 3

A continuación se observa lo que realiza la instrucción ubicada en la línea 10:

10 if ((0x08 & P1IN))

La anterior instrucción lee los estados que encuentran en “1”, ver la tabla 4.

P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0


P1IN 1 1 1 1 1 1 1 1
0x08 0 0 0 0 1 0 0 0
P1DIR |= 0x01 0 0 0 0 1 0 0 1
Tabla 4

De igual manera, el registro P1OUT se inicializa por defecto en “0” (Ver Tabla 5)

P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0


P1OUT 0 0 0 0 0 0 0 0
Tabla 5
A continuación se observa lo que realiza la instrucción ubicada en la línea 11:

11 P1OUT |= 0x01;

El desarrollo de esta instrucción se observa en la tabla 6, observando que el pin (P1.0), toma el valor de 1 y el led
representado en la figura 1, toma el valor de ”1”.

P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0


P1OUT 0 0 0 0 0 0 0 0
0x01 0 0 0 0 0 0 0 1
P1OUT |= 0x01 0 0 0 0 0 0 0 1
Tabla 6

El valor actual del registro P1OUT es (0x01), con base en este valor, se ejecuta la instrucción de la línea 13:

13 P1OUT &= ~0x01;

Recordando que la anterior instrucción es equivalente a:

13 P1OUT = P1OUT & ~0x01;

En la tabla 7 se observa el nuevo estado del que toma el registro P1OUT, apagando y modificando de esta forma el led
conectado al pin P1.0.

P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0


P1OUT 0 0 0 0 0 0 0 1
~0x01 1 1 1 1 1 1 1 0
P1OUT &= ~0x01 0 0 0 0 0 0 0 0
Tabla 7

Nota: En la Tabla 6 y Tabla 7 se observa que solo se modificó el pin (P1.0), quedando intacto el resto de los pines que se
hallan configurado de salida o de entrada.

La técnica que utiliza Texas Instrumen para realizar operaciones de Entrada/Salida en la serie de MSP430, se le conoce
como enmascaramiento, a continuación se explicara cómo utilizar esta técnica. Se aclara que esta técnica se utiliza
solamente para modificar el estado de un solo pin y solo es aplicable para referirnos a un solo pin del microcontrolador,
ya sea de entrada o salida.

You might also like