LaunchPad Texas Instruments

Projekt 5 - Knight rider

04.03.2011 08:06

Projek demonstruje na osmi LED světlo, které běhá na jednu a na druhou stranu. Zapojení je stejné jako u předchozího projektu, liší se ale kódem. V projektu 4 jsme používali pouze XOR, nyní již použijeme cyklus FOR a postupně budeme posunovat bit po portu P1.

Zde je odkaz na soubor se zdrojovým kódem

#include "delay.h"
#include "msp430g2231.h"

#define LED1 BIT0
#define LED2 BIT1
#define LED3 BIT2
#define LED4 BIT3
#define LED5 BIT4
#define LED6 BIT5
#define LED7 BIT6
#define LED8 BIT7
#define DELAY 22000

void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;
    P1DIR |= (LED1 + LED2 + LED3 + LED4 + LED5 + LED6 + LED7 + LED8);
    P1OUT &= ~(LED1 + LED2 + LED3 + LED4 + LED5 + LED6 + LED7 + LED8);

    for (;;)
    {
        unsigned int diode;

        for (diode = 1; diode <= 64; diode = diode + diode)
        {
/*
V cyklu FOR přiřadíme proměnné 'diode' hodnotu 1 a budeme zkoumat, zda je proměnná menší nebo rovna 64, pokud ano, tak provedeme následující příkazy a proměnnou zdvojnásobíme, provádíme tedy proces podobný "shift to left", pokud je proměnná vetší, tak cyklus FOR skončí.
*/

            P1OUT ^= diode;
            delaytime(DELAY);
            P1OUT ^= diode;
        }

        for (diode = 128; diode >= 2; diode = diode / 2)
        {
/*
V cyklu FOR přiřadíme proměnné 'diode' hodnotu 128 a budeme zkoumat, zda je proměnná vetší nebo rovna 2. Pokud ano, tak provedeme následující příkazy a proměnnou podělíme dvojkou, provádíme tedy proces podobný "shift to right", pokud je proměnná menší, tak cyklus FOR skončí.
*/

            P1OUT ^= diode;
            delaytime(DELAY);
            P1OUT ^= diode;
        }

    }
}

Zpět

Vyhledávání

© 2011 Všechna práva vyhrazena.