原创 C51外部RAM扩展

2009-11-28 23:03 4416 17 18 分类: MCU/ 嵌入式

点击看大图


//存储模式的选择(small,compect,large),并不直接影响XDATA的使用 --


 //使用XDATA,PDATA时,主要注意的是 //参数传递,堆栈的位置--因为这些直接影响到程序的效率--- 堆栈的设置可以在startup.a51文件里面设置。
//large 模式下, 全局变量默认定义在XDATA区;同理,适用于其他存储模式
//在large模式下,虽然默认变量在XDATA,也可以通过关键字data,pdata等 将变量默认放在data,pdata区。
//同理,在small下,也可以使用xdata段。
//注意——如果xdata中有变量需要初始化,并不需要修改startup.a51文件!
//KeilC编译器会根据程序初始化XDATA内已定义的变量,而未定义的xdata空间,将根据startup.a51文件,对xdata进行填充(不使用
// startup.a51 时 ,一般情况下 ,xdata区是清零的)。


//使用KeiLC 进行编译时,注意修改工程属性,根据硬件电路,设置正确的XDATA区间。


======================================================


#include "reg52.h"
#include "absacc.h"
#include "intrins.h"

void msDelay(unsigned char mstime)    // 12MHz ------100ms误差大约在0.3%
{
    unsigned char msDelay_par;    
   
    DL1MS: 
          msDelay_par = 250;
     LOOP:
            _nop_();
            _nop_();
            msDelay_par--;
            if( msDelay_par !=0)
              goto LOOP;
            mstime--;
            if( mstime !=0)
              goto DL1MS;             
   
}



main()
{


unsigned char data v1 = 0x80; 
unsigned char xdata v2 = 0x01;
unsigned char xdata v3[] = {0,1,2,3,4,5};
//unsigned char xdata v4;  //默认初始化为O
unsigned char  tmp = 0;
unsigned char data p;


P1 = v2;



msDelay(200);
msDelay(200);
msDelay(200);
P1 = v3[1];
msDelay(200);
msDelay(200);
msDelay(200);
P1 = v3[5];
msDelay(200);
msDelay(200);
msDelay(200);


P1 = XBYTE[0x4009];
msDelay(200);
msDelay(200);
msDelay(200);


for(;;);


}
--------------- 代码已验证。

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户433198 2013-12-20 10:15

C51外部RAM扩展
相关推荐阅读
用户1528688 2014-10-19 10:55
【博客大赛】汽车电子的容错处理
汽车电子的容错处理随着新能源汽车的逐步上路,车上EMC状况将是一个巨大挑战。软硬件方面都应采取一定的措施提高系统容错性能。下面是笔者的一些经验整理,希望能起到抛砖引玉之作用。  在实验室验证原型的时...
用户1528688 2014-09-08 00:14
背景任务的几种常见调度方式
背景任务的几种常见调度方式   我们喜欢RTOS,因为它足够简单;我们讨厌RTOS,因为它足够复杂。从“裸奔”到RTOS,首先意味着工程师们要去适应这些“新”东西,更要命的是要去给BOSS...
用户1528688 2014-08-18 21:20
工程师应要会讲故事
    是的,我回来了,EDN博客(...好吧,其实没人记得我)     5年之前我还在念书,自认为是那种无师自通的材料,于是乎——大一白天疯玩,晚上熬夜做作业;大二开始沉迷code,以至于去...
用户1528688 2009-12-03 07:33
KeilC 里面慎重对全局变量初始化
首先,这里的全局变量指的是 在main() 之前定义的变量(包括在 .h文件 或者  其他.c文件里面定义的变量)。<?xml:namespace prefix = o ns = "urn:sc...
用户1528688 2009-11-28 21:53
特定序列检测
从数据流<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  010_01101_0_...
EE直播间
更多
我要评论
1
17
关闭 站长推荐上一条 /3 下一条