Projekt 2 - Reakce na tlačítko
28.02.2011 00:08Program přepíná blikání diod na desce LaunchPadu v závislosti na stisku tlačítka S2. Pokud je stisknuté, tak bliká dioda LED2, pokud není stisknuté, tak bliká dioda LED1. Pokud myste toto využívali i mimo desku, tak nezapomeňte mít vždy vstupní pin přes rezistor připojen na pól baterie a na druhý pól pin připojovat bez rezistoru. Na nepřipojeném vstupu totiž může vznikat nahodilá hodnota.
Zde je odkaz na soubor se zdrojovým kódem
#include "msp430g2231.h"
#define LED1 BIT0
#define LED2 BIT6
#define S2 BIT3 // Definuje pro S2 hodnotu BIT3 (pro použití P1.3 )
#define DEL1 5000
void delaytime(unsigned int timex)
{
while (timex != 0)
{
timex--;
}
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= (LED1 + LED2);
P1OUT &= ~(LED1 + LED2);
for (;;)
{
while ((P1IN & S2) == S2)
/*
Tato podmínka cyklu WHILE zjišťuje, zda není zmáčknutý spínač S2, a pokud ne, tak se provádí tento cyklus.
Podmínka tedy udává: pokud je na 'Portu 1 vstup bit3 roven log.1' tak proveď
*/
{
P1OUT ˆ= LED1;
delaytime(DEL1);
}
/*
Po konci cyklu diodu vypneme, aby nám náhodou stále nesvítila, což jsme si řekli v projektu 1.
*/
P1OUT &= ~(LED1);
while ((P1IN & S2) != S2)
{
/*
Tato podmínka cyklu WHILE zjišťuje, zda je zmáčknutý spínač S2, a pokud ano, tak se provádí tento cyklus.
Podmínka tedy udává: pokud není na 'Portu 1 vstup bit3 roven log.1' tak proveď
*/
P1OUT ˆ= LED2;
delaytime(DEL1);
}
// Po konci cyklu opět diodu vypneme
P1OUT &= ~(LED2);
}
}
———
Zpět