SETB a zewnetrzny RAM
-
Merki_1988
- Użytkownik
- Posty: 147
- Rejestracja: 18 paź 2008, 17:53
- Lokalizacja: Żywiec
SETB a zewnetrzny RAM
Witam mam pewne pytanko odnosnie 8051, pytalem o to na elektrodzie ale tam nie dano mi jednoznacznej odpowiedzi:
Witam, mam w sumie taki problem, że ciężko mi go rozkminic teoretycznie
Otóż mam zewnętrzną pamięć RAM, rozumiem że do przesyłania tam informacji słuzy polecenie MOVX. Ale co z takimi poleceniami jak SETB (np. potrzebne aby ustawić bit portu-wszak rejestr za to odpowiedzialny umieszczony jest w RAM) lub INC? Czy jeśli mam zewnetrzną pamięć (i jej uzywam) mogę ich używać normalnie czy też wogóle musze z nich zrezygnować?
uC to 89C52
Witam, mam w sumie taki problem, że ciężko mi go rozkminic teoretycznie
Otóż mam zewnętrzną pamięć RAM, rozumiem że do przesyłania tam informacji słuzy polecenie MOVX. Ale co z takimi poleceniami jak SETB (np. potrzebne aby ustawić bit portu-wszak rejestr za to odpowiedzialny umieszczony jest w RAM) lub INC? Czy jeśli mam zewnetrzną pamięć (i jej uzywam) mogę ich używać normalnie czy też wogóle musze z nich zrezygnować?
uC to 89C52
Musisz z nich zrezygnować, bo są oddzielne rozkazy do operacji na pamieci wbudowanej i zewnętrznej, ale to samo zrobisz za pomocą rozkazu MOVX i lokalnych operacji, tzn. ja bym to zrobił tak:
1) kopiuję MOVX-em komórkę zewnętrznej pamięci na której chcę wykonywać operacje np. do akumulatora czy R0
2) wykonuję operacje na tym Acc/R0 w lokalnym RAM-ie
3) zmodyfikowane lokalnie rejestry wysyłam MOVX-em do pamięci zewnętrznej.
Metoda ma tą zaletę, że w kroku 2 możesz stosować rozkazy odnoszące się do pamięci wewnętrznej.
1) kopiuję MOVX-em komórkę zewnętrznej pamięci na której chcę wykonywać operacje np. do akumulatora czy R0
2) wykonuję operacje na tym Acc/R0 w lokalnym RAM-ie
3) zmodyfikowane lokalnie rejestry wysyłam MOVX-em do pamięci zewnętrznej.
Metoda ma tą zaletę, że w kroku 2 możesz stosować rozkazy odnoszące się do pamięci wewnętrznej.
-
Merki_1988
- Użytkownik
- Posty: 147
- Rejestracja: 18 paź 2008, 17:53
- Lokalizacja: Żywiec
-
Merki_1988
- Użytkownik
- Posty: 147
- Rejestracja: 18 paź 2008, 17:53
- Lokalizacja: Żywiec
Tfu luminofor oczywiscie ze luminofor ;p
Pamięci RAM wewnętrznej będzie 256 bajtów - nie wiem czy mi to starczy, nigdy nie programowałem i nie potrafie przewidzieć ile RAM będzie wymagane
dlatego korzystam z zewnetrznej RAM
to o czym mówisz kayron oczywiście jest do zrobienia ale nie potrzeba mi się babrać w takie coś i tylko robić sobie pod górke
zreszta trochę to bezsensu w moim przypadku gdyż sposób stronicowania stosuje sie po to, aby móc wykorzystać chociaż część pinów z P2 do sterowania czegoś-od swojej aplikacji tego nie wymagam.
Przy okazji-czy instrukcje MOVX można wykorzystać aby od razu skopiować zewn RAM do jakiegos rejestru roboczego (innego niz akumulator)? czy też musze najpierw do acc i dopiero z niego do innego rejestru?
Pamięci RAM wewnętrznej będzie 256 bajtów - nie wiem czy mi to starczy, nigdy nie programowałem i nie potrafie przewidzieć ile RAM będzie wymagane
Przy okazji-czy instrukcje MOVX można wykorzystać aby od razu skopiować zewn RAM do jakiegos rejestru roboczego (innego niz akumulator)? czy też musze najpierw do acc i dopiero z niego do innego rejestru?
Paradoksalnie właśnie nie do tego wymyślono stronicowanie. Stronicowanie wymyślono po to aby można szybciej operować 8 bitowym procesorem na pamięci i po to aby jej zaoszczędzić bo instrukcje oparte na stronicowaniu zajmują mniej w pamięci. Oczywiście adresowanie bezpośrednie, bo adresowanie pośrednie 16 bitowe i tak używa rejestru indeksowgo (lub jednego z 2 jeżeli dana 51, takowe ma).stronicowania stosuje sie po to, aby móc wykorzystać chociaż część pinów z P2 do sterowania czegoś
Co do twojego pytania o RAM w 51' To jeżeli masz go 256B to pierwsze 32B zajmują ci 4 zestawy rejestrów uniwersalnych (po 8 każdy), potem masz stos który najczęściej w kompilatorze tez jest ograniczony do 32B (potem wywala error, ale to jest akurat programowalne), czyli zostaje 64B dla siebie plus 128B w górnej połówce czyli 196B, a to sporo wbrew pozorom. Tyle już wystarcza do obsługi wyświetlacza graficznego z N3310 w trybie tekstowym.
-
Merki_1988
- Użytkownik
- Posty: 147
- Rejestracja: 18 paź 2008, 17:53
- Lokalizacja: Żywiec
Hmm w sumie używam zaledwie kilku rejestrów z banku nr 1 i nie licząc stosu ani SFR nic wiecej. Też mi się wydaje, że wewnętrzny RAM by starczył ale jednak wolałem się zabezpieczyć
no i zawsze to się trochę więcej człowiek nauczy jak ma więcej do zrobienia niz iść na łatwizne. A w moim przypadku (sterownik do swiatełek choinkowych) moge sobie chyba pozwolić na pewną rozrzutność cykli zegarowych i kodu programu.
Jeszcze jedno-czy moge uważać rozmiar pliku w notatniku jako teoretyczne zajmowane miejsce programu w pamięci EEPROM?
Jeszcze jedno-czy moge uważać rozmiar pliku w notatniku jako teoretyczne zajmowane miejsce programu w pamięci EEPROM?
Chłopie do tego ci wystarczą same rejestry uniwersalne i 1kB Flash. Twoje pytanie sugerowało jakąś poważniejszą aplikacje a nie coś co uciągnie 89C1051 (nie produkowany już tak na marginesie) taktowany 1MHz.A w moim przypadku (sterownik do swiatełek choinkowych) moge sobie chyba pozwolić na pewną rozrzutność cykli zegarowych i kodu programu.