LinkedIn YouTube Facebook
Szukaj

Wstecz
Artykuły

(5) Mikrokontrolery MSP430: porty I/O, obsługa wyjść

W pętli głównej programu najpierw włączana, a po sekundzie wyłączana jest dioda LED1:

PJOUT |=  BIT0;                                                 
    __delay_cycles(TAKTY_ZEGARA_1_SEK );                              
      PJOUT &=~ BIT0;

Następnie w analogiczny sposób obsługiwana jest dioda LED8:

P3OUT |=  BIT7;                                                 
    __delay_cycles(TAKTY_ZEGARA_1_SEK );                              
      P3OUT &=~ BIT7;  

W kolejnej instrukcji programu włączane, a po sekundzie wyłączane są diody LED4, LED3, LED2, LED1:

PJOUT |=  (BIT3 + BIT2 + BIT1 + BIT0);                          
    __delay_cycles(TAKTY_ZEGARA_1_SEK );                              
      PJOUT &=~ (BIT3 + BIT2 + BIT1 + BIT0);

Następnie włączane, a po sekundzie włączane są diody LED8, LED7, LED6, LED5:

P3OUT |=  (BIT7 + BIT6 + BIT5 + BIT4);   
    __delay_cycles(TAKTY_ZEGARA_1_SEK );                    
      P3OUT &=~ (BIT7 + BIT6 + BIT5 + BIT4);  

Wprowadzane jest 3 sekundy opóźnienia (pauza na zakończenie cyklu sterowania):

__delay_cycles(TAKTY_ZEGARA_1_SEK * 3);

Następnie rozpoczyna się kolejny cykl sterowania diodami.

Parametry pracy mikrokontrolera MSP430FR5739 konfigurujemy zmieniając wartość bitów w jego rejestrach. Ustawianie, zerowanie, odczyt, oraz zmianę stanu bitu na przeciwny przećwiczymy na przykładzie rejestru P1DIR (rejestr kierunku portu P1). Sterować będziemy bitami numer 4 i 0.

Jeśli chcemy ustawić bity 4 i 0, oraz wyzerować pozostałe bity rejestru, to korzystamy z operatora przypisania ”=” (konfiguracja wszystkich bitów rejestru). Instrukcja ustawiania bitów rejestru wygląda następująco:

P1DIR = 0x11;

Jeśli chcemy ustawić bity 4 i 0, ale nie chcemy zmieniać wartości pozostałych bitów, to korzystamy z operatora bitowego „|” (or – suma). Instrukcja ustawienia bitów wygląda następująco:

P1DIR | =       0x11;
 

Jeśli chcemy wyzerować bity 4 i 0, a pozostałe bity pozostawić bez zmian, korzystamy z operatorów bitowych „&” ( and – mnożenie logiczne) oraz „~” ( not – negacja). W omawianym przypadku instrukcja zerowania bitów wygląda następująco:

P1DIR & = ~  0x11;

Jeśli chcemy wartość bitów 4 i 0 zmienić na przeciwną, a pozostałe bity pozostawić bez zmian, to korzystamy z operatora bitowego „^” ( xor – suma z uzupełnieniem do dwóch). Instrukcja zmiany bitów wygląda następująco:

P1DIR   ^=      0x11;

Jeśli chcemy sprawdzić wartość bitu, to korzystamy z funkcji „if” ( if – jeśli), operatora bitowego „&” ( and – mnożenie) i opcjonalnie operatora logicznego „!” (zaprzeczenie).

Instrukcja sprawdzenia, czy bit 0 na wartość „1”:

if(P1DIR & 0x01)       (gdy prawda to, bit ma wartość „1”)

Instrukcja sprawdzenia, czy bit 0 na wartość „0”:

if( ! (P1DIR & 0x01)) (gdy prawda to, bit ma wartość „0”)

W środowisku IAR, umieszczono definicje bitów mikrokontrolera (BIT7, BIT6…BIT0). Jeśli skorzystamy z definicji bitów to instrukcje ustawiania, zerowania, zmiany stanu, odczytu wartości bitów staną się bardziej czytelne. W omawianym przypadku instrukcje ustawienia, oraz zerowania bitów 4 i 0 z użyciem definicji bitów wyglądają następująco:

P1DIR |=    (BIT4 + BIT0);
P1DIR &=~   (BIT4 + BIT0);