第4章80C51单片机C语言程序设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章80C51单片机C语言程序设计

4.2.3 利用指针进行绝对地址访问 #define DBYTE ((unsigned char volatile data *)0) #define PBYTE ((unsigned char volatile pdata *)0) #define XBYTE ((unsigned char volatile xdata *)0) #define CBYTE ((unsigned char volatile code *)0) 指针类型- unsigned char 存储区域- data bdata idata pdata xdata code 绝对地址- 0 上述宏定义的含义-将0值转化为具有指定存储区域无符号 字符类型变量的指针,并且此变量位于指定存储区域的起始 位置。 4.2.3 利用指针进行绝对地址访问 DBYTE[0]=0x55 ? *(DBYTE+0) = 0x55; DBYTE[4]=0x55 ? *(DBYTE+4) = 0x55; 执行操作-使用地址指针并通过数组下标来实现data存储 区的指定存储位置(下标为偏移地址)的单字节写操作。 XBYTE[0]=0x55 ? *(XBYTE+0) = 0x55; XBYTE[4]=0x55 ? *(XBYTE+4) = 0x55; 执行操作-使用地址指针并通过数组下标来实现xdata存 储区的指定存储位置(下标为偏移地址)的单字节写操作。 4.2.3 利用指针进行绝对地址访问 #define DWORD ((unsigned int volatile data *)0) #define PWORD ((unsigned int volatile pdata *)0) #define XWORD ((unsigned int volatile xdata *)0) #define CWORD ((unsigned int volatile code *)0) 指针类型- unsigned int 存储区域- data, pdata, xdata, code 绝对地址- 0 上述宏定义的含义-将0值转化为具有指定存储区域无符号 整数类型变量的指针,并且此变量位于指定存储区域的起始 位置。 4.2.3 利用指针进行绝对地址访问 DWORD[0]=0x3355 ? *(DWORD+0) = 0x3355; DWORD[4]=0x3355 ? *(DWORD+4) = 0x3355; 执行操作-使用地址指针并通过数组下标来实现data存储 区的指定存储位置(下标为偏移地址)的双字节写操作。 XWORD [0]=0x3355 ? *(XWORD+0) = 0x3355; XWORD [4]=0x3355 ? *(XWORD+4) = 0x3355; 执行操作-使用地址指针并通过数组下标来实现xdata存 储区的指定存储位置(下标为偏移地址)的双字节写操作。 4.2.3 利用指针进行绝对地址访问 pdata:片外RAM,256字节,分页间址访问。 MOVX A, @R0- 读片外RAM,最大寻址256字节。 MOVX @R0,A - 写片外RAM,最大寻址256字节 在Startup.A51中与pdata有关的伪指令代码: PPAGEENABLE EQU 0 : 为1时可使用pdata变量。 PPAGE EQU 0 : 指定当前页的页号。 PDATASTART EQU 0H: 指定pdata存储区的起始地址。 PDATALEN EQU 0H : 指定pdata存储区的长度(字节)。 大多数芯片将pdata存储区定义为xdata区的低256字节,C51 对于pdata存储区的使用存在一些问题,不推荐使用 4.2.3 利用指针进行绝对地址访问 P0寄存器地址为90H即144(9×16),可否使用指针进行 读写操作(比如一下所使用的形式访问P0寄存器)? DBYTE[144]=0x55 或 *(DBYTE+144)=0x55; 指针的存储区域:data bdata idata pdata xdata code bdata:片内RAM,位寻址区,直接地址访问。 data :片内RAM,128字节,直接地址访问。 idata :片内RAM,256字节,间接地址访问。 pdata:片外RAM,256字节,分页间址访问。 xdata:片外RAM,64K字节,间接地址访问。 code :片内或片外ROM,64K字节,间接地址访问。 4.2.3 利用指针进行绝对地址访问 对于SFR寄存器的访问,比如端口寄存器P0,P1等。 应使用sfr或sfr16类型定义,比如: sfr P0 = 0x90; 上述等号表示定

文档评论(0)

wyjy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档