A. 51单片机扩展外部数据存储器6264,怎么用C语言实现对其操作
2.扩展RAM编程基础
(1)弄清扩展器件的地址
在图7.2.5中,U3的ABC接单片机A13,A14,A15,所以片选信号对应地址最高位,即:“CBAxxxxx xxxxxxxx”(x为任意)。U4片选接CS1,即Y1,CBA=001,可得U4的地址范围是0x2000~0x3fff。U5接CS3,即Y3,CBA=011,地址为0x6000~0x7fff。U6接CS4,即Y4,CBA=100,地址为0x8000~0x9fff。知道了器件地址,可以利用直接地址、外部数据指针来访问存储器。通过设置,也可以让编译器在扩展RAM中自动分配存储单元。
(2)直接地址访问
①向U4写数据:
XBYTE[0x2000+addr]=dat; //addr为U4内部地址,取值为0~0x1fff;dat为数据。
②读出U4数据:
dat=XBYTE[0x2000+addr];
也可以用页访问方式。页访问方式,实际就是先把16位地址高8位送P2口,通过低8位地址读写。
③按页读写U4:
P2=0x20+page; // page为页,取值为0x00~0x1F。
PBYTE[addr]=dat; // addr为页内地址,取值为0x00~0xFF。
dat=PBYTE[addr];
④读U6
dat=XBYTE[0x8000];//读U6,地址取0x8000~0x9fff任何值,都一样。
⑤写U5
XBYTE[0x6000]=dat; //写U5,地址取0x6000~0x7fff任何值,都一样。
(3)数据指针
如,读写U4,可以这样写:
unsigned char xdata *p=0x3000; //声明指针p,并初始指向0x3000单元
x=*p; //读指针所指向的位置
p=p+1; //指针指向下一单元
*p=0x16; //向指针所指向的位置写入数据
(4)让编译器自动分配存储空间
①为了能让编译器自动分配存储空间,并使用扩展RAM,必须设置扩展RAM地址。在Keil编程软件中,点击工具栏快捷图标“ ”,弹出目标选项对话框。按图7.2.6所示,设置RAM起始地址和长度。
②变量声明时使用xdata关键词。如:
unsigned char xdata a;//变量a使用扩展RAM空间。
特别注意,扩展RAM直接地址访问方式与自动分配存储空间方式最好不要混用,否则可能产生冲突。
摘自《单片机控制装置安装与调试》下册,雷林均主编
B. STC单片机怎样外接存储器
把RAM的数据线D0-D7接到P0口上,P0口同时也接到74HC373上,373的CLK接单片机的ALE。地址线低8位由74HC373锁存P0得到,地址线高8位A8-A16接到P2口上,然后使用下面程序即可实现存储器读写。
u8 xdata *point;
u8 i;
point=0x4000;
*point=i; //写入数据
i=*point; //读入数据
point++;
C. 单片机程序将外部数据存储器从7000H开始的连续的30个单元置为1
外部数据存储器的读写,用指令MOVX来实现,汇编语言来编制的话,是很容易理解的。下面给出汇编代码,供参考:
SETD:
MOVDPTR,#7000H
MOVR2,#30
LOOP:
MOVXA,#0ffh
MOVX@DPTR,A
INCDPTR
DJNZR2,LOOP
RET
如果用C语言的话,程序代码如下:
unsignedchar*str
unsignedchari;
str=0x7000;
for(i=0;i<30;i++)
{
*str=0xff;
str++;
}
D. 51单片机外扩存储器时如何确定存储器的地址范围
51单片机外扩存储器时,用地址线确定存储器的地址范围。
用一个IO口的口涎作为数据存储器的片选信号。比如8051单片机,P2:P0口提供的地址A15~A0(实际是A12~A0)用来访问8K的数据存储器。
用单片机的P1口作为存储器的片选信号:P1.0接一个存储器的CS,P1.1接另一个存储器的CS,这样8个存储器正好用完P1口,当要访问其中一个时,只把相应的P1.x=0而其他为1,这样就可以了。
工作原理
存储器是用来存储程序和各种数据信息的记忆部件。存储器可分为主存储器(简称主存或内存)和辅助存储器(简称辅存或外存)两大类。和CPU直接交换信息的是主存。
主存的工作方式是按存储单元的地址存放或读取各类信息,统称访问存储器。主存中汇集存储单元的载体称为存储体,存储体中每个单元能够存放一串二进制码表示的信息,该信息的总位数称为一个存储单元的字长。
E. 单片机片外转片外怎么做呀
先用 MOVX A, @DPTR 将数据从片外存储器搬到累加器
再用 MOVX @DPTR, A 将数据从累加器搬到片外存储器
来回切换DPH就可以了(10H和20H),DPL每完成搬运一字节就累加。
题外话:碰到外部存储器之间搬运大数据块的时候,双DPTR指针就体现出优势了,SWAP DPTR + INC DPTR 效率提升一大截。
F. 单片机的数据存储器是指外部存贮器
单片机的数据存储器是指外部存贮器是对的。单片机的分为数据存储器和程序存储器。单片机内部的存储器称为片内存储器,片外扩展的存储器成为片外存储器。
G. 51单片机外部存储器怎么存程序
外部存储器一般有EPROM,ROM或者EEPROM、FLASH等。前者,一般需要用到编程器将程序烧录进去。后者,一般是具有IAP功能的单片机或者第三方单片机通过I2C(如24CXX系列)或并行接口写入存储器。