MSP430 - Acionar um LED através do Botão


  Olá galera vamos dar continuidade ao assunto microcontroladores MSP430. Hoje vou esta passando um código refente ao controle de um sinal de saída em relação ao sinal de entrada, vamos utilizar o LED Vermelho, este ligado no pino P1.0.

Detalhando o código de execução

/*
 * led_button_main.c
 *
 *  Created on: 06/11/2014
 *      Author: Bruno
 */

// ------- BIBLIOTECAS --------------------//
#include "msp430g2553.h"


//------- DEFINIÇÕES ---------------------//
#define         LED_AC      P1OUT |=  BIT0 // LED ACENDE
#define  LED_AP       P1OUT &=~ BIT0 // LED APAGA

int main(void)
{
 // CONFIGURAÇÃO INICIAL
 WDTCTL = WDTHOLD + WDTPW; //desliga cão de guarda
 P1DIR = 0x41; // Define pinos 1.0 e 1.6 como saída
 P1REN = 0x08; // Habilita pullup/pulldown no pino de entrada
 P1OUT = 0x08; // Define pullup

 while(1)
 {

  if ( (P1IN & 0x08)==0) //VERIFICA SE O BOTÃO ESTA PRESSIONADO
  {
   LED_AC; // Ativa LED vermelho (P1.0)
  }

  else
  {
   LED_AP; // Ativa LED vermelho (P1.0)
  }
 }
}
  O código descreve a ação de quando pressionamos o botão S2, neste caso enquanto o botão estiver pressionado o LED permanece aceso, no instante em que o botão já não é mais pressionado o LED se apaga. 
  Primeiramente incluímos todas as bibliotecas referente ao programa, a próxima etapa foram feitas as definições do programa, ou seja, aqui vamos definir nomes as funções assim facilitando uma correção ou alteração do programa de forma mais rápida e eficiente. 
  Na configuração inicial esta indicando quais pinos serão entrada, quais pinos serão saídas, se vamos utilizar resistor de pullup ou pulldown. No laço principal temos um if/else que verifica a condição do botão, se o botão estiver pressionado a condição é verdadeira aí executamos de forma indireta (LED_AC) a sintaxe para acender o LED, caso contrario o LED ficará apagado.

Como desafio proponho pra você acender o LED verde e apagar o vermelho quando botão pressionado e quando botão solto apagar o LED verde e acende o vermelho.

Bom Trabalho!!!