RTV forum PL | NewsGroups PL

Niejasności dotyczące pamięci RAM w mikrokontrolerze 8051 wskazówki przed kolokwium!

8051 i jego RAM

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Niejasności dotyczące pamięci RAM w mikrokontrolerze 8051 wskazówki przed kolokwium!

scx
Guest

Sat Jan 20, 2007 1:40 am   



Analizuję sobie budowę '51 (kolokwium w poniedziałek, ale się nie boję Razz),
i trafiłem na sprzeczność.
Np wikipedia (http://pl.wikipedia.org/wiki/Intel_8051) pisze:
"128 B pamięci wewnętrznej RAM"
Każda rozpiska rejestrów specjalnych kończy się na 0xF0, (0x00-0x7F to
banki rejestrów itd)
0x00-0xF0 to jakby nie patrzeć 128B, czyli tyle ile Wikipedia pisze,
wszystko się jak na razie zgadza.
Jednakże kawałek dalej:
"Obszar pamięci o adresach od 0x80 do 0xFF nazywany jest obszarem rejestrów
specjalnych" ^^^^
czemu 0xFF? a nie 0xF0?
Sprawa jest o tyle dziwna, że w kilku miejscach widziałem też 0xFF - czyżby
ktoś na Wiki się walnął, a potem poszło w świat poprzez ctrl-c ctrl-v?

Andy
Guest

Sat Jan 20, 2007 2:40 am   



Użytkownik "scx" <es-ce-iks-7@wu-pe.pe-el> napisał w wiadomości
news:19ktse0yz33rw.1ck8skwk0zdst$.dlg@40tude.net...
Quote:
Analizuję sobie budowę '51 (kolokwium w poniedziałek, ale się nie boję Razz),
i trafiłem na sprzeczność.
Np wikipedia (http://pl.wikipedia.org/wiki/Intel_8051) pisze:
"128 B pamięci wewnętrznej RAM"
Każda rozpiska rejestrów specjalnych kończy się na 0xF0, (0x00-0x7F to
banki rejestrów itd)
0x00-0xF0 to jakby nie patrzeć 128B, czyli tyle ile Wikipedia pisze,
wszystko się jak na razie zgadza.
Jednakże kawałek dalej:
"Obszar pamięci o adresach od 0x80 do 0xFF nazywany jest obszarem rejestrów
specjalnych" ^^^^
czemu 0xFF? a nie 0xF0?
Sprawa jest o tyle dziwna, że w kilku miejscach widziałem też 0xFF - czyżby
ktoś na Wiki się walnął, a potem poszło w świat poprzez ctrl-c ctrl-v?

Troche tu namieszane.

W duzym uproszczeniu obszar 0x00-0x7F czyli 128 bajtow
to RAM w tym 4 banki rejestrow po 8 rej. kazdy.

Obszar 0x80-0xFF czyli 128 bajtow to w uogolnieniu obszar rejstrow specjalnych (SFR).
ale nie wszystkie sa wykorzystane w klasycznym 8051.
Sa tam po prostu dziury i od 0xF1 - 0xFF jest dziura/

W tych dziurach dodawane sa inne rejestry specjalne
w roznych, innych, rozszerzonych wersjach 8051.

--
Andrzej

Pszemol
Guest

Sat Jan 20, 2007 6:50 am   



"scx" <es-ce-iks-7@wu-pe.pe-el> wrote in message news:19ktse0yz33rw.1ck8skwk0zdst$.dlg@40tude.net...
Quote:
Analizuję sobie budowę '51 (kolokwium w poniedziałek, ale się nie boję Razz),
i trafiłem na sprzeczność.
Np wikipedia (http://pl.wikipedia.org/wiki/Intel_8051) pisze:
"128 B pamięci wewnętrznej RAM"
Każda rozpiska rejestrów specjalnych kończy się na 0xF0, (0x00-0x7F to
banki rejestrów itd)
0x00-0xF0 to jakby nie patrzeć 128B, czyli tyle ile Wikipedia pisze,
wszystko się jak na razie zgadza.

od 0x00 do 0xf0 to 240 bajtów Smile Oj, bałbym się o to kolokwium ;-)

Quote:
Jednakże kawałek dalej:
"Obszar pamięci o adresach od 0x80 do 0xFF nazywany jest obszarem rejestrów
specjalnych" ^^^^
czemu 0xFF? a nie 0xF0?
Sprawa jest o tyle dziwna, że w kilku miejscach widziałem też 0xFF - czyżby
ktoś na Wiki się walnął, a potem poszło w świat poprzez ctrl-c ctrl-v?

Zawsze w takich momentach "wątpliwości" możesz je rozwiać sięgając
do danych technicznych u źródła... W tym przypadku będzie to
producent procesora: Intel. A więc wybierasz się na www.intel.com
wstukujesz 8051 w ich wyszukiwarkę i znajdujesz kompletny podręcznik:
http://www.intel.com/design/mcs51/manuals/27238302.pdf Problem rozwiązany! :-)

A tak w ogóle to zauważ, że tabelki rejestrów często drukuje się tak,
że kilka tych rejestrów jest w jednej linii, a więc tabelka jest
dwuwymiarowa: w jednym rzędzie masz np. 8 lub 16 rejestrów...
Więc rzędy są numerowane np. 0xf0, 0xf8 i w kolumnach szukasz
adresów 0xf0, 0xf1, 0xf2 itp... wiersz kończy się np. na 0xff.

scx
Guest

Sat Jan 20, 2007 11:50 am   



Dnia Fri, 19 Jan 2007 23:50:54 -0600, Pszemol napisał(a):

Quote:
od 0x00 do 0xf0 to 240 bajtów Smile Oj, bałbym się o to kolokwium Wink

<zawstydzony> Jedyne, co mam na swoje usprawiedliwie, to godzina wysłania
posta :)

Quote:
http://www.intel.com/design/mcs51/manuals/27238302.pdf Problem rozwiązany! Smile

Powtarzam poprzednią wypowiedź ;)

PS: Andy wszystko ładnie opisał. Teraz zastanawiam się, dlaczego pisze się
o 128B pamięci RAM, skoro pamięci wewnętrznej, licząc z SFR mamy 256B?
Pamięć RAM != wewnętrzna pamięć ulotna?

Andy
Guest

Sat Jan 20, 2007 12:22 pm   



Quote:
Dnia Fri, 19 Jan 2007 23:50:54 -0600, Pszemol napisał(a):
...
Powtarzam poprzednią wypowiedź ;)

PS: Andy wszystko ładnie opisał. Teraz zastanawiam się, dlaczego pisze się
o 128B pamięci RAM, skoro pamięci wewnętrznej, licząc z SFR mamy 256B?
Pamięć RAM != wewnętrzna pamięć ulotna?


No ale RAM'u czyli komorek, w ktorych mozesz
przechowywac zmienne ma 128 bajtow (0x00-0x7F).

0x80-0xFF to rejestry specjalne: np. Timery, maski i flagi przerwan,
rejestry UART'a, porty wejscia-wyjscia, itp.

Nie mozesz ich uzywac jak zwyklej pamieci RAM bo komorki
RAM'u musza pamietac wartosc, ktora sie do nich wpisze
a obszar rejestrow specjalnych nie spelnia takiego warunku.

Np. wpiszesz cos do komorki Timera, za chwile odczytasz i bedzie tam inna
wartosc jesli Timer jest wlaczony.

--
Andrzej

scx
Guest

Sat Jan 20, 2007 11:23 pm   



Dnia Sat, 20 Jan 2007 12:22:59 +0100, Andy napisał(a):

Quote:
0x80-0xFF to rejestry specjalne: np. Timery, maski i flagi przerwan,
rejestry UART'a, porty wejscia-wyjscia, itp.
Jeszcze jedno pytanko:

8051, powyżej 0xF0, nie ma już fizycznej pamięci? (no chyba że zewnętrzną
pow 0x0100).
Znaczy się projektanci zostawili kawał przestrzeni adresowej "for future
use"?

Quote:
Np. wpiszesz cos do komorki Timera, za chwile odczytasz i bedzie tam inna
wartosc jesli Timer jest wlaczony.

Właśnie - o ile jest włączony :> Tak samo bufor rs-a...
Więc na upartego możnaby używać niektórych tych rejestrów jako rejestrów
ogólnego użytku.

A fizycznie 8051 ma nie 128B, a 241 bajtów pamięci "RAM":
normalne rejestry
SFR
PC (też pamięć, a co :])


PS od 20 do 2F jest "obszar adresowania bitowego", a powyżej, do 7F, 80
bajtów "do wykorzystania". Cóż to jest to adresowanie bitowe?
Rozumiem, że 30-7F, to po prostu pamięć, na której mogę sobie działać,
podając adresy (bez)pośrednio.

A tak drążę i teoretyzuję, bo lubię mieć wszystko pod kontrolą i nie
traktować rzeczy jako "czarnych skrzynek"

Pszemol
Guest

Sun Jan 21, 2007 3:32 am   



"scx" <es-ce-iks-7@wu-pe.pe-el> wrote in message news:13vosjep1nnp6.18ydriaocvz4u$.dlg@40tude.net...
Quote:
PS od 20 do 2F jest "obszar adresowania bitowego", a powyżej, do 7F, 80
bajtów "do wykorzystania". Cóż to jest to adresowanie bitowe?

Adresowanie bitowe należy rozumieć dokładnie tak jak
adresowanie bajtowe, z tym że zamiast bajtu jako
najmniejszej adresowalnej jednostki pamięci masz bit.
Czyli możesz dostać się do konkretnego bitu z bajtu.

Załózmy że jakaś 8-bitowa zmienna określa stan LEDów.
W trybie bajtowym, aby zmienić jeden bit, musisz
- odczytać wartość bajtu
- zamaskować (ustawić/skasować) bit
- zapisać zmienioną wartość bajtu.
W trybie adresowania bitowego możesz ustawić lub
skasować jeden konkretny bit bez ingerencji w resztę
bitów tego bajtu.

Podobna sprawa jest w procesorach 16 i 32 bitowych
w dostępie do pamięci: 32-bitowa pamięć RAM ma
linie wyboru bajtu i procesor jest w stanie zmienić
tylko jeden bajt nie "ruszając" reszty 32-bitowego słowa.

scx
Guest

Sun Jan 21, 2007 12:51 pm   



Dnia Sat, 20 Jan 2007 20:32:16 -0600, Pszemol napisał(a):

Quote:
"scx" <es-ce-iks-7@wu-pe.pe-el> wrote in message news:13vosjep1nnp6.18ydriaocvz4u$.dlg@40tude.net...
PS od 20 do 2F jest "obszar adresowania bitowego", a powyżej, do 7F, 80
bajtów "do wykorzystania". Cóż to jest to adresowanie bitowe?

Adresowanie bitowe należy rozumieć dokładnie tak jak
adresowanie bajtowe, z tym że zamiast bajtu jako
najmniejszej adresowalnej jednostki pamięci masz bit.
Czyli możesz dostać się do konkretnego bitu z bajtu.

heh a w AVRkach jest sbr, sbi, cbr, i cbi i można się dostać prawie
wszędzie, gdzie się chce bez większych kombajnacji.

Adam Dybkowski
Guest

Sun Jan 21, 2007 11:11 pm   



scx napisał(a):

Quote:
Adresowanie bitowe należy rozumieć dokładnie tak jak
adresowanie bajtowe, z tym że zamiast bajtu jako
najmniejszej adresowalnej jednostki pamięci masz bit.
Czyli możesz dostać się do konkretnego bitu z bajtu.

heh a w AVRkach jest sbr, sbi, cbr, i cbi i można się dostać prawie
wszędzie, gdzie się chce bez większych kombajnacji.

"Prawie wszędzie" - chyba żartujesz. Instrukcjami sbr i cbr możesz
zmieniać bity w rejestrach (robią to samo co odpowiednio zapisane
operacje OR i AND ze stałą), a przez sbi i cbi zmienisz bit tylko w
bardzo ograniczonej przestrzeni SFR (i to nawet nie całej w większych
AVRach posiadających dużo peryferiów).

--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

elektroda NewsGroups Forum Index - Elektronika Polska - Niejasności dotyczące pamięci RAM w mikrokontrolerze 8051 wskazówki przed kolokwium!

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map