pic RAM minne .....

A

aviv6371

Guest
Hallo,

im bygge pic877 basert enhet og jeg trenger å gjøre utvalg av 256 characaters.
når jeg skrevet erklæring:
unsigned char arr [256];

Jeg fikk feilmeldingen: "ord for psect" rbss_0 i segmentet "BANK0"

når jeg endret array erklæring til:

unsigned char arr [66]

Det virket!

nå jeg trenger 256 tegn.Jeg hørte noe om erklæring av bank1 i begynnelsen.ikke sikker.

Kan noen legge litt lys over dette temaet??

alle hjelpe ville være verdsatt.

avi.
Sist endret av aviv6371
19. juli 2006 0:22, endret 1 gang totalt

 
Jeg regner med at du bruker Hi-Tech C?

Den 16F877 har fire minne banker, slik erklæring vil se slik ut:

bank1 unsigned char test [XX]
bank2 unsigned char test [XX]
bank3 unsigned char test [XX]

Hvis du ikke angir minnet bank bruker bankX søkeordet bank0 vil bli uesed.

Problemet er at 16F877 ikke har en memorybank der du kan bruke 256 byte

<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Crying eller Veldig trist" border="0" />Mest minne banker er 80 eller maks 96 byte i størrelse.

Ta en titt på dataarket.

med vennlig hilsen

 
hello C-Man og andre,

thanx for raskt svar.
henhold til det om jeg vil slette 256 char array jeg kan gjøre det ved å:

bank1 unsigned char test [96];
bank2 unsigned char test [96];
bank3 unsigned char test [64];

for (i = 0; i <= 255; i )
test = '';

Er det lov??avi.

 
Problemet er at jeg har for å behandle 256 tegn som kan lagres til slutt i EEPROM.Jeg må forholde seg til de ulike bankene med forskjellig mengde ram.

Hvordan kan jeg gjøre jobben ??????

avi.

 
Her er et eksempel på hvordan jeg gjorde en avbruddsordrelinje kontrollert RS232 buffer på 256 tegn ved hjelp av en 16F88

skriv til buffer

Code:# define BUFFER_GROESSE 64statiske flyktige vedvarende byte Buffer1 [BUFFER_GROESSE];

bank1 statiske flyktige vedvarende byte Buffer2 [BUFFER_GROESSE];

bank2 statiske flyktige vedvarende byte Buffer3 [BUFFER_GROESSE];

bank3 statiske flyktige vedvarende byte Buffer4 [BUFFER_GROESSE];statiske byte zeiger_schreiben = 0if (RCIF)

(

rx_datenbyte = RCREG;if (FERR)

rx_datenbyte = RCREG;receive_timer = RECEIVE_TIMEOUT;if (! OERR)

(

if (! (zeiger_schreiben og 128))

(

if (! (zeiger_schreiben & 64))

Buffer1 [zeiger_schreiben & 0x3F] = rx_datenbyte;

ellers

Buffer2 [zeiger_schreiben & 0x3F] = rx_datenbyte;

)

ellers

(

if (! (zeiger_schreiben & 64))

Buffer3 [zeiger_schreiben & 0x3F] = rx_datenbyte;

ellers

Buffer4 [zeiger_schreiben & 0x3F] = rx_datenbyte;

)zeiger_schreiben ;

)

ellers

(

CREN = FALSE;

CREN = TRUE;

)

)

 
Trenger du kanskje ikke å definere slike array
Jeg tror at du kan bruke indirekte adressering i stedet ved hjelp FSR fortsetter og INDF registre.
Du trenger bare å oppdatere adressen woill punkt til RAM sted.

I dette tilfellet må du finne en måte å beskytte valgt RAM områder blir brukt av kompilatoren hvis du har flere variabler brukt i kodenTakk

 
hei,

C-Man - Jeg tryed men jeg får feilmeldingen: "fixup overflyt i uttrykket (location 0xC6C (0xC66 6), størrelse 1, verdi 0x1A2)"

av veien hvorfor har u erklært tabellen som statiske flyktige vedvarende og ikke vanlig unsigned char??

Haythan - ja Theres annen måte navnet er pekere og det kunne være ferdig med C
.sine mer effektivt methode fordi jeg ikke å kaste bort kostbar ram ved tildeling fast beløp på tabellen, med pekere i fordele data kun ved behov.
Problemet er at jeg dont vite hvor å gjøre det!

noen forslag???avi.

 
aviv6371 wrote:

hei,C-Man - Jeg tryed men jeg får feilmeldingen: "fixup overflyt i uttrykket (location 0xC6C (0xC66 6), størrelse 1, verdi 0x1A2)"av veien hvorfor har u erklært tabellen som statiske flyktige vedvarende og ikke vanlig unsigned char??

 
hi C-Man,

Jeg har gjort erklæringen: (kompilert med picc lys)

bank3 statiske unsigned char arr3;

jeg dont får feilmelding.

men når im tilordner en verdi av linjen:

arr3 = 'e';

Jeg får meldingen: "fixup overflyt i uttrykket"

det svært irriterende problemet .......<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Crying eller Veldig trist" border="0" />
kanskje sin gratis versjon mplab ulempeavi.

 

Welcome to EDABoard.com

Sponsor

Back
Top