AT89c52先向6264中写入整数1-200
//先向6264中写入整数1-200,然后将其逆向复制到0x0100
//添加了头文件absacc.h,这样可非常方便地通过XBYTE[index]读/写扩展内存,整个扩展内存可看
//成一个庞大的字节数组,XBYTE就是这个字节数组的数组名称,或者是整个空间的首字节地址,
//index 则是数组索引或指针偏移值。
通过网盘分享的文件:6264
链接: https://pan.baidu.com/s/1nNtPiS5zG2ZALsi-AhWH9g 提取码: j6ad
#include<reg52.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED=P1^0;
//主程序
void main()
{
uint i;
LED=1;
//AT89C52向6264的0x0000地址开始写入1-200
for(i=0;i<200;i++)
XBYTE[i]=i+1;
//将6264中的1-200逆向拷贝到0X0100开始处
for(i=0;i<200;i++)
XBYTE[i+0x0100]=XBYTE[199-i];
LED=0;
while(1);
}
//两个 for循环执行完成后,LED会点亮,本例用它来表示数据读/写已经完成,如果要查看
//6264芯片内的数据,可在LED点亮时单击“Pause”按暂停,然后单击测试单,打开Memory Contents U4
//内存内容,即可看到显示窗口中显示的内存数据。

/*
CBYTE、DBYTE、PBYTE和XBYTE的区别
注意:以下存储地址范围均指理论上可访问的最大范围,具体操作时需根据存储器大小调整
从存储器类型的区别中可以得出本节四者的区别:
CBYTE
CBYTE 是用于访问代码存储器的,即ROM部分。
rval = CBYTE[adress]; 访问到代码存储器中的内容
其中代码存储器地址(adress)范围是 0X0000--0xFFFF ,大小为16K。
DBYTE
DBYTE 是用于访问片内数据存储器的,即片内RAM部分,
DBYTE[adress] = 0XFB; //写数据
rval = DBYTE[adress]; //读数据
其中片内存储器地址(adress)范围是 0x00--0xFF ,大小为256byte。
XBYTE
XBYTE 是用于访问片外数据存储器的,即片外RAM部分,但是XBYTE只能读数据不能写数据到片外RAM。
rval =XBYTE[adress]; //读数据
片外数据存储器的写可以使用下面这条语句:
char xdata x1 _at_ 0x30 ; //x1为char型全局变量,地址位于xdata区地址0x30
x1 = 0x01; //给片外存储器地址赋值
地址范围为 0x0000--0xFFFF,大小为16K。
PBYTE
PBYTE也用来访问扩展ram,但只能访问开始的256字节。
*/








最新发布