一位有15年经验的老司机教你学习单片机。2018年1月1日意味着我有15年的单片机经验。我必须在21IC最热门的部分写一篇文章来纪念它。

从2003年开始学习MCU,从公司到研究所,从研究所到学校,我真的没有离开过它。对于有经验的工程师,可以忽略以下内容。

打开网易新闻 查看更多图片

#原创作者专属任务#不过,对于初学者,您可以看看。在我学习单片机的时代,只有一台单片机和一台51单片机。别无选择。现在,有51核系列MCU、MSP430单片机、CC2530 MCU、ContexM0系列MCU、STM8 MCU、台湾和泰、华邦、艺龙甚至国内 MCU这不包括arm、ContexM3、STM32这些32位嵌入式产品。

面对这么多的选择,你如何开始?在我的学生中,许多人认为8位计算机太简单了。他们已经准备好开始学习嵌入式、arm和Linux。在他们看来,能够使用MCU并不等于嵌入式。事实上,这是两个概念,如果你能使用单片机,是否等于你能使用单片机?不,离这里很远。无论是8位机器还是32位机器,它都只是您解决问题的工具。

许多人可以使用C语言,但有多少人可以使用C语言来编写Linux和uCOS?因此,初学者的态度非常重要。哪个单片机不重要。只要你精通其中一家公司,将来使用其他公司是轻而易举的事。然后,您可以轻松地学习32位处理器。

否则,每个单片机将始终处于入门级状态。当然,事情不会那么简单。首先,你应该读这本书,然后再读这本书,最后把这本书放在你的脑海中,形成你自己的一套想法。要理解任何事情,你最好掌握它的本质。对于所有类型的嵌入式微处理器产品,基本上下文可以在一页中清楚地解释。这太神奇了,呃,我自己也总结了一下。

您可以看一下并更正它。8位和32位计算机都可以看作是“内核+外设”的结构。由于外围设备多,单片机更复杂,总线位更高,运算速度更快。从本质上讲,这种架构是无法逃避的。对于设计者编程来说,操作外设实际上是读写各种特殊功能寄存器,传输数据是读写总线,相应的外设是处理中断。

打开网易新闻 查看更多图片

除了这三次行动之外,似乎没有别的了。当然,对于不同的外设,它们的特殊功能寄存器有不同的定义,中断向量有不同,操作过程也不同,但本质上,它们仍然在操作寄存器、总线和中断。有些人不同意并说,不,肯定还有别的原因。当然有,但对于初学者来说,不要操练号角,掌握一般和大部分的东西,慢慢学习少数技能。

说了这么多,我实际上想告诉初学者,引入嵌入式或单片机真的不难,但并不容易。你需要采取一种态度。我经常对我的学生说:“单片机或者嵌入式这东西是入门难,到经验积累到一定程度就比较容易了。

1。最好从8位单片机开始,选择型号,努力学习,掌握它。

2、多练习,多写代码,上网,多读博客。当然,你应该有一个学习板。

3、掌握简单常用的模拟电路和数字电路,如电阻限流、电容滤波、运算放大器放大等,以后在设计电路和调试程序时使用。

4、精通C语言,尤其是指针和数组,最好了解预处理和编译过程。

5、掌握电路设计软件。事实上,Protell99可用于单片机。

6、能使用万用表,最好是示波器,并掌握一些常用的测试方法。

7、在自己的学习过程中,整理形成自己的组件库和通用程序库,这是你下一阶段成为大师的关键。

8、查看各种单片机机箱,掌握各种常用芯片的使用。嵌入是一个逐步积累的过程。您的嵌入式技术有多高取决于您考虑了多少案例和资源。

目前,各种功能都有模块或专用芯片,还提供ur、SPI、IIC等接口。表面上看,你是在用单片机实现蓝牙。实际上,您只使用MCU串行端口来读写数据。如果元件电路模块是硬件资源的积累,那么公共接口模块驱动程序就是软件资源的积累。

将来,您的产品设计中可能会使用许多新的模块和组件。只要它的接口是SPI接口、IIC接口、ur串口和其他熟悉的接口,它对您来说就是一个旧的模块和组件。因为MCU实际上面向的不是模块和组件,而是您熟悉的通用接口。

最好有做笔记的习惯。你也可以写博客。这将在以后产生意外的影响。不要认为51单片机是高科技产品,请把它当作玩具。你不是在学习发展,你在玩“极品飞车”。学习会让懒惰的人痛苦,而玩耍会让懒惰的人快乐。没有快乐的心情。

关于学好,我们还能谈些什么?经典51单片机有什么特点?一幅图片可以告诉您P0端口:PC门,集电极开路输出,必须连接上拉电阻器以输出高电平五个中断源:两个外部中断,两个定时/计数中断和一个串行通信中断。注意:记住中断号和中断源编程之间的对应关系将使用三个特殊功能寄存器:TCON、SCON和TMOD。

无论是简单的微处理器还是复杂的微处理器,其基本架构都是“内核+外设”,控制外围设备的重要方式是特殊功能寄存器。作为嵌入式设计器,如果您进行底层程序开发,您的大部分工作都是处理各种特殊功能寄存器。51单片机外围设备较少,可分为三个模块:中断系统、定时/计数器和串行接口。

如果要很好地应用这些外围设备,必须首先了解控制这些外围设备的特殊功能寄存器。事实上,数量不多,只有以下几个:ie寄存器:中断控制寄存器。Ip寄存器:中断优先级寄存器。Tcon寄存器:中断状态标志寄存器。TMOD寄存器:定时/技术模式控制寄存器。Thx和TLx寄存器:定时/计数器寄存器的技术初始值。

SCON寄存器:串行端口控制寄存器。SBUF寄存器:串行接口接收发送和接收缓冲区Ie寄存器和ip寄存器(IP使用不多)在单片机程序设计中,经常需要操作特殊功能寄存器,而这些寄存器实际上是芯片中的内存地址。这些地址很难记住,编码也很复杂。为了便于记忆和使用,我们为每个特殊函数命名寄存器。

打开网易新闻 查看更多图片

如果要在编程中直接使用这些名称,则需要导入相应的芯片头文件,如51单片机,并且需要导入“reg52.h”文件。特殊函数寄存器P0的地址为80h。引入此头文件后,可以使用名称P0。51单片机中有五个中断源,每个中断源都有一个固定的输入地址(即中断向量)和中断号。

在编程过程中,我们不需要记住中断向量地址,但我们需要知道每个中断源对应的中断号(参考[经典51懒惰5步速度成型方法-01])。通常,有两种中断处理功能,一种是中断初始化功能,另一种是中断服务功能。

初始化函数是一个普通函数,但中断服务函数有特殊的格式要求:a.中断函数没有返回值,不能获取参数。B、 函数名称后面应该跟有关键字interrupt,表示这是一个中断服务函数。C、 关键字interrupt后跟中断号,表示中断服务功能为该中断提供服务。中断服务函数的格式为:void function name(中断中断号)。

例如,定时器0中断服务功能,我们可以编写C语言如下:在51核MCU中,有三个外围设备:外部中断、定时计数和串行通信。在其他嵌入式芯片中,这三个外围设备也是必不可少的。三个外围设备的程序设计实际上已经成为51单片机最基本的核心。掌握这三部分的设计思想是学习单片机发展的必由之路。

在编写这三个外围设备的程序时有许多相似之处。它们都需要初始寄存器配置,即初始化。它们都与中断相关,都需要编写中断服务函数。因此,对于每个外设,我们需要编写一个初始化函数和中断服务函数。

这些功能在不同的应用程序项目中几乎相同,也就是说,代码是高度可重用的。1、外部中断模块在51单片机中有两个中断模块INT0和INT1。外部触发信号可以是电平或边沿,由寄存器tcon的it0和it1位确定。51单片机中有两个定时器,t0和T1,可以在内部计时,也可以在外部计数。

初始化过程中,需要确定模块是定时功能还是技术功能,工作模式是什么,最大计数值是多少。在51单片机的串行接口中,生成波特率需要占用定时器T1。发送数据时,将内容放入SBUF。发送数据后,ti将设置为1。当完全接收到数据时,RI将设置为1,然后可以从SBUF中读取内容。Ti和RI标志位都需要手动清除

好了,这期分享就到这里啦,觉得对屏幕前的你有帮助的麻烦一键三连,点赞收藏加关注哦,有问题的朋友也可以在评论区评论,或者私信我,尽量帮大家解决朋友们提出的问题,谢谢大家,码字不容易,谢谢大家啦!!拜拜~