嵌入式系统的C语言.docVIP

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式系统的C语言 译自《C for Embedded Systems》讲稿 刘永重 译 一、C语言基础 1、什么是C? ‘C’程序语言最初是由Dennis Ritchie在1971年为UNIX系统开发并实现的。C的一个最大优点是与任何特定的硬件或系统无关。这使得一个用户写的程序不作任何修改就能运行在几乎所有的机器上。 C通常被称为中级计算机语言,因为它将高级语言的要素与汇编语言的功能结合了在一起。 2、为什么用C? C非常灵活,而且可随心所欲。这种自由赋予C非常强大的功能,有经验的用户可以掌握;C是一个相对小的语言,但是它经久耐用;C有时被认为是“高级汇编语言”;低级(位操作)编程也容易实现;松类型(不象其它高级语言);C是结构化编程语言;C允许你创建你脑海中已有的任何任务。 C保留了程序员知道正在做的事情的基本体系;它只需要他们明白地表达其意图。 3、为什么不用C?文化的问题… 当考虑转到C语言时,我们会遇到一些共同的问题: 产生大而低效的代码;标准IO程序的雍余代码(printf,scanf,strcpy等);存贮器定位的使用:malloc(),alloc()…;堆栈的使用,在C中不很直接;在RAM和ROM中数据的声明;难于写中断服务程序。 4、8位微控制器的ANSI C 对于嵌入式系统,纯粹的ANSI C并不方便,因为: 嵌入式系统与硬件打交道。ANSI C 提供的在固定存贮空间用寄存器寻址的工具非常拙劣;几乎所有的嵌入式系统使用中断;ANSI C有各种类型的促进规则,对8位机来说绝对是性能杀手;一些微控制器结构没有硬件支持C堆栈;很多微控制器有多个存贮空间。 5、打破一些C范例 当在低端的8位微控制器上用C语言,应想法使代码变小。这意味着打破一些编程规则: 开/关全局中断;使用GOTO语句;全局标号;全局寄存器段;指针支持。 6、嵌入式与桌面编程 嵌入式编程环境的主要特点: 有限的RAM;有限的ROM;有限的栈空间;面向硬件编程;严格的定时(ISR,任务,…);很多不同种类的指针(far/near/rom/uni/paged/…);特殊关键字/标识符(@,interrupt,tiny,…)。 7、汇编与C 编译器只是一个能干的优秀汇编程序员。 写能够转换为高效率汇编代码的好的C代码,比手工写高效率的汇编代码容易得多。 C是终极解决办法,但其本身并未终结。 8、为什么改用C? 有很多原因用C语言而不用汇编: C使我们提高效益;用C写的代码更可靠;C代码更容易升级和扩展;不同平台之间更容易迁移;代码容易维护;文档、书籍、第三方库和程序都可得到。 9、C代码结构 如下图所示,一个C程序基本由以下部分组成: 预处理命令、类型定义、函数原型(声明传给函数的函数类型和变量)、变量和函数。 一个程序必须有一个main()函数,每个命令行必须用分号(;)结束。 10、C函数 一个函数的结构如下: 一个函数的结构如下: 类型 函数名(参数) { 本地变量 C语句 } 11、C关键字 1)数据类型 char short signed unsigned int float long double 修饰符 const static volatile restrict 3)标识符 struct union void enum 选择体 if else switch case default 存贮指定 register typedef auto extern 6)循环体 do while for 7)跳转 goto continue break return 8)功能指定 inline 预处理指示 #include #define #undef #line #error #pragma 10)条件编译 # if # ifdef # ifndef # elif # else # endif 12、C操作符 1)基本表达式和后缀操作符 ( ) 子表达式和函数调用 [ ] 数组下标 - 结构指针 .结构成员 ++ 增加(后缀) -- 减少(后缀) 一元操作符 ! 逻辑非 ~ 取补 ++ 增加(前缀) -- 减少(后缀) - 一元减 + 一元加 (类型) 类型强制 * 间接指针 取地址 sizeof 大小 赋值符 = 相等赋值 += 加等于 -= 减等于 *= 乘等于 /= 除等于 %= 求余等于 = 左移位等于 =右移位等于 =按位与等于

文档评论(0)

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

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

1亿VIP精品文档

相关文档