当前位置:首页 > 单片机 > 单片机
[导读] 在keilC51中 基本有两种绝对寻址方式,尽量都不要使用。毕竟C51中内存地址是由软件自动设置好了的。如果不熟悉就滥用反而引起程序出现问题。 调试的程序如下:#include#include#define uchar unsigned char #defi

在keilC51中 基本有两种绝对寻址方式,尽量都不要使用。毕竟C51中内存地址是由软件自动设置好了的。如果不熟悉就滥用反而引起程序出现问题。
调试的程序如下:
#include
#include

#define uchar unsigned char
#define uint unsigned int

//#define led_on DBYTE[0x01]
idata char led_on _at_ 0x01;

void main()

{
led_on = 0x0F;
while(1)
{
P0 = led_on;
}
}
方式1: XBYTE[XXXX] :一般是用在扩展I/O的时候,比如可以用为: XBYTE[0x8000]=0x01; 对外部8000RAM单元写入0x01;;DBYTE用于单片机内部256RAM单元寻址。还有CBYTE,CWORD等等。就不尽数详说了。

方式2:【根据寻址范围使用:IDATA、 XDATA 、...】 【数据类型:char、...】 【变量名】 _at_ 【地址】
例如:idata char led_on _at_ 0x01; 即是申明为单片机内部256单元的RAM的01单元,即R1(寄存器组0);
其他的地址根据寻址范围来决定idata xdata 或者其他。

例子中的我使用的R1寄存器 在实际使用的时候不要这样用。因为它是工作寄存器,值随时可能在变!!!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭