如题所述
51微控制器访问片内资料储存器某单元的内容用c语言怎么写?
方法1:
char data *p; 定义一个指向片内RAM地址的指标
p = 0x30; 片内RAM地址为0x30
*p = 0x12; 向0x30内写入立即数0x12
方法2:
#include <absa.h>
char x;
x = DBYTE[0x30]; 将片内RANM地址0x30的内容赋给变数x
DBYTE[0x30] = 0x12; 向0x30内写入立即数0x12
方法3:采用 _at_ 直接宣告变数所处地址,但该变数必须是全域性变数。
char data x _at_ 0x30 ; x为char型全域性变数,地址位于data区地址0x30
。。。。。
x = 0x12; 向0x30内写入立即数0x12
51微控制器访问片外资料储存器的用c怎么写?
unsigned char xdata *p=0x0650;
unsigned char mid;
读: mid=*p;
写:*p=mid;
把变数宣告成xdata 型的就可以了。
如 unsigned char xdata ab[100];
这些资料就存放在外部资料储存器了,但要求必须要真正地扩充套件了外部储存器,否则,读写资料就是错误的。不能自己骗自己吧。
MCS—51微控制器上电覆位后,片内资料储存器的内容均为
MCS—51微控制器上电覆位后,片内资料储存器的内容均为 :00H
微控制器片 内资料储存器 有多少单元
不同的微控制器具有不同的RAM单元。 有256位元组、512位元组、1K、2K,等等。
MCS-51微控制器访问外部资料储存器时,资料由什么口送出?
P0口啊,P0口先送出低8位地址,P2口送高8位地址,然后P0口再读或者写8位资料
微控制器片外资料储存器2000H-20FFH内容清零
利用R0暂存器做为回圈次数计数器,利用DPTR暂存器做为外部RAM的地址指标,通过回圈赋值实现外部RAM 2000H-20FFH 单元内容的清零。
MOV R0, #0
MOV DPTR,#2000H
CLR A
LOOP:
MOVX @DPTR, A
INC DPTR
DJNZ R0, LOOP
SJMP $
END
51微控制器程式设计, 实现片内资料储存器30H单元 与片外3000H单元资料交换。
MOV DPTR,#3000h;外部RAM地址写入DPTR
MOV A,30H;先把30H资料送到A
MOVX @DPTR,A;输出资料到3000H
MOVX A,@3000H;从3000H读入资料到A
MOV 30H,A;把资料送入内RAM 30H
;;;程式绝对没问题哦,模拟通过
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直接地址访问方式与自动分配储存空间方式最好不要混用,否则可能产生冲突。
摘自《微控制器控制装置安装与除错》下册,雷林均主编
51微控制器资料储存器最多扩充套件几位
51右侧的两组(P0,P2)I/O口为地址口,(汇编有指令支援这两组介面同时整体赋值),每一位只有0和1两个值,则16个I/O口的扩充套件位数为2^16=65536