ECS和XCS只是用作扩展模式下的片选信号,并不是时钟信号。它们可以用来选通择外部地址译码电路。
这里有一个简单的读取外部RAM的例子:
#include /* common defines and macros */
#include /* derivative information */
#pragma DATA_SEG __PPAGE_SEG EX_RAM
word ex_testram[5];
#pragma DATA_SEG DEFAULT
word tempp=0;
void delaymin()
{
word i,j,t;
for(j=0; j<6; j++)
for(i=0; i<20000; i++)
{
t++;
}
}
byte tt0;
word tt1;
byte i;
void main(void) {
while(1) {
tempp++;
for(i=0; i<5; i++) {
tt0 = tempp + i;
tt1 = tt0;
ex_testram = tt1;
tempp++;
tt1 = ex_testram;
}
delaymin();
}
}
PRM文件为:
NAMES
END
SEGMENTS
RAM = READ_WRITE 0x0400 TO 0x1FFF;
/* unbanked FLASH ROM */
ROM_4000 = READ_ONLY 0x4000 TO 0x7FFF;
ROM_C000 = READ_ONLY 0xC000 TO 0xFEFF;
/* banked FLASH ROM */
PAGE_30 = READ_WRITE 0x308000 TO 0x30BFFF;
PAGE_38 = READ_ONLY 0x388000 TO 0x38BFFF;
PAGE_39 = READ_ONLY 0x398000 TO 0x39BFFF;
PAGE_3A = READ_ONLY 0x3A8000 TO 0x3ABFFF;
PAGE_3B = READ_ONLY 0x3B8000 TO 0x3BBFFF;
PAGE_3C = READ_ONLY 0x3C8000 TO 0x3CBFFF;
PAGE_3D = READ_WRITE 0x3D8000 TO 0x3DBFFF;
/* PAGE_3E = READ_ONLY 0x3E8000 TO 0x3EBFFF; not used: equivalent to ROM_4000 */
/* PAGE_3F = READ_ONLY 0x3F8000 TO 0x3FBFFF; not used: equivalent to ROM_C000 */
END
PLACEMENT
_PRESTART, /* Used in HIWARE format: jump to _Startup at the code start */
STARTUP, /* startup data structures */
ROM_VAR, /* constant variables */
STRINGS, /* string literals */
VIRTUAL_TABLE_SEGMENT, /* C++ virtual table segment */
NON_BANKED, /* runtime routines which must not be banked */
COPY /* copy down information: how to initialize variables */
/* in case you want to use ROM_4000 here as well, make sure
that all files (incl. library files) are compiled with the
option: -OnB=b */
INTO ROM_C000/*, ROM_4000*/;
DEFAULT_ROM INTO PAGE_38,PAGE_39,PAGE_3A,PAGE_3B,PAGE_3C;
EX_RAM INTO PAGE_30;
DEFAULT_RAM INTO RAM;
END
STACKSIZE 0x100
VECTOR 0 _Startup /* reset vector: this is the default entry point for a C/C++ application. */
//VECTOR 0 Entry /* reset vector: this is the default entry point for a Assembly application. */
//INIT Entry /* for assembly applications: that this is as well the initialisation entry point */
|