EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
教你给51单片机扩展片外RAM) C6 y! U9 `' }" r; R
5 k5 P- S( g: z上一文中扩展了单片机的程序存储器,4KB存储空间提升到64KB。其实,4K的代码空间还凑合,但是51自带的256B数据存储空间使用起来还真紧张,其中留给用户的连128B都不到,所以不得不扩展片外RAM。扩展RAM方法和扩展ROM差不多,都是占用P0/P2口做地址线,同时P0用锁存器74373分时复用地址和数据信号。 以前扩展RAM是用汇编语言访问存储器,好处是定位精准,指哪打哪,坏处就是:程序规模一大就有点难维护了,所以还得改用C实现。 对应于汇编语言用R1,R0/DPTR访问外部RAM,keil C扩展了存储类型,增加了如pdata(等同用movx @Rn访问方式)/xdata(等同于movx @DPTR访问方式)存储类型用于访问片外ram。同时,还提供了绝对地址访问的宏,如PBYTE/XBYTE,查看定义: [cpp] view plain copy#define PBYTE((unsigned char volatile pdata*)0); #define XBYTE((unsigned char volatile xdata*)0); 其实,也还是定义相应存储类型的指针~。 上仿真图和代码前,整理一下keil c提供访问绝对地址的方法:
% c" }9 \4 U0 { |