初学单片机的误区

2020-03-17 10:19:48 浏览数 (1)

(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(复制到地址栏打开)

0 人点赞