写在最前面
非常感谢社区论坛能够提供这样的一个平台,和大家一起讨论有关51单片机的内容。 鄙人并非什么大牛,只是有过一些简单的DIY经历,对单片机有了一点点非常肤浅的认识,有些甚至可能是有少许偏差。 每每在网上看到初学者绕弯钻进死胡同,便想着就自己的一点点了解,和初学者们分享(请叫我雷锋)。 林林总总玩过不少单片机,51也丢开很多年了,希望这些帖子能够温故知新、抛砖引玉,高手们可以尽情地发难,新手们可以肆意地吐槽。 最大的愿望就是,帖子结束后,老鸟们能说,没啥深度,但是勉强还算简洁易懂;新兵们能讲,看完帖子,基本上了解啥是单片机了。若能如此,也算是完成任务。 系列帖子的简介 这个系列相关的帖子立足于从未接触过单片机的新手角度,尽可能地用最通俗的语言去探讨51单片机的使用。
请注意,这里是使用。 和很多开篇就讨论内核知识、介绍各种寄存器的教材不一样,这些帖子不会刻意去讨论内核是怎么工作的,重点是如何从一个旁观者变成一个使用者,若是想驾驭一种单片机,那就不是这么简单几个帖子的阅读、几个例程的练习能够达到的境界,还是需要长年累月的积累和钻研。 编程语言考虑了很久,还是最终决定采用工科专业的通用c语言而不是接近底层的汇编语言。 为啥? 接触过一些单片机,稍微有实力些的厂家都会推出对应的C语言驱动函数库,把寄存器之类非常枯燥乏味的东西封装到最底层,大家只需要了解库函数,直接调用即可。 窃以为,厂家本意是加快开发进度,说白了,意思就是别刻意去记那些坑爹的寄存器了,别绞尽脑汁去了解内核怎么工作了,能把这块片子正常使用起来,就是胜利。 当然,如果有些童鞋单片机课程需要闭卷考试,个人建议还是老老实实去背寄存器应付考核。 阅读前的准备
会国语读写。对不起,楼主的英文或他国语言确实比较拙计,全中文忽悠。 会一点点c语言。这里一点点是什么意思,起码得知道一个可执行的c程序是什么结构吧。认为可以存在多个main函数的,要么是那种需要回去再看看c的童鞋,要么就是太流弊的高手,这些帖子您可以略过了。再一个,5条指令语句switch语句,if else语句,while语句,for语句,=赋值语句;7个运算符+,-,*,/,|,&,!;4个逻辑关系符||,&&,!=,==;3个数据类型unsigned char, unsigned int, unsigned long;3个进制相互转化,二进制,十六进制,十进制;1个void修饰词;1个一维数组code(或const) unsigned char array[];这些c语言最最基础的语句必须熟悉。至于指针、指向指针的指针、指针函数、结构体、链表等等之类,可以去死去死了。当你开始考虑需要用到更多c语言功能的时候,恭喜你,进阶了。 有一点点电路的基础。这里要求需要能够分析一些简单的电路,具备最基础的电路知识。 有一点点策略。把拿来主义发扬光大,需要配置寄存器的时候,直接在网上或者书本上参考别人现成的配置程序是上策,查找芯片数据手册是中策,死记硬背寄存器是最最下策。能把别人的代码跑起来,并了解是如何工作的,就算解决问题。 有一个快速运转的大脑。喝醉的、失恋的、要应付考试的……,各种脑活动异常的情况下,请绕道。
啥是51 首先了解啥是单片机,先从文字上理解,就是单个片子构成一个机器。 51确切来讲,属于一类体系结构,最早出现在上世纪80年代由硬件巨头Intel推出商用的MSC51。它经历了三次大跃进。 第一次跃进。Intel授权其他公司使用51结构。PHILIPS(现在叫NXP,恩智浦)得到授权,很快大量商用于家电产品,急速扩张。不过这个时候的51是不能够直接存储可执行固件的,需要外扩可编程存储器保存运行固件,很多外围功能都需要其它硬件来支持。这个时代的51,还不能算是单片机,也许只能算是一个运算单元。 第二次跃进。Flash Rom的出现。在51的架构上,集成了内部的Flash和RAM,可执行固件可以直接烧写进单片的微控制器里面。从这里看来,51单片机慢慢的有了自己的雏形。这个时代最早、最具代表性的就是艾特梅尔的89C5x系列,不过没有丰富的外设支持,譬如编程端口,89C5x系列需要*高*压*编程(印象中应该是12v的样子)来擦写内部的Flash,使用非常不方便。但是这个时期,大量的其他厂家开始制造生产51系列单片机。 第三次跃进。SOC的出现。SOC(system on chip,片上系统),其实和单片机有异曲同工之妙。简而言之,就是在一个内核的周围,加上丰富的定时器、UART、AD、IIC、SPI等等外部资源。这个时代,51内核外部集中了不少的硬件资源,尤其是对内部flash的编程,慢慢出现在系统编程ISP、在应用编程IAP,大大简化了开发工具。加上Philips、atmel、winbond、sst、stc等等厂家的发力,就出现了大量具有丰富外围硬件资源或者特点非常鲜明的51单片机。 说了这么多,其实就是一句话,51是一种内核结构,51单片机则是指具备51内核结构并集成有外部资源设备的一类微控制器。 举个和实际很贴近的例子,Andorid操作系统,大家都用过吧,免费开源,可自由定制。雷军拿来整整,就成了MIUI;老罗拿来捏捏,就变成了Smartisan OS;马云拿来和和,就变成了阿里云系统……,是不是和51单片机非常类似?So,各个厂家的51单片机特点都不一样,但是都采用了MSC51内核。
那么,咱用什么来学51呢?综合价格、开发工具要求等因素,虽然个人比较喜欢Atmel的AT89S5x系列,但是考虑到这货编程需要特定编程器,最终还是决定使用国产STC 89C52RC,编程方便,价格便宜。
OK,今天先到这。
资料转载于他站 仅供同学学习使用
|