| Autor |
"Pamięć danych w 8051" |
|
|
Misiek61
|
|
Wysłana - 8 styczeń 2007 22:27 | zgłoś naruszenie regulaminu
cześć, czy moglby mi ktos zaproponowac jakas ksiazke o pamieci danych w 8051 bo w szkole musze wyglosic referat na ten temat?? prosze nawet podac kilka jakby ktos mogl;)
| |
|
 |
|
|
|
el_bart
|
|
w kazdej ksiazce o '51 masz napisane o wszystkich rodzajach pamieci, co jest gdzie, do czego sluzy, etc...
_______________________________
[baszerr.org] |
 |
|
|
|
Misiek61
|
|
hej a co to jest adresowanie w sposób pośredni (poprzez rejestry wskaźnikowe R0 i R1) a bezposrednie?? mowa o uC 8051,
Zmieniony przez - Misiek61 w dniu 2007-01-24 13:24:41
Zmieniony przez - Misiek61 w dniu 2007-01-24 13:24:56 |
 |
|
|
|
el_bart
|
|
bezposrednie:
mov A,0x30 ; wstaw do ACC dane z pod adresu 0x30
posrednie rejestrowe:
mov R0,#0x30 ; wpisz do R0 WARTOSC 0x30
mov A,@R0 ; wpisz do A wartosc z pod adresu zapisanego w R0
wynik obu w/w operacji bedzie oczywiscie taki sam.
no to jak juz tu jestesmy to zagadka - jaka jest roznica pomiedzy dwoma wywolaniami:
mov A,@R0
mov ACC,@R0
Zmieniony przez - el_bart w dniu 2007-01-24 16:22:09
_______________________________
[baszerr.org] |
 |
|
|
|
Misiek61
|
|
szczerze to nie mam pojecia, ACC jest w rejestrach specjalnych?
a jesli chodzi o to adresownie, to bezposrednie polega na tym ze a A wpisuje odrazu wartosc z komorki o adresie 0x30, a posrednie , ze najpierw wpisuje do R0 wartosc z komorki o adresie 0x30 a dopiero pozniej z R0 do ACC, dobrze zrozumialem??
Zmieniony przez - Misiek61 w dniu 2007-01-24 17:34:49 |
 |
|
|
|
el_bart
|
|
tak.
a co do zagadki:
ACC to akumulator
A to tez akumulator
na czym wiec polega roznica? otoz uzycie A w instrukcji powoduje wywolanie w/w "w wersji" z "akumulatorowej" zas ACC to tak naprawde adres w SFR, wiec jest traktowany jak kazdy inny.
co prawda operacje na pamieci moga trwac dluzej niz na akumulatorze, ale np:
push ACC ; dziala
push A ; blad kompilacji
_______________________________
[baszerr.org] |
 |
|
|
|
Misiek61
|
|
a jeszcze pytanie mam, co to za adres podales 0x30 ?? co to jest 0 x 30? adresy podaje sie w szesnastkowyn kodzie?? |
 |
|
|
|
el_bart
|
|
tak. 0x?? to adres szesnastkowy ("w hexach") - 1B.
a 0x30 to pierwsza komorka pamieci ogolnego przeznaczenia w 8051.
_______________________________
[baszerr.org] |
 |
|
|
|
Misiek61
|
|
mam pytanie odnosnie jeszcze tego adresowania, dlaczego w adresowaniu posrednim najpierw wartosc zapisuje sie do rejestru R0? czy nie mozna odrazu zastosowac adresowania bezposredniego?? |
 |
|
|
|
el_bart
|
|
tak i nie. zalezy od zastosowania. przyklad jaki Ci podalem jest bardzo prosty, zeby zobaczyc roznice i w praktyce nikt normalny by tego tak nie zrobil w takim konkretnym przypadku.
adresowanie rejestrowe mozesz sobie wytlumaczyc troche jak odpowiednik wskaznikow w jezykach wyzszego poziomu - jak masz wynkowac te sama operacje na 100 bajtach, to nikt nie bedzie sie palowal z klepaniem 100 tej samej operacji, tylko z innym adresem (bo musi on byc znany w momencie kompilacji, jezeli adresujesz bezposrednio) - patrz "dziedziczenie przez clippboard" - tylko napisze odpowiednia pentle i nia przeiteruje po wszystkich elementach. wtedy w petli zamist adresowania bezposredniego bedziesz mial adresowanei rejestrowe za pomoca np: @R0.
_______________________________
[baszerr.org] |
 |
|
|
|
Misiek61
|
|
|