scx
Guest
Sat Jan 20, 2007 1:40 am
Analizuję sobie budowę '51 (kolokwium w poniedziałek, ale się nie boję

),
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ę

),
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ę

),
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

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

Oj, bałbym się o to kolokwium
<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!
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.