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!!!