Witam
Właśnie rozpoczynam moją przygodę z programowaniem mikrokontrolerów, życie sprawiło, że jest to zestaw EM430F6137RF900 od Texas Instruments - to mikrokontroler MSP430 z łącznością bezprzewodową. Ale to nieistotne.
W Elektronice Praktycznej jest cykl artykułów poświęconych tym mikrokontrolerom, w artykule trzecim http://ep.com.pl/?sect=msp430_niepobieraja&pg=cz3 zamieszczona jest ramka o operacjach na bitach:
Niestety, nie rozumiem praw rządzących zapisem P1OUT = 0x12
Czym jest liczba przed x, a czym za x?
Skoro mamy ustawiać bit pierwszy i piąty, to skąd się wzięło 12?
Z góry dziękuje za pomoc,
Świstak
Właśnie rozpoczynam moją przygodę z programowaniem mikrokontrolerów, życie sprawiło, że jest to zestaw EM430F6137RF900 od Texas Instruments - to mikrokontroler MSP430 z łącznością bezprzewodową. Ale to nieistotne.
W Elektronice Praktycznej jest cykl artykułów poświęconych tym mikrokontrolerom, w artykule trzecim http://ep.com.pl/?sect=msp430_niepobieraja&pg=cz3 zamieszczona jest ramka o operacjach na bitach:
Quote:W mikrokontrolerach MSP430 trzeba nauczyć się operowania bitami. Ta umiejętność jest potrzebna we wszystkich współczesnych mikrokontrolerach, ponieważ nie mają one operacji manipulowania bitami, jakia istnieje w mikrokontrolerach typu '51.
Spróbujmy pokazać jak wykonuje się operacje ustawiania i kasowania bitów w mikrokontrolerach MSP. Załóżmy że chcemy manipulowć bitami 1 i 5 portu P1OUT. Jeśli wiemy dokładnie jakie bity mamy ustawić a jakie wyzerować to możemy zapisać to jako:
P1OUT = 0x12
Zapis ten spowoduje ustawienie bitu1 i bitu 5 a pozotałe bity zostaną wyzerowane. Jeśli zamierzamy ustawić tylko bity 1 i 5 a pozostałe pozostawić bez zmiany to można to zrealizować w sposób następujący
P1OUT |= 0x12.
W przypadku gdy chcemy wyzerować bity 1 i 5 a pozostałe pozostawić bez zmian to można to zapisać w postaci
P1OUT &= ~0x12
Jeśli dodamy definicje bitów w postaci
#define BIT0 (0x0001)
#define BIT1 (0x0002)
#define BIT2 (0x0004) ...
to zapisy przedstawione powyżej staną się bardziej czytelne. Definicje bitów znajdują się w zbiorze msp430x14x.h
Zapis ustawienia bitów może teraz wyglądać
P1OUT |= BIT1 + BIT5
lub
P1OUT |= BIT1 | BIT5
Podobnie aby wyzerować bity trzeba napisać
P1OUT &= ~(BIT1 + BIT5)
lub
P1OUT |= ~(BIT1 | BIT5)
Powyżej przedstawione zapisy wymagają uważnego przeanalizowania bo będą często używane w programach dla MSP430. Aby wyczerpać zagadnienie ustawiania i zerowania bitów warto wspomnieć, że gdyby wprowadzić nieco inna definicje bitów
#define bit0 0
#define bit1 1
#define bit2 2...
to operacje ustawiania bitów można zapisać jako
P1OUT |= ((1<<bit1) + (1<<bit5))
Podobnie operacja zerowania przybierze wtedy postać
P1OUT &= ~ ((1<<bit1) + (1<<bit5))
Niestety, nie rozumiem praw rządzących zapisem P1OUT = 0x12
Czym jest liczba przed x, a czym za x?
Skoro mamy ustawiać bit pierwszy i piąty, to skąd się wzięło 12?
Z góry dziękuje za pomoc,
Świstak