8052 单片机 如何区别访问SFR和高128RAM呢

来源:百度知道 编辑:UC知道 时间:2024/07/03 03:09:54
地址重复呀????

在c中应该怎么定义呢??

MCS-51通过访问方式来区别物理内存位置,即使地址一样。
比如内部RAM的高128字节,如果用直接寻址,那么就是操作SFR;如果用间接寻址(MOVX @Ri,A)那么就是对RAM操作。
在C语言中,通过定义变量时加上关键字表示位置:
如unsigned char data a;表示内部RAM低128字节中定义一个无符号整数a。省略或data表示内部低128字节(用直接寻址);bdata表示在可位寻址区;idata表示内部高128字节(用MOV @Ri,A);pdata表示外部低256字节拓展RAM(用MOVX @Ri,A);xdata表示外部所有拓展RAM(用MOVX @DPTR,A);code表示ROM(用MOVC),通常用作数据表格。

unsigned char idata x[128];

如果是扩展的内存,可以通过xdata访问,如
unsigned char xdata x[N];

那是只能间接访问的RAM,这样定义
例如:
uchar idata x1,x2,x3;
uchar idata temp[64];

收藏一下!