(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); |