前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >初学单片机的误区

初学单片机的误区

作者头像
单片机技术宅
发布2020-03-17 10:19:48
6370
发布2020-03-17 10:19:48
举报
文章被收录于专栏:初学单片机初学单片机

(1)很难记住繁杂的寄存器

寄存器不用全部记住,更不能死记硬背,小代玩单片机多年,还是只记住了最常用的几个寄存器的名称,具体的位设置的什么,还是没记住。在编程时需要配置寄存器的时候,可以上网找,或者书上找别人配置的程序,稍加修改,再或者查找芯片数据手册,查看相关的寄存器的说明。死记硬背寄存器是最最下策的。每种单片机有几十上百个的寄存器,学的单片机系列多了,你记得了那么多来吗?

(2)学单片机是用汇编语言还是C语言

除非是在校学生应付考试或者少数工作中绕不开汇编,否则学汇编就是浪费时间。汇编语言的效率高,代码编译后小。汇编是直接操作硬件的,也就是直接操作单片机的寄存器,着就回到第一个问题上,记住寄存器的问题。汇编语言编程,你还得记住寄存器的物理地址。C语言在编程时候简单,容易移植,容易看懂。再说现在大学生,谁不会C语言啊。特别是在写算法的程序段,C语言简单快捷。缺点就是编译的代码效率不高,代码大,但是现在的单片机的主频和内存越来越大。根本没必要去考虑这些问题,单片机资源足够你用。小代一开始也学过汇编,也写过代码,毕业设计时候写的汇编有N多页A4纸,就实现了LCD的驱动和测温等一些简单的操作。还用笔记下用到的寄存器,如果重复用到,那就麻烦了。调试时候会要命的。所以,在此小代还是推荐大家学习C语言,小代也是一直用C语言做项目。你一点汇编都不会根本无所谓,但你一点 C 语言都不会那你将来会吃苦头。汇编写程序代码效率高,但相对难度较大,而且很罗嗦,尤其是遇到算法方面的问题时,根本是麻烦的不得了。

(3)C语言很难学

上面推荐了C语言,大家又会说C好难学啊, C语言的课程我都挂科了。这里小代说的C语言,特指单片机的C语言,和标准C语言有很大的差别。单片机的C语言,简单、实用。跟着小代走,包你不超过两节课就会C语言编程。你不用学指针,你不用学带形参的函数,你不用学结构体,你不用学宏定义,你不用学文件操作,你也不用死记繁琐的数据类型。你只要会以下5点:

1、5条指令语句:switch语句,if 语句,while语句,for语句,=赋值语句。

2、7个运算符:+, -, *, /, |, &, !(加 减 乘 除 或 与 非)

3、4个逻辑关系符:||, &&, !=, ==(或 与 不等 等于)

4、3个数据类型unsigned char, unsigned int, unsigned long(ps:不常用)

5、3个进制相互转化,二进制,十六进制,十进制。(ps:不会也没事,可以用计算器)

那么单片机C语言你可以运用自如了。

小代学习C语言,其实就跟老师上了一节课,以后就是自学,通过多年的学习实践经验,总结出以上几点,学会以上几点基础,玩遍单片机你都不会怕。自己从最简单的程序写起,慢慢的到现在,自己做项目。一开始只用if语句和for语句就把项目做出来了,没有用指针,没有用带形参的函数等复杂的功能。再到后来才慢慢开始用C语言其他的高级功能,但是我发现C语言其他的高级功能,本质上都是用我前面列举出来的最基本功能集合而成,只是书写更加简单方便了一点,编译后的机器码都大同小异。所以不会指针不会数组等高级功能你不用自卑,恰恰相反,当你会最简单的几个语句,就把这些高级功能的程序都做出来了,你才发现你对底层了解得更加透切,再学那些高级功能轻而易举。当你裸机跑的程序都能够协调得很好的时候,你才发现所谓高深的操作系统也不过如此,只要给你时间和金钱你也可以写个操作系统来玩玩。

(4)不会计算时间,计算公式不会用

经常看到时间公式等于晶振,时钟周期,指令周期和执行指令次数他们之间的乘除关系式。C语言编程,你写的一句代码,在编译后可以会编译为好多句,这样我们怎么算呢。所以不用纠结也不用去记,也没必要会算,大概了解一下就可以了。到后面需要用到计算的地方,小代会在视频中详细讲解。不管你对公式掌握得有多精确,你都不可能做出非常精确的时间。晶振也好,单片机也罢,在制造的时候和在运行的时候都会存在误差,不是说我用的24M的晶振,它就肯定必须是24M,这在现在的制造业还不能实现,我想什么时候也不可能实现。这个晶振频率可以在以后我们下载程序的时候,下载软件会自动测量,到时我们再说。想用单片机做一个非常精确的时间这种想法一开始就是错的,不可能的。真想做一个比较精确的时间,比如电子时钟,我们的测试例程中有。应该用外围的时钟芯片,而不是只是单片机。

(5)很难记住繁杂的各种通信协议

什么IIC,SPI,232串口通讯,CAN,USB等等。这些都是浮云,你不用记那么多,你只要理解两种通讯方式就够了,那就是串行通讯方式和并行通讯方式。不管世界上有多少种通讯协议,物理世界上只有这两种通讯方式,其他各种名称的通讯协议都基于此两种方式演变而来。

(6)很难写短小精悍的程序

初学者不要纠结于此。做项目开发,程序容量不是刻意追求的目标,程序多一点少一点没关系,现在大容量的单片机品种非常多,容量不会是寸土寸金的事情,我们更加要关注程序的运行效率,可读性和可修改性。

(7)很难选出适合自己的51单片机学习板

市场上各种学习板子非常繁多,小代可以负责人的说没有一块是适合初学者的。简单说几点原因,《1》单片机老套,某宝上还在清一色的STC89系列的单片机开发板,很便宜,为什么,这芯片STC官方都放弃的了,现在卖的都是库存,只要能出货,就是赚钱,所以很便宜,便宜到你无法想象。《2》开发板的所有接口,所有电路都是在PCB板子上连接好的了,使用者不需要连任何线(下载线除外),这样一来,对电路知识就一无所知,要知道,学单片机是需要硬件和软件结合的,运用也是这样。《3》其实算是第二的延伸,所有的教程都不会教你电路知识,这样一来学完的结果就是在他开发板上,什么都会(还有一各原因是有例程),出了开发板,要自己做个小东西,就懵逼了,连要什么元件都不知道。《4》教程里编程的不规范,一味追求精简,高效率,要知道,对初学者来说,会自己写才是硬道理,会自己写了,那就会自己设计,那才能谈效率个精简。

STC官方都出到STC15系列,STC8系列(后续肯定是STC32系列了)了,那我们还在学官方放弃的89系列,你说有意义吗?不要贪图一时的便宜,你现在省下了几十块上百块钱,最后工作了老板回省下上千元你的工资,不要问毕业了能拿多少钱一个元,首先要问问自己一个月能问老板赚多少钱?

官方论坛已经上线,欢迎投稿拿红包www.mcuhouse.com(复制到地址栏打开)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 单片机技术宅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档