×
单片机 > 单片机程序设计 > 详情

关于C51绝对寻址的问题

发布时间:2020-05-25 发布时间:
|

       在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寄存器 在实际使用的时候不要这样用。因为它是工作寄存器,值随时可能在变!!!

关键字:C51  绝对寻址 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
如何为单片机选择合适的负载电容