|
关于NEC在自编程中:不知道如何进行内部扩展的自动分配
一般程序的做法是:
C语言中:
> #pragma section @@DATA DATA1
> unsigned char extbuf[512];
> unsigned char tmp;
> 在链接文件 lk.dr中定义:
> merge DATA1 := IXRAM
> 注:IXRAM为编译器定义的内部扩展RAM区,无需客户再定义。
> 其中DATA为无初值的数据段;DATA1为用户定义的段名,可以更改名称。
>
> 通过以上定义,便可以将变量定义到扩展RAM中。
>
> 扩展(1):
> 若要定义到扩展RAM的某一特定地址处
> merge DATA1 : AT (0E500H)= IXRAM
>
> 扩展(2):
> 如果不使用链接文件指定存储区域,也可在C程序中使用#pragma指令直接指定地址。
> #pragma section @@DATA DATA2 AT 0xE200
> unsigned char tmp3; /*at 0xe200,no initial value */
>
> 但定义到扩展RAM处的数据,即使定义成@@INIT(带初值),启动文件执行后仍无初值,需要在初始化时重新赋值,如:
> #pragma section @@INIT DATA3 AT 0xE100
> unsigned char tmp1 = 8; /*at 0xe100,but no initial value*/ |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|