Jak wykorzystać 256B RAM w AT89s8252?



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "dkamin" <dkamin_at_nospam_o2.pl>
Subject: Jak wykorzystać 256B RAM w AT89s8252?
Date: Tue, 29 Oct 2002 20:20:09 +0100


Co w kompilatorze KEIL C-51 ustawić aby wielkość pamięci CODE była rowna
tyle ile ma ramu czyli 256B? Bo gdy używam tablicy większej niż 128 B
wyrzuca mi błąd?

Na EA ma podane 5V.
Czy wtedy dane zapisane do pcode będą dostępne dla uC?
Niema żadnej dodatkowej pamięci podłączonej?



Poprzedni Następny
Wiadomość
Spis treści
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: Re: Jak wykorzystać 256B RAM w AT89s8252?
Date: Tue, 29 Oct 2002 21:20:02 +0100


Użytkownik "dkamin" <dkamin_at_nospam_o2.pl> napisał w wiadomości
news:apmn1g$gbf$1_at_nospam_korweta.task.gda.pl...
Co w kompilatorze KEIL C-51 ustawić aby wielkość pamięci CODE była rowna
tyle ile ma ramu czyli 256B? Bo gdy używam tablicy większej niż 128 B
wyrzuca mi błąd?

Na EA ma podane 5V.
Czy wtedy dane zapisane do pcode będą dostępne dla uC?
Niema żadnej dodatkowej pamięci podłączonej?

Oj. Coś Waść mieszasz.

1)
CODE to obszar pamięci programu - czyli ten adresowany sygnałem PSEN\ i
dostępny dla procesora w cyklu pobrania rozkazu lub instrukcjami:
MOVC A,_at_nospam_A+DPTR
MOVC A,_at_nospam_A+PC

czyli:
code char tablo[2048]; // to jest tablica stałych siedząca w pamięci
programu

Podanie na EA\='H' oznacza, że w zakresie 0...FLASHSIZE program będzie
wykonywany z wewnętrznego Flash-a.

2)
Obszary: DATA, IDATA, BDATA, BIT (zależnie od dostępnego sposobu
adresowania) odnoszą sie do wewnętrzengo RAMu. Te 256B (w MSC-52) zarazem
mieści 4 banki rejestrów, obszar adresowany bitowo i stos.
np.
idata char tabliczka[16];


3) PDATA, XDATA - obszary odnoszące się do zewnętrznej pamięci danych
(XRAM). Niektróre nowsze procesory mogą posiadać kilka KB pamięci XRAM na
pokładzie. Ale dostępnej w ten sam sposób. Do sterowania XRAM służą osobne
sygnały RD\ i WR\ . Od strony programowej można do niej sięgnąć wyłącznie za
pomocą rozkazów MOVX. Możliwe są tu dwa warianty:

a) XDATA - odwołanie przed DPTR:
MOVX A,_at_nospam_DPTR // odczyt z xram
MOVX _at_nospam_DPTR,A // zapis do xram
wystawianej na linie portów P2 i P0

b) PDATA - odwołanie ze stronicowaniem:
MOVX A,_at_nospam_Ri // odczyt z xram
MOVX _at_nospam_Ri,A // zapis do xram
R1 wystawianej na linie portu P0. W ten sposób można poruszać się jedynie
w obrębie 256 bajtowej strony, ale dostęp jest znacznie szybszy dzięki
ominięciu konieczności ładowania rejestru DPTR. Ponieważ linie port P2 nie
zmieniają w tym czasie swojego stanu, to ustawiając programowo wartość P2
można wybierać numer strony do której nastepuje odwołanie. Ponieważ AFAIK
Keil-C51 nie ingeruje sam z siebie w stan portu P2, to rozmiar obszaru
PDATA musi być ograniczony do 256B czyli jednej strony.

Np.:
xdata char tablica_x[1410];
pdata char tablica_p[256];


MDz




Poprzedni Następny
Wiadomość
Spis treści
From: Marek Lewandowski <nospamabuse_at_nospam_poczta.onet.pl>
Subject: =?iso-8859-2?Q?Re:_Jak_wykorzysta=E6_256B_RAM_w_AT89s8252=3F?=
Date: Tue, 29 Oct 2002 21:25:15 +0100


dkamin wrote:

Co w kompilatorze KEIL C-51 ustawić aby wielkość pamięci CODE była rowna
tyle ile ma ramu czyli 256B? Bo gdy używam tablicy większej niż 128 B
wyrzuca mi błąd?

Zdefiniuj tablicę jako stałą.
--
Marek Lewandowski ICQ# 10139051/GG# 154441
locustXpoczta|onet|pl
http://locust.republika.pl
[! Odpowiadaj pod cytatem. Tnij cytaty. Podpisuj posty. !]

Poprzedni Następny
Wiadomość
Spis treści
From: "dkamin" <dkamin_at_nospam_o2.pl>
Subject: Re: Jak wykorzystać 256B RAM w AT89s8252?
Date: Tue, 29 Oct 2002 22:03:54 +0100


ale to jest tablica zmiennych



Poprzedni Następny
Wiadomość
Spis treści
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: Re: Jak wykorzystać 256B RAM w AT89s8252?
Date: Tue, 29 Oct 2002 22:13:58 +0100


Użytkownik "dkamin" <dkamin_at_nospam_o2.pl> napisał w wiadomości
news:apmt43$f7n$1_at_nospam_korweta.task.gda.pl...
ale to jest tablica zmiennych

To jeszcze raz precyzyjnie napisz co chcesz osiągnąć.

MDz




Poprzedni Następny
Wiadomość
Spis treści
From: Marek Lewandowski <nospamabuse_at_nospam_poczta.onet.pl>
Subject: =?iso-8859-2?Q?Re:_Jak_wykorzysta=E6_256B_RAM_w_AT89s8252=3F?=
Date: Tue, 29 Oct 2002 22:46:47 +0100


dkamin wrote:

ale to jest tablica zmiennych

to nie może być w paięci kodu. Ta jest stała. A nie możesz zabrać
programowi całego wewnętrznego RAMu na swoją tablicę, bo tam musi
jeszcze stos i parę rejestrów wejść.
--
Marek Lewandowski ICQ# 10139051/GG# 154441
locustXpoczta|onet|pl
http://locust.republika.pl
[! Odpowiadaj pod cytatem. Tnij cytaty. Podpisuj posty. !]