从单片机基础到程序框架(全集 2019pdf版).pdf - 第4页
行通讯方式的基 本原理就可以 了, 剩下的只是 不同的协议而 已, 工 作时再根 据需要去看看 相关资料就可 以上 手。不管世上有 多少种通讯协 议,物理世 界上只有 这两种通讯方 式。 【2.7 很难写出短小精悍的程序?】 很难写出 短小精悍的 程序?初学 者不用纠结 于此。 很 多项目 开发, 程序容量不是刻意追求 的目标, 多一 点少一点没 关系, 不会是寸土寸金的事情 , 现在 大容量 的单片机品种 也非常多, 反而更值得 关注…
第二节:初学者的疑惑。
【2.1 单片机应用的核心技术是什么?】
单片机应用的核心技术是什么?是按键,数码管,流水灯,串口。是它们的程序框架。按键和数码管是
输入是人机界面,把它们的程序框架研究透了,以后做彩屏或者更花销的显示界面,程序框架也可以通用。
流水灯是应用程序是 APP,把它的程序框架研究透了,以后控制飞机大炮的程序框架也是一样。串口是通讯
是接口,把它的程序框架研究透了,以后搞 SPI,CAN,USB 等通讯项目时,上层的程序框架也可以通用。如
果某天你突然腰酸背痛可能是缺钙了,如果某天你第一次做项目时突然发现无从下手,你缺的可能是程序框
架。
【2.2 跟我学单片机到底是学什么?】
跟我学单片机到底是学什么?我的回答是像驾驶汽车一样驾驭单片机。我教给大家的是驾驶汽车的技术
而不是研发汽车的技术。因此每当别人问我学 51 单片机,PIC,AVR,stm32 哪个更加有前途,应该先学哪个
再学哪个时,我的回答是既然你是学驾驶技术,那么用桑塔纳车来学还是用宝马车来学有差别吗?差别很小
的,它们只是不同的厂家而已,只要会一种其它的就触类旁通了。把学单片机当作考驾照这是我常用的一个
比喻。
【2.3 单片机神奇的工作原理是什么?】
单片机神奇的工作原理是什么?初学者不用纠结这个问题,这不是我们学习的方向。考驾照只要大概知
道汽车是由四个轮,发动机,制动系统,离合器,方向盘等部分构成就够了,再深入的细节不用纠结。学单
片机只要大概知道单片机内部由运算器,寄存器,IO 口,复位电路,晶振电路等部分组成就够了,再深入的
不用纠结。说实话,我本人做单片机开发有很多年了,但是我对单片机的工作原理也很模糊,就像人为什么
能通过大脑来灵活控制双手,对于我仍然是一个迷。有这样的疑惑时咋办?我建议用“游戏规则”这个概念
去应付它。游戏规则是不需要解释的,只要遵守就可以了。在应用的技术领域,把暂时不解的东西当作游戏
规则来解读和遵守是我常用的思维方式。
【2.4 很难记住繁杂的寄存器?】
很难记住繁杂的寄存器?寄存器不用死记硬背,只要知道它大概的操作流程,有哪几类就够了。配置寄
存器时,可参考别人已经配置好的代码,这些代码都很容易通过网络或者书本获得。也可以查找芯片数据手
册,有很多单片机厂家会给出各个功能的代码范例。
【2.5 汇编语言很难学怎么办?】
汇编语言很难学怎么办?我提个建议,对于初学者,一开始就学汇编语言确实难学,不如先学 C 语言,
学会了 C 语言再学汇编,这样理解起来就容易多了。也可以把 C 语言列入必修课,汇编语言列入选修课,因
为实际工作中也是 C 语言为主。
【2.6 很难记住各种繁杂的通信协议?】
很难记住繁杂的各种通信协议?IIC,SPI,232,CAN,USB 等等。不用记那么多,你只要理解串行和并
行通讯方式的基本原理就可以了,剩下的只是不同的协议而已,工作时再根据需要去看看相关资料就可以上
手。不管世上有多少种通讯协议,物理世界上只有这两种通讯方式。
【2.7 很难写出短小精悍的程序?】
很难写出短小精悍的程序?初学者不用纠结于此。很多项目开发,程序容量不是刻意追求的目标,多一
点少一点没关系,不会是寸土寸金的事情,现在大容量的单片机品种也非常多,反而更值得关注的是程序的
运行效率,可读性和可修改性。当然,一些成本敏感的消费类电子不在此讨论范围,这类项目往往对程序容
量也要求很苛刻。

第三节:单片机最重要的一个特性。
【3.1 单片机的“一”。】
图 3.1 单片机工作的最小系统
“道生一,一生二,二生三,三生万物。”《道德经》认为,世间万物,缤纷多彩,都源自一个东西,这
个“一”的东西就是“道”。电子世界也存在“一”,这个“一”繁衍出手机,电脑,电视机,机器人等丰富
多彩的电子世界,这个“一”就是单片机最重要的一个特性:“程序下载进内存后,单片机既可以通过管脚
识别外部输入的高低电平信号,也可以通过管脚对外部输出不同时间长度的高低电平。”这句话有 5 个关键
词“程序,内存,管脚,电平,时间。”下面我详细解读每个关键词的含义,涉及到某些专用名词如果不理
解也没关系,主要是让大家有个感性的认识就足矣。
【3.2 程序。】
单片机程序有 3 种:C 程序,汇编程序,机器程序。能下载进单片机的只有机器程序,C 程序和汇编程
序都不能直接下载进单片机,所以 C 程序和汇编程序都要经过编译软件翻译成机器程序后,才能下载进单片
机。程序是语言,语言是用来交流,交流就必须存在两个对象,对象分别是程序员和单片机。程序员是人所
以用 C 或者汇编语言,单片机是机器所以用机器语言,人和机是不同的世界,两者交流就需要一个翻译家,
翻译家就是编译软件,俗称编译器,它能把 C 语言或者汇编语言翻译成单片机能识别的机器语言。机器语言
就是 0101 的代码,一般以十六进制的形式呈现。
理论上,程序员也可以抛开 C 和汇编语言,直接用机器语言做项目。我读书时老师让我们做实验就是这
么整。那时我还不知有烧录器,老师让我们先用汇编语言写好程序,然后自己充当编译器,对照汇编语言和
机器语言的指令表,人工把汇编语言翻译成十六进制的机器语言,最后把机器语言按字节一个一个的输入到
特定的实验设备来观察现象。现在回想起来,老师当时的初衷是让我们了解编程语言的本质。
既然可以直接用机器语言做项目,为什么还要 C 语言或者汇编语言?在 C 语言或者汇编语言没有诞生前,
程序员就是通过在纸带上打孔来代表 01 的机器语言,此时相当于结绳记事的原始阶段。后来人类发明了汇
编语言,通过英语单词来表示 01 机器语言特定的指令语句,此时开始诞生了汇编语言的编译器相当于进入
象形文字的阶段。再到后来人类又发明了 C 语言,通过数学符号和英语单词来表达自己的逻辑,诞生了 C 语