嵌入式系统的C语言5.docVIP

  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文档。上传文档
查看更多
嵌入式系统的C语言5 这构成了I/O寄存器,这种情况下,Port A为地址0x0000处字符型变量。#define实际做的是每次发现PortA时放置一个构件。也就是说在代码中写:PortA = 0x3F,实际做的就是告诉编译器0x0000是一个volatile-unsigned-char类型的指针,它的内容等于0x3F。 糊涂吗?有点…让我们看一些其它选择: 这样做的一个容易的方法是在变量声明中使用符号“@”,创建一个语句读作:在地址0x0000处创建一个volatile-unsigned-char型的变量PortA。 这是一个编译器特定的语法,它可读性高,但失去了兼容性。无论什么时候我们决定使用一个不同的编译器去编译该代码,也许会发现@不被识别。CodeWarrior和Cosmic包含了这个特殊语法。 CPU中的寄存器没有内存映射;指令集包含允许它们自修改的子集;C不提供直接访问寄存器的工具;C编译器允许在C代码中使用汇编指令,如: 1)_asm AssemblyInstuction; 2)asm (AssemblyInstruction); 3)asm { ---- ---- } 3.3 位域 在嵌入系统中,在一个给定的地址,一次能访问和修改一位或几位。 0 0 0 0 1 0 0 完成这个任务,在C语言中有不同的方法达到和实现。 *位结构: 效率随编译器的不同而改变;跨编译器和目标不能移植。 *位类型: 不能移植(标准C语言中没有);如 当使用时可提高代码的效率。 *移位和掩模 可移植,适当的效率;经常优化为位操作。 如果定义一个结构,但所有变量重叠在同一内存的开始位置,你应该使用联合体。联合体允许引用在联合体中定义的以任何形式描述的数据字节。联合体在内存中的尺寸大小为联合体中所列的最大类型的大小。点操作符用于选择需要的成员。 打开文件:Lab2-BitFields.mcp 修改CPU 中CCR的I位的内容。 使用汇编指示,I位被修改。 $0020 1 联合体是一个变量,不同的时间持有对象不同的类型和大小,编译器跟踪变量的大小和决定需要。

文档评论(0)

38号店铺 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档