Robotyzacja.com

..robotyka wokół naszych myśli

  • Zwiększ rozmiar czcionki
  • Domyślny  rozmiar czcionki
  • Zmniejsz rozmiar czcionki

Sbit w Keil uVision

Email Drukuj
Ocena użytkowników: / 2
SłabyŚwietny 

Deklarator sbit definiuje bit w rejestrze specjalnego przeznaczenia (SFR). Może być używany w jednym z następujących sposobów:


sbit nazwa = sfr-nazwa ^ bit-pozycja;
sbit nazwa = sfr-adres ^ bit-pozycja;
sbit nazwa = sbit-adres;


gdzie:
nazwa        Nazwa bitu SFR.
sfr-nazwa   Nazwa wcześniej zdefiniowanego rejestru SFR.
bit-pozycja Pozycja bitu w rejestrze SFR.
sfr-adres    Adres rejestru SFR.
sbit-adres  Adres bitu SFR.

W typowych zastosowaniach 8051 często niezbędny jest dostęp do pojedynczych bitów w rejestrze SFR.  Sbit zapewnia dostęp do bitowo-adresowalnych rejestrów SFR i innych bitowo  adresowalnych obiektów.
Np.
sbit EA = 0xAF;
Deklaracja ta definiuje EA jako  bit SFR o adresie 0xAF. W mikrokontrolerze 8051 jest to bit  enable all w układzie przerwań procesora.
Uwaga
Mniej znaczący bajt umieszczony jest jako pierwszy (najpierw LSB). Jest to przechowywanie danych typu sfr16, co jest przeciwieństwem dla typu danych int i long.
Każda nazwa może być użyta jako deklaracja sbit. Wyrażenie po prawej stronie znaku równości określa adres bitu dla tej nazwy. Są trzy warianty dla określenia adresu:


Wariant 1
sbit nazwa = sfr-nazwa ^ bit-pozycja;
Poprzednio zadeklarowany rejestr SFR (sfr-nazwa) jest adresem bazowym sbit. Musi być on  podzielny przez 8. Bit-pozycja (liczba od 0 do 7) znajduje się za symbolem „^” i określa pozycje bitu.

Np.
sfr  PSW = 0xD0;
sfr  IE = 0xA8;

sbit OV = PSW^2;
sbit CY = PSW^7;
sbit EA = IE^7;


Wariant 2
sbit nazwa = sfr-adres ^ bit-pozycja;
Wyrażenie (sfr-adres) określa adres bazowy sbit. Musi być on  podzielny przez 8. Bit-pozycja (liczba od 0 do 7) znajduje się za symbolem „^” i określa pozycje bitu.
Np.
sbit OV = 0xD0^2;
sbit CY = 0xD0^7;
sbit EA = 0xA8^7;


Wariant 3
sbit nazwa = sbit-adres;
Wyrażenie (sfr-adres) określa adres sbit. Musi być wartością pomiędzy 0x80-0xFF.
Np.
sbit OV = 0xD2;
sbit CY = 0xD7;
sbit EA = 0xAF;


Uwagi
Nie wszystkie rejestry SFR są bitowo-adresowalne. Tylko te rejestry, których adres jest podzielny przez 8 są bitowo-adresowalne. Cztery najmłodsze bity czyli młodsza czówrka adresu SFR musi być wartością 0 albo 8.np. rejestry SFR 0xA8 i 0xD0 są bitowo-adresowalne, podczas gdy rejestry 0xC7 i 0xEB nie mogą być. Aby obliczyć adres bitu rejestru SFR należy dodać pozycję bitu do adresu bajtu SFR. Tak więc, aby mieć dostęp do 6 bitu w SFR o adresie 0xC8, adres bitu SFR będzie wynosił 0xCE ((0xC8 + 6).
Deklaracja danych typu sbit może być użyta do dostępu pojedynczych bitów zmiennych zadeklarowanych przez pamięć typu bdata.
Zmienne sbit nie mogą być zadeklarowane wewnątrz funkcji. Muszą być zadeklarowane poza ciałem funkcji.

 

Źródło: Help programu Keil uVision

 
Naszą witrynę przegląda teraz 37 gości 

Szukaj artykułu

Partnerzy