Re: 8051 - programowanie



Masz problem? Zapytaj na forum elektroda.pl z bramką pl.misc.elektronika!

Poprzedni Następny
Wiadomoœć
spis treści
From: Stanislaw Sidor <sts_at_nospam_qq.elcompzu.com.pl>
Subject: Re: 8051 - programowanie
Date: Fri, 22 Jan 1999 17:50:55 +0100


Olgierd Cybulski wrote:
Poza tym gdzies tam w kodzie wystepuje "USING 1" :-?

To też w zasadzie nie ma znaczenia. Chodzi o to, by kompilator
wiedział, że domyślnie przyjęty jest pierwszy bank rejestrów,
przypuszczam, że skoro pierwszy, to nie zerowy, więc przyjęto,
że rejestr R0 jest w ósmej komórce.
Ma to znaczenie wyłącznie dla kompilatora i nie powoduje
generowania jakiegokolwiek kodu.
Chodzi, o ile wiem, o to, żeby kompilator mógł kontrolować
zmiany wartości rejestrów (ochrona danych !), np. żeby
zmienna prywatna umieszczona pod adresem 0 nie mogła być
zmodyfikowana w "zewnętrznej" części programu instrukcją
np. MOV R0,#VALUE, oczywiście mogłoby się to zdarzyć tylko
wówczas, gdy w PSW bity wybierające bank rejestrów będą wyzerowane.

Chyba nie po to by chronic.
Wprowadzono to po to, aby latwiej pisac kod dla bankowania rejestrow i
wprowadzono wirtualne rejestry ARn, ktore sa normalnymi lokacjami w RAM
(pokrywaja sie z lokacjami odpowiednich rejestrow), tyle ze zaleznymi od
aktualnie zadeklarowanego banku np.
USING 0
mov MOJA_ZMIENNA,AR7 ; rownowazne mov MOJA_ZMIENNA,7 ale wowczas
niejasno

USING 1
mov MOJA_ZMIENNA,AR7 ; rownowazne mov MOJA_ZMIENNA,15 tym bardziej
niejasno

Gdyby to pisac "koszernie" to wtedy:

mov PSW,#RB1 ; selekcja banku 1, nie dbamy o flagi
mov a,R7
mov MOJA_ZMIENNA,A

czyli troche dluzej :-(


(STS)

Poprzedni Następny
Wiadomoœć
spis treści
From: "Bartosz Rakowski" <rakbar_at_nospam_friko2.onet.pl>
Subject: Re: 8051 - programowanie
Date: 22 Jan 1999 17:38:30 GMT


Czesc

Dwoch panow zadeklarowalo sie, ze mi przysle procedurki, albo kompilator.
Lykam wszystko ponizej 1MB.

Dzieki

Postaram sie przezuc co napisaliscie i potem dam znac, co na to
kompilator...