C语言的应用.pdf

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言的应用

第九章 AVR C 语言的应用 9 1 第九章 AVR C 语言的应用 本章程序是用 IAR C 正版软件编译通过的,并可产生*.HEX 烧录文件,用其它 C 语言 编译是有差异的,不一定能通过,请用户注意这点!本章最后附几种C 语言的比较,不仿一 读 更详细资料参阅光盘文件 AVR C 语言的应用 9.1 AVR – 支持C 和高级语言编程的结构 一般高级语言 • 提高了 MCU 的重要性–缩短产品上市的时间 – 简化了维护工作,可读性好 – 轻便 – 缩短学习时间 – 可重复使用,便于移植 – 方便调用库文件 • 潜在的缺点 – 代码较大 – 执行速度慢 为什么 AVR 适宜用高级语言编程? 因为它是为高级语言而设计的! IAR 对 AVR 结构和指令集的影响 • 在结构/指令集确定之前 编译器的开发就开始了 • 潜在的瓶颈得到确认并消除 • IAR 的反馈在硬件设计上得到了反映 • 几次循环反复 • 修改后的结果从代码当中可看出来 存储器 •32 通用寄存器 – 数量多 – 直接 与ALU 连接 – 可保存变量 指针和之间结果 • 线性程序存储空间 – 1KBytes - 8MBytes – 无需页寻址 – 常数区(SPM 可修改) • 线性数据存储空间 – 16 MBytes – 无需页寻址 类似于 C 的寻址模式 C 源代码 无符号的字符*var1, *var2; *var1++ = *--var2; 第九章 AVR C 语言的应用 9 2 产生的代码 LD R16,-X ST Z+,R16 带偏移量的间接寻址 •有效访问数组和结构 •Auto (local variables)放置于软件堆栈之中 – 为适应重入的要求 高级语言都基于堆栈结构 四种指针 16 和 32 位支持 • 加法指令 – 加和减 – 寄存器之间 – 寄存器和立即数之间 – Zero 标志的传播 SUB R16,R24 SUBI R16,1 SBC R17,R25 SBCI R17,0 所有的跳转都基于最后结果 两个 16 位数相减 第九章 AVR C 语言的应用 9 3 Non-destructive comparison CP R16,R24 CPC R17,R25 CPC R18,R26 CPC R19,R27 • 带进位比较 • Zero 传播 • 无需保存结果 • 可使用所有形式的跳转 Switch 支持 • Switches 在CASE 语句中经常遇到 • Straight forward approach 效率低 • 间接跳转适合于紧凑的switch 结构 • switch 由通用库管理 摘 要 • AVR 结构从一开始就是针对高级语言设计的 • Atmel 与IAR 在结构和指令调整上的合作 第九章 AVR C 语言的应用 9 4 • 从而编译器可以产生高效的代码 AVR—高效的 C 编译器 减少代码的提示和诀窍汇编(Assembly) 与 C 比较 汇编: • 可以完全控制资源 • 在小应用当中可以产生紧凑的 高速的代码 • 在大的应用当中代码效率低 • 可读性差 Cryptic code • 不好维护 • 不易移植 Non-portable C 编译器: 对资源的控制有限 • 在小应中产生的代码量大 执行速度慢 • 在大的应用当中代码效率高 • 结构化的代码 • 容易维护 • 容易移植 访问 I/O • 读 I/O: temp = PIND; IN R16,LOW(16) • 写 I/O: TCCR0 = 0x4F;

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

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

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档