写给喜欢单片机的初学者时间:2010-03-0311:31:07来源:百度作者:今晚又是写程序,睡不着,写点东西吧,也算是自己的一个总结。首先是两个字“喜欢”!!一个东西光有10分钟的热度是不够的。从事单片机工作,就意味着你以后是和枯燥的程序、调试、乱码、未知的软硬件错误、熬夜、脸上的豆豆……联系在一起。(有点夸张,哈哈!)如果你选择了这种生活,并且确定你有一种精神能指引你一路走到底,至于是什么精神,只有你自己知道。是满屏幕的0101,还是一串串胡乱的ABCD,还是成功后的成就感,还是天生俱来的对电子类东西的痴迷,还是喜欢别人在外面花天酒地……却喜欢独坐电脑面前,攻克技术的颠峰。不需要理由,世界上就有这样一种人。那么确定了上面的之后,让我们开始吧!单片机也叫做单板机、单片微型计算机。麻雀虽小,五脏俱全,那么如果你学过计算机组成原理,我相信你应该能更好的理解单片机的内部结构。如果没有学过,也不要紧,那就拿小麻雀开刀,再一层层自下而上的学习。刚开始学单片机的时候,看到厚厚的一本书,不要一咬牙要一下子把书全部看完。看得仔仔细细明明白白。先看看目录,无非就是介绍单片机的历史,然后它内部的组成原理,然后是指令,然后就是接口。先说历史,知道51单片机是现在资料最丰富,最适合上手拿来开刀的就是了。不要觉得书上的知识老。这都N多年前的了,现在是不是都不一样了。兼容这个词的意思是:比如你用ATC51写的程序,拿到ATS51、52STC都能用,只是后续的片子在一些地方更加完善,功能更强大。比如:在书上老掉牙的2051上的MOVA,#00H用到其他51系列上也是一样的。你看它的片子的介绍上,写了一句“完全兼容51系列单片机”那么OK。别管那么多,只管用就是了。我发觉我废话多了,这不知道写到那去了。。抽跟烟,继续。。。上面的意思是说:面前是一坐山很高,然后我就一咬牙,慢慢爬吧,我不信我爬不上去了,或许爬到一半就退缩了,退而再攻之。我拿个测量仪来,噢,原来这山总共7000米,半山腰有个亭子,到那是3500米,刚开始那1000米坡度很小2000米的时候有个茅房(^_^)6000米的时候有个美女正在洗澡,山顶有个和尚庙。行,心中有了底,上!!刚开始的时候初学一定要用汇编,可能大家也看到了,关于C和汇编的讨论,各有各的说法,我个人觉得初学者,完全没有必要去追求什么飘逸的风格,就用笨拙的汇编。虽然它像一头大苯熊一样,但是,当你能和大笨熊亲切的交流,屈驾自如的时候,再去和漂亮的兔子MM鸳鸯戏水,会更加的得心应手。汇编刚开始你会觉得很烦,就是在那MOV过去MOV过来。JB、JC、JNB、JNC、DJNZ很难记,不像C一个IF一个DOWHILE就搞定的事。但是,用汇编你能更加了解一条指令在CPU内存的执行过程,能更加亲切的和P0、P1、P2、P3的每一个口线交流,不需要C的屏蔽底层,而是直接的就和底层亲密接触。这里有人要说我什么什么的了,还是那句话:个人意见,仅供参考。在写延时程序的时候,DJNZ是双周期指令,比如12M的晶振,那么,一条指令是1US,那么你要精确的知道自己这段延时程序能延时多少US或者多少MS,那么你对51单片机内部的指令、周期,对以后写有严格时序操作的程序就更加得心应手。比如,看到一个片子的PDF数据总线要拉低多少MS,地址总线要拉高多少US,等待周期要等待多少US/MS,那么,不要怀疑,自己写指令搞定它,成功以后你会发现你从最底层的了解了一个片子是怎么传送数据,怎么通信。这样的经历对你以后再接触其他子的时候是莫大的帮助。像关于书上的内容,指令不用记得那么死,或者说完全不需要记。需要的时候,马上查,在查的过程中会更加加深你的印象(说点丢人的话JCJBJNBJB这些指令我到现在都从来不记,我又不应付考试,我书随时就在旁边用的时候去翻就是了。)这也就提到了练习,程序和指令不要只看不用,实践是检验真理的唯一标准。实践出真知,这都是老话了,不过用在单片机的学习上是太贴切了,单片机本来就是实践性很强的。像我在学校的时候,每次实验课都认真的做,抓住每次上机的机会。板子很贵,自己买不现实,而上机的时候能接触到的每一次都很宝贵。LED流水灯、十字****通灯这些程序很基础。在一次一次的小程序成功的过程中,你会更加喜欢上单片机,并且坚定继续为之不离不弃的决心。熟能生巧,我还记得我刚开始的时候,经常是把指令写错,把跳转的标号写错。经常用系统的关键字,变量未定一存储空间就用等等等等。。但是一次又一次错误下来,得到的是程序的正确性的大大的提高。在这里我建议刚开始先多读别人的程序,而且是完整的,备注多的,格式规范的。从最开始就养成良好的编程风格,而不是随意的乱添乱加胡乱的复制粘贴。看懂别人程序里的每一句代码的意思,为什么要加这条,这条指令的作用是什么?如果不清楚,马上翻书去查,在查的过程中,更加加深对这条指或者这段子程序的用法的深刻的记忆。下次自己用的时候才能像自己一样的拿来得心应手,这也是为什么要选择51系列的单片机。因为它的示例代码网上铺天盖地,而且高手也不会吝啬的把初学要用的代码共享,得到这些代码的途径是很方便的。得到的有用的信息也是最多的,像1302、1602、DS18B20、LED、串口、DA/AD、常用的接口与51的驱动程序,这些五六电子网都有很多,汇编版本的、C版本的都有。不要觉得都是几年前的东西,都是人转来转去,老掉牙的东西,先都拿来消化掉,再为自己所用。大家也许也发现了,在百度里找一些程序的时候看到一版的汇编代码,但是没有一点注释,2个字:痛苦!所以,为了方便大家,也为了以后你能方便别人,刚开始写程序就要习惯,给程序写备注,为了别人能看懂像一个大的工程,都是团队合作。你几千的代码而且没有备注,别人几千的代码也没备注,那好吧,先花个1天的时间把程序看懂了,再干其他的吧。程序中像子程序名,入口参数,出口参数,内存的分配,关键语句的单条备注,标号的顶格,代码的缩进等等。良好的编程风格绝对会让你在以后的工作和学习过程中事半功倍。;-------------------------;****子程序;-------------------------next:mova,th0;//读取计数值TH0swapa;//高4位与低4位对换movr1,a;//保存到R1anltl0,#0f0h;//取TL0高4位,低4位忽略不计写了一些小程序之后,就可以做些完整的小实验,也可以参照别人的程序来写。比如写一个接口芯片的驱动,不再是点亮一个灯,又点另外一个灯。这种的完整的验证型的实验非常重要,不要希望上课的时候老师给你的程序能让你突飞猛进,只有自己不断的做实验,写程序,才能让自己学得更快。像买到的板子,都有完整的代码,这对于学习是很好的资料,因为它能所见即所得,不再是书上的纸上谈兵,那么程序是正确的,看懂了以后自己可有试着改里面的某个地方。你能找到它的核心的那几条或一段代码,那么说明你对这段程序的理解已经更上一层楼了。初学者买板子很重要,而板子上的示例代码和技术支持更重要。通过这个板子你能接触到一个平台供你学习,那么这个板子就是值的。如果板子买来了就闭门造车,那么,板子再好也不是件好事。功能特别强大的板子,没有必要去买,当你用到板子上的什么激光、摄像头的时候,我想你也已经不会再用那块板子开发东西了,基本的液晶、数码管(是个很强大的东西像我不喜欢什么软件仿真在有问题的地方设置个断点程序执行到这一步把值读出来显示到LED上简单方便)常用的51的接口有就够了,说到自己做实验板,买来的板子都有完整的电路图,对于电子基本共不扎实的朋友,买来后看懂原理图,再慢慢自己做板子好一点。买了同一种板子的能有个交流区是最好的,各个问题和程序拿出来大家交流,能起到很大的作用,也会少走很多弯路,目前这个正在筹划当中。我会尽快和站长联系,开个专区供大家交流和学习用。上面提到了基本功,这才记起。。(不好意思^_^)像搞单片机,分几种:上层的和底层的、上下通吃的。不过刚开始的都不是很复杂,我建议大家上下通吃。还是那句话,有不懂的马上查资料。电容、三级管、二级管、放大、整流、稳压、滤波、上拉/限流电阻,还有Protel99SE自己画电路图等等这些基本功,随着学习的深入,都要一点一点的累积起来,不懂不要紧,问题是不能让一个问题一直捆饶着你,要有一种精神:不搞懂它,我就不罢休的精神。那么我相信任何困难都不会成为阻止你成功的绊脚石。又说到哪来了?夜深了,瞌睡来了**单片机,要天天碰。调程序就到板子上结合着硬件环境调试,像DA/AD我刚开始学的时候那一章的内容根本都没看,直到后来要做个东西,需要AD转换,去翻了下TLC1543D的PDF,然后看了下它的时序,去网上找了下示例代码,然后写的程序。像书上的ADC0809、DAC0832我是在用了其他转换片子后,回过头去看的时候发现这片子缺陷确实太多,然后再去看它的程序和使用方法很简单。这里的意思并不是说书上的ADC0809、DAC0832不重要,而是说大家学一个东西的时候,如果能结合板子学的话或者说能马上用到,那么是最好,成效也是最快的。实践的力量确实是不能小窥的,而现在普遍的大学生的高分低能,学软件工程的,让用VB写个小程序都不会写。单片机90多分的写个LED都不会,连单片机具体什么样子都没见过,找工作的时候一大堆的奖,一大堆的废话。拿出自己做的作品,随意的和招聘的人聊各个单片机的优缺点,正确的说出每种常用的片子的用途、用法,证明自己的实际的动手能力。找工作是难,但是分人。我相信,在大学实验室里呆2年的人和在大学里谈2年恋爱的人、打2年网游、看2年小说、聊2年QQ、打2年CS的人的结果绝对是不一样的,乱七八糟的写了。很多……大家能看完不甚感激。如果有什么地方不对的,还请大家多多指正,我也是个学习者,深切的感到刚学单片机的时候的困惑。希望写下的东西,对大家能有少许的帮助。写得不好,请大家见晾了。学习单片机几个不易掌握的概念(适合初学者)时间:2010-03-0312:18:31来源:互联网作者:学习单片机几个不易掌握的概念电子爱好者开始学习单片机知识,因单片机的内容比较抽象,相对电子爱好者已熟悉的模拟电路、数字电路,单片机中有一些新的概念,这些概念非常基本以至于一般作者不屑去谈,教材自然也不会很深入地讲解这些概念,但这些内容又是学习中必须要理解的,下面就结合作者的学习、教学经验,对这些最基本概念作一说明,希望对自学者有所帮助。一、总线:我们知道,一个电路总是由元器件通过电线连接而成的,在模拟电路中,连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以微处理器为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调,所以就需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?这种情况是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)。器件的数据线也就被称为数据总线,器件所有的控制线被称为控制总线。在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,分配地址当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址总线。二、数据、地址、指令:之所以将这三者放在一起,是因为这三者的本质都是一样的──数字,或者说都是一串‘0’和‘1’组成的序列。换言之,地址、指令也都是数据。指令:由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关系,不可以由单片机的开发者更改。地址:是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由芯片设计者规定好,不可更改,外部的单元可以由单片机