Auto segment prevelik

Zaboga, nisem vedel, da je 51 ima štiri različne prostore spomin!Ampak sem dobil idejo splošne zdaj.

Predstavljajte si, če imam zunanji pomnilnik RAM z mojim mikrokrmilniška, moram uporabiti PDATA za shranjevanje podatkov v zunanji RAM?

Želel bi si ogledate primer uporabe zunanjega oven z 89C51 v C, ker želim naučiti, da za mojo prihodnost projekta.

Mimogrede, hvala za pomoč me razumeti.Imaš "mi je pomagal" točk

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Nasmeh" border="0" />Maverick Max

 
Žal Mislim, da sem naredil napako .. z pdata je mislim xdata ..ampak da vidijo vaše prevajalnik dok bi videli, kako imajo dostop do vesolja, da .. je preprosto!. stvar je, da je odvisna od prevajalnika.

Pdata je prva 256 bytes zunanjih bata. Uporabljate Keil prevajalnik
Xdata je vse 64k

pdata je uporabno, ko morate malo spremenljivke ..

Razlog je, kako je zastopana kazalec, da prihrani veliko prostora, ki ga razglasi kot pdata ..(manjša glava)

če pa potrebujete več podatkov, ki je dobro iti s xdata

exmp

xdata int myArray [1000];

Tu je vse to paleto mora biti natančno vpliva na xdata. in če želite, da dostop prek kazalec se morate prijaviti kot

xdata int myptr;;
Zdaj lahko dobite naslov, ki ga preprosto
myptr = myArray;

Namesto tega bi si to:

code int myptr;
myptr = myArray; prevajalnik bo jokala!naslove tako ustrezajo različne prostore .. zato ga je treba oddati kot

myptr = (int code) myArray;

Najboljši način, da completly razumem je to, da se glasi POINTER poglavje o KEIL MANUAL ..potem res postane jasno, kako deluje in kazalec, kako so zastopani (kazalec HEADER), med temi prostori in zakaj si preprosto ne more storiti "vsesplošno usmerjena"

torej vse je preprosto, zelo enostavno
Last edited by eltonjohn on 09 Aug 2005 17:36, edited 5-krat v skupno

 
Ker sem zelo nov pri tej vrsti območja.Rad bi, da je šel asap.Ali imate shematskimi za povezovanje RAM spomin?Kje in katere spomin zunanji morem kupiti?

Kaj pa kod?cuz rabim nekaj primerov, za boljše razumevanje.

Maverick Max

 
RAM-a je zelo hitro te dni. Torej vsak 8 bit 1 megabit ali celo 2 megabit statični ram bo naredil.Cenejših bolje!dostop časa. dependes je, kako hitro je vaše mikro, s tretjimi RISC 51. 120 ns <bo deloval ravno prav!.. V vsakem primeru vsi proizvajalci do najmanj 70ns te dni nekako ..Torej si na varnem!

Tako bom našel shematsko ..bom post to ..ant elektroda pa boste našli thouthand, če želite iti hitreje!

Obstaja ena več prostora v 51. Torej je locirani v prostoru tudi PODATKOV. Vendar pa je dobro vedeti, da lahko uporablja tudi kot drugačen prostor. To je BIT prostor.
kjer lahko vplivajo na boolean spremenljivk!

bit mytrue;
bit mylie

mytrue = 0;
mylie = 1; <- to lahko dveh spremenljivk le 1 ali 0

če pa že boste:

Res = 5; bo <- prevajalnik pritožujejo

v tem prostoru spremenljivk lahko le 1 ali 0, zelo koristne in tukaj si lahko shranite veliko ram.Ker bo prevajalnik zemljevid teh spremenljivk, ki bitov podatkov v prostoru ..(Le 20 ~ 30 bytes avalaible so za to)

zato preverite kakšne so vaše spremenljivke, ki so boolean in zemljevid, da segment BIT!

Na zdravje!

 
To je rom C51 navodilo:
3
Izrecno naveden Memory Types
Z vključitvijo razvrst tip pomnilnika deklaracija spremenljivke, boste morda
določite spremenljivke, kjer so shranjeni.
Spodnja tabela povzema voljo specifiers vrsta pomnilnika.
Memory Type Description
code Program pomnilnik (64 KBytes); dostopne opcode MOVC @ DPTR.
Podatki neposredno addressable notranjih podatkov pomnilnika, hitrejši dostop do spremenljivk
(128 bytes).
idata Posredno addressable notranjega pomnilnika podatkov, dostopni v celotnem notranjem
naslovni prostor (256 bytes).
bdata Bit-addressable notranjih podatkov pomnilnika, omogoča mešani bit in byte dostop
(16 bytes).
xdata Zunanji podatkovni pomnilnik (64 KBytes); dostopne opcode MOVX @ DPTR.
pdata PAGED (256 bytes) z zunanjimi podatki spomin; dostopni opcode MOVX @ Rn.
Kot pri podpisani in nepodpisani atributi, lahko vključujejo vrsta pomnilnika
specifiers v deklaraciji spremenljivke.

s spoštovanjem

 
OK ..Bom poskusil, da pojasni to ..51 je MCU, ki ima nekaj spomina PROSTORI ..CODE, PODATKOV, idata, XDATA IN PDATA ..Ko ustvarite VARIABLE (char ali ARRAY), morate povedati, če prevajalnik v kateri ima ena na PUT IT!
51 je rafiniran MCU. Torej, ko se ukvarjajo z velikimi programi, ki jih je treba zavedati številnih spremenljivk.
Primer: lets reči, da si ustvarite spremenljivke, ki presega 500!.. dobro sedaj boste morali custumize!
imate samo 128 - notranja registrov v segmentu PODATKI ..zato boste tukaj najbolj vplival uporabljene spremenljivke, tiste, ki potrebujejo hiter dostop. Imate še 128 bajtov RAM v segmentu idata. Torej, dal sem drugi spremenljivk v prednosti.Finnaly XDATA je zunanji RAM ODSEKIH ..imate do 64K prostor.Pod pogojem, da ste telesno, da je RAM ..nekateri so MICROS 2k, 8k ali več, servisna listu.
Zdaj bo treba biti pozoren izplača, ko se ukvarjajo z vsem tem spomin prostorov.
zato, ker ne moreš DO TEGA:

xdata char * myram_ptr;
idtata char * myidata_ptr;
char * mydata_ptr; <- deafult gre za podatke, je enako kot: podatki char * mydata_ptr;
koda char * mycode_ptr;
pdata char * mypdata_ptr

* mycode_ptr = * myram_ptr ali katere koli kombinacije zgornjih spremenljivk
jih je treba odljevaka pravilno.Ker so vsi kazalci drugače predstavljal notranjost prevajalnik de ..
Torej ena stvar je začela s je nekdo rekel je, da konstante v "code" prostora, tako da ne dobijo zemljevid privzeto v RAM

tako da, če imate
int pi = 31416;

koda, da je to: koda const pi = 31416; <- bo dana v flash ali rom segment
Last edited by eltonjohn on 09 Aug 2005 17:51, edited 2-krat v skupno

 
Živjo

Ali AT89S8252 ima dovolj podatkov pomnilnika za shranjevanje 512 bytes?

Cuz sem malce zamenjati z 2K Bytes EEPROM 256x8 in notranji RAM!

Kako za vraga lahko shranite tam?Maverick Max

<img src="http://www.edaboard.com/images/smiles/icon_rolleyes.gif" alt="Rolling Eyes" border="0" />
 
Živjo,
const tByte dot_0 [] otherwise dot_o[] will be placed into ram ...

v write_display.c nadomestiti const tByte dot_0 [] z oznako
const tByte dot_0 [] drugače dot_o [] bo treba dati v ram ...

upanje to pomaga

 
Pozdravljeni C-man

Nisem slišal "kodo" prej.Ali lahko pojasnite, zakaj ste uporabili "oznaka"?

Coud jaz ne najdem "kodo", v svojih knjigah C, kot je nujno potrebno Priročnik za C in C Vodič za začetnike!

Če pekel "kodo" prihaja iz?!

<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Crying or Very sad" border="0" />Maverick Max

 
I have attached svoje kode tukaj za vas, da preverim.

Ker je moj AT89C51 nimajo dovolj podatkov pomnilnika, ali kdo ve 8051 je 4k ali več podatkov pomnilnika?

Maverick Max
Oprostite, toda morate prijavo na ogled te priloge

 
M

Maverickmax

Guest
Živjo

Sem bil učenje za uporabo 128x64 LCD-modul z AT89C51 ter imam been using FastLCD za pretvorbo BMP v tabelo bajtov.

Imam uporabite tabele v moji kod in preizkušen za njihovo zbiranje uisng software Keil.Dobim rezultat - avto segment prevelik.

Kako dati vse bajtov v mojem kode za prikaz slike na mojem 128x64 modul LCD.

Ne razumem.Kaj je problem?

Maverick MaxDodano po 17 minutah:Našel sem podatke o napaki, vendar jaz ne razumem.Ali lahko kdo skrbi, da pojasni to mi?

Napaka C241
Povzetek

*** Error C241
Auto Segment Too Large

Opis zahteva prostor za lokalne objektov presega model odvisna največja.Največji segment velikosti so opredeljeni kot sledi: SMALL 128 bytes COMPACT 256 bytov VELIKI 65535 bytes

http://www.keil.com/support/man/docs/c51/c51_c241.htm

Ali to pomeni, da kod je preveč tako prevelika za moje mikrokrmilniška?

Maverick Max

 

Welcome to EDABoard.com

Sponsor

Back
Top