- 1、本文档共59页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统的C语言
嵌入式系统的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函数
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 大小
赋值符
= 相等赋值 += 加等于 -= 减等于 *= 乘等于 /= 除等于 %= 求余等于
= 左移位等于 =右移位等于 =按位与等于 ^= 按位异或等于
|= 按位或等于
位操作
位与 ^ 位异或 |
您可能关注的文档
- 山西省现代装备制造业发展.doc
- 山西省太原市五中2015届高三阶段检测(二模)理综试卷.doc
- 岗位职责编制管理规程.doc
- 岑参边塞诗的内容.docx
- 岛津制备色谱仪标准操作规程-.docx
- 岗位危险源辨识编制说明.doc
- 岩体力学复习题(填空选择).docx
- 岩体力学总结.doc
- 岩体爆破漏斗试验研究.doc
- 岩体复习提纲.doc
- [中央]2023年中国电子学会招聘应届生笔试历年参考题库附带答案详解.docx
- [吉安]2023年江西吉安市青原区总工会招聘协理员笔试历年参考题库附带答案详解.docx
- [中央]中华预防医学会科普信息部工作人员招聘笔试历年参考题库附带答案详解.docx
- [保定]河北保定市第二医院招聘工作人员49人笔试历年参考题库附带答案详解.docx
- [南通]江苏南通市崇川区人民法院招聘专职人民调解员10人笔试历年参考题库附带答案详解.docx
- [厦门]2023年福建厦门市机关事务管理局非在编工作人员招聘笔试历年参考题库附带答案详解.docx
- [三明]2023年福建三明市尤溪县招聘小学幼儿园新任教师79人笔试历年参考题库附带答案详解.docx
- [哈尔滨]2023年黑龙江哈尔滨市木兰县调配事业单位工作人员笔试历年参考题库附带答案详解.docx
- [上海]2023年上海市气象局所属事业单位招聘笔试历年参考题库附带答案详解.docx
- [台州]2023年浙江台州椒江区招聘中小学教师40人笔试历年参考题库附带答案详解.docx
最近下载
- 广州城中村拆除方案.docx
- 【高中数学竞赛真题•强基计划真题考前适应性训练】 专题07 解析几何 真题专项训练(全国竞赛+强基计划专用)原卷版.docx VIP
- 木香化滞汤_嵩崖尊生卷七_方剂加减变化汇总.doc
- 2022年军队文职人员招聘(教育学)考试题库(完整版)-简答题库.docx
- 《老年人心理护理》ppt课件.pptx VIP
- 【高中数学竞赛真题•强基计划真题考前适应性训练】 专题16 其他竞赛综合 真题专项训练(全国竞赛+强基计划专用)解析版.docx VIP
- 统编版四年级下册语文1古诗词三首《四时田园杂兴》课件.pptx
- 【高中数学竞赛真题•强基计划真题考前适应性训练】 专题15 导数与极限 真题专项训练(全国竞赛+强基计划专用)解析版.docx VIP
- 《编钟的历史》课件.pptx
- 地震安全性评价管理条例.docx VIP
文档评论(0)