《51单片机c语言实例浅析》

上传人:wm****3 文档编号:46980833 上传时间:2018-06-28 格式:PDF 页数:15 大小:296.72KB
返回 下载 相关 举报
《51单片机c语言实例浅析》_第1页
第1页 / 共15页
《51单片机c语言实例浅析》_第2页
第2页 / 共15页
《51单片机c语言实例浅析》_第3页
第3页 / 共15页
《51单片机c语言实例浅析》_第4页
第4页 / 共15页
《51单片机c语言实例浅析》_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《《51单片机c语言实例浅析》》由会员分享,可在线阅读,更多相关《《51单片机c语言实例浅析》(15页珍藏版)》请在金锄头文库上搜索。

1、 51 单片机 C 语言实例浅析 第一版 渤海三叠浪 著 前言前言前言前言 本书目的 学 C 语言和单片机将近 3 个月。写实例浅析的首要目的,就是希望将 3 个月所学进行归纳整理,并 与广大单片机学习爱好者一起分享。 谁适合阅读实例浅析 对单片机有着浓厚兴趣的初学者都适合作为实例浅析的读者。 实例浅析使用的编译器 Keil v8.02。 希望反馈 作为单片机爱好者,都知道信息反馈的重要性。因此,希望所有的读者都能够发邮件与我联系,指出在 本书中存在的错误、潜在的不足、改正的建议,以及内容中尚待挖掘的有用之处。 我的邮箱是 lch_ 渤海三叠浪 2009 年 1 月 18 日 目录目录目录目录

2、 序_ 第一章 C 语言_ 第一节 为何实例浅析选择 C 语言作为 51 单片机开发语言? 第二节 打好 C 语言基础 第三节C 总结 第二章 中断_ 第一节 中断识别方式有哪两种? 第二节 中断控制寄存器 IE 第三章 定时/计数器与串行通信接口_ 第一节 定时/计数器工作方式 1 和 2 第二节 串行通信工作方式 1 第四章 实例解析_ 第一节 要求编写时钟程序,实现下图的仿真效果 第二节 如何提高论文被杂志社录取的概率? 第三节 设计方案 第四节 编写代码 附录_ 序序序序 学习忌贪多、忌浮躁、忌急功近利、忌目中无人。把学习计划放的长一些,培养一个好的学习方法,一步 一步慢慢走,终能成为

3、高手。 第一章第一章第一章第一章 C C C C 语言语言语言语言 第一节第一节第一节第一节 为何为何为何为何实例浅析实例浅析实例浅析实例浅析选择选择选择选择 C C C C 语言作为语言作为语言作为语言作为 51515151 单片机开发语言单片机开发语言单片机开发语言单片机开发语言? 原因至少包含以下三项: (1) 用机器语言开发单片机难度很大 (2) 用汇编语言开发单片机难度不小 (3) C 编译器越来越强大 第二节第二节第二节第二节 打好打好打好打好 C C C C 语言基础语言基础语言基础语言基础 作为单片机初学者,很有必要把 C 语言的基础知识掌握牢固。如果您觉得您已经很精通 C 语

4、言,那么请 解释下面两个问题: (1)1 个变量 a 和只有 1 个元素的数组 a1有什么区别与联系? (2)定义了一个数组 a5, 而假如在程序中用到了 a9或者 a-3,为什么并不是所有的编译器都认 为这是错误的,有的编译器甚至不会给出警告? 第三节第三节第三节第三节 C C C C 总结总结总结总结 见附录。 第二章第二章第二章第二章 中断中断中断中断 第一第一第一第一节节节节 中断识别方式有哪两种中断识别方式有哪两种中断识别方式有哪两种中断识别方式有哪两种? 查询中断和向量中断。 第二节第二节第二节第二节 中断控制寄存器中断控制寄存器中断控制寄存器中断控制寄存器 IEIEIEIE IE

5、 的部分位的含义如下: EA: 允许/禁止全部中断 ES: 允许/禁止串行中断响应 ET0: 允许/禁止 Timer0 溢出中断响应 ET1: 允许/禁止 Timer1 溢出中断响应 可见,51 单片机的中断响应为两级控制。EA 为总的中断响应控制位。 第三章第三章第三章第三章 定时定时定时定时/ / / /计数器与串行通信接口计数器与串行通信接口计数器与串行通信接口计数器与串行通信接口 第一节第一节第一节第一节 定时定时定时定时/ / / /计数器工作方式计数器工作方式计数器工作方式计数器工作方式 1 1 1 1 和和和和 2 2 2 2 工作方式寄存器 TMOD _ 7 6 5 4 3 2

6、 1 0 GATE CT M1 M0 GATE CT M1 M0 _ M1 M0 0 1 定时/计数方式 1 计数范围 16 位 2 进制数 1 0 定时/计数方式 2 计数范围 8 位 2 进制数 (常用来产生串行通信波特率) _ 定时/计数器控制寄存器 TCON TR0 定时/计数器 0 启/停控制位 TR1 定时/计数器 1 启/停控制位 TF0 定时/计数器 0 溢出中断请求标志位 当主机响应中断进入中断服务程序,由内部硬件自动复位 即:TF0 = 0 TF1 定时/计数器 1 溢出中断请求标志位 当主机响应中断进入中断服务程序,由内部硬件自动复位 即:TF1 = 0 【注】 : 若令

7、 ET0 = 1; EA = 1; 则程序中一定要存在 Timer0 的中断服务程序,否则主机无法找到 Timer0 的中断服务程序,主机就会跳转到不可预知的位置且内部硬件不能自动执行 TF0 = 0。也就是说若允许某中断源响应中断,则程序中一定要存在相应的中断服务程序。 第二节第二节第二节第二节 串行通信工串行通信工串行通信工串行通信工作方式作方式作方式作方式 1 1 1 1 串行接口控制寄存器 SCON _ 7 6 5 4 3 2 1 0 SM0 SM1 SM2 REN TB8 RB8 TI RI _ REN 允许/禁止串行接收控制位 TI 发送中断请求标志位,必须用软件复位 即:TI =

8、 0 RI 接收中断请求标志位,必须用软件复位 即:RI = 0 电源控制寄存器 PCON 的最高位 SMOD 是波特率选择位。 【注】 :若允许串行中断源响应中断,则程序中一定要存在串行中断服务程序。 【注】 :若进入中断服务程序,那么要先判断是 RI = 1 还是 TI = 1 ,再进行相关操作。 当然,如果整个程序只涉及到发送或只涉及到接收,是不用做上述判断的。但是无论什么情况,做上述判断是个好习惯 【注】 :MCS-51 系列单片微型计算机及其应用(第三版) 第 115 页说: 由于接收通道内设有输入移位寄存器和 SBUF缓冲器,主机应在该帧接收结束前从 SBUF 缓冲器中将数据取走,

9、否则前一帧数据将丢失。SBUF 以并行方式送往内部数据总线。 第四章第四章第四章第四章 实例解析实例解析实例解析实例解析 第一节第一节第一节第一节 要求要求要求要求编写时钟程序编写时钟程序编写时钟程序编写时钟程序,实现下图实现下图实现下图实现下图的仿真的仿真的仿真的仿真效果效果效果效果 第二节第二节第二节第二节 如何提高如何提高如何提高如何提高论文被杂志社录取论文被杂志社录取论文被杂志社录取论文被杂志社录取的的的的概率概率概率概率? 这是来自虚拟机的设计与实现(美Bill Blunden)的一段文字(有改动): 即使某位教授发现的东西用很简单的话就能解释清楚,他也经常啰里啰嗦地写出一篇很长的论

10、文,里面 还会提到很多深奥的技术,使他的发现看起来比实际情况复杂的多。这是一种比较普遍的社会现象,因 为人们往往有这样一种思维定势:如果某个想法能够用很简单的道理解释清楚,它的重要性或独创性就 会大打折扣。要想给订阅科技刊物的人们留下深刻的印象,就必须把问题地解释隐藏在层层迷雾之中。 对想保住自己饭碗的教授来说,这无可厚非,但用 C 语言编程的单片机初学者可千万不能这样做。 简洁比性能更重要。我希望自己编写的代码更便于维护。我希望自己在一年之后还能毫不费力地对现在 的代码修改而不用找一群考古学家帮忙。 第三节第三节第三节第三节 设计方案设计方案设计方案设计方案 编写程序代码之前要做一些准备工作

11、。这里所谓的准备工作,指的就是设计方案。可以用流程图或其他 方式将设计方案得以体现。这就类似于建造一幢大楼之前,设计师要画大楼图纸。 作为一名单片机初学者,设计方案时最需要注意的问题是什么呢?本章的第二节似乎已经给出了一个很 不错的回答。 那么,现在开始设计方案吧! !当然,一定会存在多种方案,这就需要做出选择了! ! 作者选择的方案用流程图表示为: 现在开始考虑方案中的一些细节了! ! (1) 定时 1 秒的时间间隔。这个应该不难做到吧,就等同于让灯 1 秒钟闪 1 次。 (2) 更新时钟。这个就更简单了,知道时、分、秒之间的关系就能 OK。 (3) 发送时钟。这个会涉及到 ASCII 码和

12、字符之间的转换。这是因为单片机通过串口发送的数据是 ASCII 码,而在本章第一节的图中的 时钟数据是用字符显示的。 细节 OK 之后,到了编写程序代码的时候了! ! 在编写程序代码前,请先看如下一些观点: (1) 如果编写程序代码共用 10 小时,那么设计方案至少用 3 小时。 (2) 为变量和函数起个好名字是非常重要却不容易做好的事情。 (3) 一个函数只做一件事情。 (4) 每编完一个函数就要对其进行测试,而不是在整个 C 程序编完之后才进行测试。 您同意以上这些观点么? 【注】 : C 程序设计(第二版)(谭浩强)第 50 页说:字符数据以 ASCII 码存储。 【注】 :ASCII 码与字符的对应关系 ASCII 码 字符 48 0 49 1 50 2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号