51单片机计数器接收或者发送数据为什么要打开计数器

技术小站:
地点:西安
时间:11月16日 14:00 - 17:00
地点:东莞
时间:11月9日 14:00 - 17:00
地点:深圳
时间:11月8日 13:00 - 17:30
地点:深圳
时间:11月2日 14:00 - 17:00
张飞电子工程师第一部
高速PCB设计指南进阶培训
韦东山linux驱动开发学习
了解RTOS操作系统开发流程
张飞硬件开发全套视频
讲师:孟瑞生
讲师:林超文
讲师:李述铜
讲师:郑振宇
移入鼠标可放大二维码
51单片机计数器与定时器的区别
来源:网络 作者:佚名日 15:21
[导读] 在51单片机的学习过程中,我们经常会发现中断、计数器/定时器、串口是学习单片机的难点,对于初学者来说,这几部分的内容很难理解。在这几部分内容中,计数器/定时器对于初学者说很容易搞混淆,下面我将对这方面的内容结合自己的学习经验谈几点看法。
  在51单片机的学习过程中,我们经常会发现中断、计数器/定时器、串口是学习单片机的难点,对于初学者来说,这几部分的内容很难理解。但是我个人觉得这几部分内容是单片机学习的重点,如果在一个学期的课堂学习或者自学中没有理解这几部分内容,那就等于还没有掌握51单片机,那更谈不上单片机的开发了,我们都知道在成品的单片机项目中,有很多是以这几部分为理论基础的,万年历是以定时器为主的,报警器是以中断为主的,联机通讯是以串口为主的。
  在这几部分内容中,计数器/定时器对于初学者说很容易搞混淆,下面我将对这方面的内容结合自己的学习经验谈几点看法。
  计数器和定时器的本质是相同的,他们都是对单片机中产生的脉冲进行计数,只不过计数器是单片机外部触发的脉冲,定时器是单片机内部在晶振的触发下产生的脉冲。当他们的脉冲间隔相同的时候,计数器和定时器就是一个概念。
  在定时器和计数器中都有一个溢出的概念,那什么是溢出了。呵呵,我们可以从一个生活小常识得到答案,当一个碗放在水龙头下接水的时候,过了一会儿,碗的水满了,就发生溢出。同样的道理,假设水龙头的水是一滴滴的往碗里滴,那么总有一滴水是导致碗中的水溢出的。在碗中溢出的水就浪费了,但是在单片机的定时计数器中溢出将导致一次中断,至于什么是中断我们下次再讲,这里只是初步的提下概念,中断就是能够打断系统正常运行,而去运行中断服务程序的过程,当服务程序运行完以后又自动回到被打断的地方继续运行。
  在定时器计数器中,我们有个概念叫容量,就是最大计数量。方式0是2的13次方,方式1是2的13次方,方式2是2的8次方,方式3是2的8次方。把水滴比喻成脉冲,那么导致碗中水溢出的最后一滴水的就是定时计数器的溢出的最后一个脉冲。
  在各种单片机书本中,在介绍定时计数器时都讲到一个计数初值,那什么是计数初值呢?在这里我们还是假设水滴碗。假设第一百滴水能够使碗中的水溢出,我们就知道这个碗的容量是100。问题1,我如何才能使碗接到10滴水就溢出呢?呵呵,我可以想象,如果拿一个空碗去接水,那么还是得要100滴水才能溢出,但是如果我们拿一个已经装有水的碗拿去接,那就不用100滴了。到此我们可以算出,要使10滴水让碗中的水溢出,那么碗中就先要装90滴水。
  在定时计数器中,这90滴水就是我们所谓的初始值。问题2,在一个车间我们如何利用单片机对100件产品进行计件,并进行自动包装呢?
  我们可以利用计数器计数100,在中断中执行一个自动包装的动作就可以了。
  在这里计数初值有3个,假设有方式0:计数初值=次方)&100=8812。方式1:计数初值=6次方)&100=65436。方式0:计数初值=256(2的8次方)&100=156。
  根据所得的初始值,再将其转换为16进制或者2进制,就可以进行计数或者定时了。当然要让程序完全的运行起来还需要相应的寄存器进行设置。这些可以从各种单片机教程中找到。
如今,物联网浪潮已然席卷至汽车电子产业,发动机控制系统、底盘控制系统和车身电子控制系统已模型初显,安全...
ADAS市场或破千亿
国产汽车雷达将爆发
抢占智能汽车制高点
为自动驾驶保驾护航
电动汽车面临的挑战
串口相关文章
串口相关下载
定时器相关文章
定时器相关下载
计数器相关文章
计数器相关下载
51单片机相关文章
51单片机相关下载
随着物联网技术的突飞猛进,生活中越来越多的家庭设备将会联上网络,变得“智慧”起来,智慧家庭的概念成了这几年媒体、企业、用户关注的焦点,而...
研华IoT嵌入式平台事业群总经理许杰弘表示,工业物联网 2009年就开始提出,至今缺乏临门一脚,现在是打开大门的时候了。研华WISE-PaaS物智联软件平台和...
创新实用技术专题
供应链服务
商务及广告合作
Jeffery Guo
关注我们的微信
供应链服务 PCB/IC/PCBA
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-MCS-51单片机存储器结构
& MCS-51单片机存储器结构MCS-51的存储器可分为四类:&&&&&程序存储器&&&&一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。那么设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。程序相当于给微处理器处理问题的一系列命令。其实程序和数据一样,都是由机器码组成的代码串。只是程序代码则存放于程序存储器中。&&&&MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的端必须接地。强制CPU从外部程序存储器读取程序。对于内部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。&&&&8051片内有4kB的程序存储单元,其地址为0000H—0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。但在程序存储中有些特殊的单元,这在使用中应加以注意:&&&&其中一组特殊是0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。&&&&另一组特殊单元是0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下:&&&&&0003H—000AH&&外部中断0中断地址区。&&&&&000BH—0012H&&定时/计数器0中断地址区。&&&&&0013H—001AH&&外部中断1中断地址区。&&&&&001BH—0022H&&定时/计数器1中断地址区。&&&&&0023H—002AH&&串行中断地址区。&&&&可见以上的40个单元是专门用于存放中断处理程序的地址单元,中断响应后,按中断的类型,自动转到各自的中断区去执行程序。因此以上地址单元不能用于存放程序的其他内容,只能存放中断服务程序。但是通常情况下,每段只有8个地址单元是不能存下完整的中断服务程序的,因而一般也在中断响应的地址区安放一条无条件转移指令,指向程序存储器的其它真正存放中断服务程序的空间去执行,这样中断响应后,CPU读到这条转移指令,便转向其他地方去继续执行中断服务程序。&&&&&数据存储器&&&&数据存储器也称为随机存取数据存储器。MCS-51单片机的数据存储器在物理上和逻辑上都分为两个地址空间,一个是内部数据存储区和一个外部数据存储区。MCS-51内部RAM有128或256个字节的用户数据存储(不同的型号有分别),它们是用于存放执行的中间结果和过程数据的。MCS-51的数据存储器均可读写,部分单元还可以位寻址。&&&&8051内部RAM共有256个单元,这256个单元共分为两部分。其一是地址从00H—7FH单元(共128个字节)为用户数据RAM。从80H—FFH地址单元(也是128个字节)为特殊寄存器(SFR)单元。从图1中可清楚地看出它们的结构分布。&&&&在00H—1FH共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以R0—R7来命名,我们常称这些寄存器为通用寄存器。这四块中的寄存器都称为R0—R7,那么在程序中怎么区分和使用它们呢?聪明的INTEL工程师们又安排了一个寄存器——程序状态字寄存器(PSW)来管理它们,CPU只要定义这个寄存的PSW的第3和第4位(RS0和RS1),即可选中这四组通用寄存器。对应的编码关系如图2所示。&&&&内部RAM的20H—2FH单元为位寻址区,既可作为一般单元用字节寻址,也可对它们的位进行寻址。位寻址区共有16个字节,128个位,位地址为00H—7FH。位地址分配如表1所示,CPU能直接寻址这些位,执行例如置“1”、清“0”、求“反”、转移,传送和逻辑等操作。我们常称MCS-51具有布尔处理功能,布尔处理的存储空间指的就是这些为寻址区。表1&&RAM位寻址区地址表单元地址MSB&&&&&&&&位地址&&&&&&&&LSB2FH7FH7EH7DH7CH7BH7AH79H78H2EH77H76H75H74H73H72H71H70H2DH6FH6EH6DH6CH6BH6AH69H68H2CH67H66H65H64H63H62H61H60H2BH5FH5EH5DH5CH5BH5AH59H58H2AH57H56H55H54H53H52H51H50H29H4FH4EH4DH4CH4BH4AH49H48H28H47H46H45H44H43H42H41H40H27H3FH3EH3DH3CH3BH3AH39H38H26H37H36H35H34H33H32H31H30H25H2FH2EH2DH2CH2BH2AH29H28H24H27H26H25H24H23H22H21H20H23H1FH1EH1DH1CH1BH1AH19H18H22H17H16H15H14H13H12H11H10H21H0FH0EH0DH0CH0BH0AH09H08H20H07H06H05H04H03H02H01H00H&&&&&特殊功能寄存器&&&&特殊功能寄存器(SFR)也称为专用寄存器,特殊功能寄存器反映了MCS-51单片机的运行状态。很多功能也通过特殊功能寄存器来定义和控制程序的执行。&&&&MCS-51有21个特殊功能寄存器,它们被离散地分布在内部RAM的80H—FFH地址中,这些寄存的功能已作了专门的规定,用户不能修改其结构。表2是特殊功能寄存器分布一览表,我们对其主要的寄存器作一些简单的介绍。&&&&程序计数器PC(program
Counter)&&&&程序计数器在物理上是独立的,它不属于特殊内部数据存储器块中。PC是一个16位的计数器,用于存放一条要执行的指令地址,寻址范围为64kB,PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1。PC本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按我们的要求去执行。&&&&累加器ACC(Accumulator)&&&&累加器A是一个最常用的专用寄存器,大部分单操作指令的一个操作数取自累加器,很多双操作数指令中的一个操作数也取自累加器。加、减、乘、除法运算的指令,运算结果都存放于累加器A或AB累加器对中。大部分的数据操作都会通过累加器A进行,它形象于一个交通要道,在程序比较复杂的运算中,累加器成了制约软件效率的“瓶颈”,它的功能较多,地位也十分重要。以至于后来发展的单片机,有的集成了多累加器结构,或者使用寄存器阵列来代替累加器,即赋予更多寄存器以累加器的功能,目的是解决累加器的“交通堵塞”问题。提高单片机的软件效率。表2&&&特殊功能寄存器标识符号地址寄存器名称ACC0E0H累加器B0F0HB寄存器PSW0D0H程序状态字SP81H堆栈指针DPTR82H、83H数据指针(16位)含DPL和DPHIE0A8H中断允许控制寄存器IP0B8H中断优先控制寄存器P080HI/O口0寄存器P190HI/O口1寄存器P20A0HI/O口2寄存器P30B0HI/O口3寄存器PCON87H电源控制及波特率选择寄存器SCON98H串行口控制寄存器SBUF99H串行数据缓冲寄存器TCON88H定时控制寄存器TMOD89H定时器方式选择寄存器TL08AH定时器0低8位TH08CH定时器0高8位TL18BH定时器1低8位TH18DH定时器1高8位&&&&&寄存器B&&&&在乘除法指令中,乘法指令中的两个操作数分别取自累加器A和寄存器B,其结果存放于AB寄存器对中。除法指令中,被除数取自累加器A,除数取自寄存器B,结果商存放于累加器A,余数存放于寄存器B中。&&&&&程序状态字(Program
Status Word)&&&&程序状态字是一个8位寄存器,用于存放程序运行的状态信息,这个寄存器的一些位可由软件设置,有些位则由硬件运行时自动设置的。寄存器的各位定义如下,其中PSW.1是保留位,未使用。下表是它的功能说明,并对各个位的定义介绍如下:表3&&&程序状态字位序PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位标志CYACF0RS1RS0OV-P&&&&&PSW.7(CY)&进位标志位,此位有两个功能:一是存放执行某写算数运算时,存放进位标志,可被硬件或软件置位或清零。二是在位操作中作累加位使用。&&&&&PSW.6(AC)&辅助进位标志位,当进行加、减运算时当有低4位向高4位进位或借位时,AC置位,否则被清零。AC辅助进位位也常用于十进制调整。&&&&&PSW.5(F0)&用户标志位,供用户设置的标志位。&&&&&PSW.4、PSW.3(RS1和
RS0)&寄存器组选择位。可参见本章的图2定义。&&&&&PSW.2(OV)&溢出标志。带符号加减运算中,超出了累加器A所能表示的符号数有效范围(-128—+127)时,即产生溢出,OV=1。表明运算运算结果错误。如果OV=0,表明运算结果正确。&&&&执行加法指令ADD时,当位6向位7进位,而位7不向C进位时,OV=1。或者位6不向位7进位,而位7向C进位时,同样OV=1。&&&&除法指令,乘积超过255时,OV=1。表面乘积在AB寄存器对中。若OV=0,则说明乘积没有超过255,乘积只在累加器A中。&&&&除法指令,OV=1,表示除数为0,运算不被执行。否则OV=0。&&&&&PSW.0(P)&奇偶校验位。声明累加器A的奇偶性,每个指令周期都由硬件来置位或清零,若值为1的位数奇数,则P置位,否则清零。&&&&&数据指针(DPTR)&&&&数据指针为16位寄存器,编程时,既可以按16位寄存器来使用,也可以按两个8位寄存器来使用,即高位字节寄存器DPH和低位字节DPL。&&&&DPTR主要是用来保存16位地址,当对64kB外部数据存储器寻址时,可作为间址寄存器使用,此时,使用如下两条指令:&&&&&&&&&&&&MOVX&&&&A,&@DPTR&&&&&&&&&&&&MOVX&&&&@DPTR,&A&&&&在访问程序存储器时,DPTR可用来作基址寄存器,采用基址+变址寻址方式访问程序存储器,这条指令常用于读取程序存储器内的表格数据。&&&&&&&&&&&&MOVC&&&&A,&@A+@DPTR&&&&&堆栈指针SP(Stack
Pointer)&&&&堆栈是一种数据结构,它是一个8位寄存器,它指示堆栈顶部在内部RAM中的位置。系统复位后,SP的初始值为07H,使得堆栈实际上是从08H开始的。但我们从RAM的结构分布中可知,08H—1FH隶属1—3工作寄存器区,若编程时需要用到这些数据单元,必须对堆栈指针SP进行初始化,原则上设在任何一个区域均可,但一般设在30H—1FH之间较为适宜。&&&&数据的写入堆栈我们称为入栈(PUSH,有些文献也称作插入运算或压入),从堆栈中取出数据称为出栈(POP,也称为删除运算或弹出),堆栈的最主要特征是“后进先出”规则,也即最先入栈的数据放在堆栈的最底部,而最后入栈的数据放在栈的顶部,因此,最后入栈的数据出栈时则是最先的。这和我们往一个箱里存放书本一样,需将最先放入箱底部的书取出,必须先取走最上层的书籍。这个道理非常相似。&&&&那么堆栈有何用途呢?堆栈的设立是为了中断操作和子程序的调用而用于保存数据的,即常说的断点保护和现场保护。微处理器无论是在转入子程序和中断服务程序的执行,执行完后,还是要回到主程序中来,在转入子程序和中断服务程序前,必须先将现场的数据进行保存起来,否则返回时,CPU并不知道原来的程序执行到哪一步,原来的中间结果如何?所以在转入执行其它子程序前,先将需要保存的数据压入堆栈中保存。以备返回时,再复原当时的数据。供主程序继续执行。&&&&转入中断服务程序或子程序时,需要保存的数据可能有若干个,都需要一一地保留。如果微处理器进行多重子程序或中断服务程序嵌套,那么需保存的数据就更多,这要求堆栈还需要有相当的容量。否则会造成堆栈溢出,丢失应备份的数据。轻者使运算和执行结果错误,重则使整个程序紊乱。&&&&MCS-51的堆栈是在RAM中开辟的,即堆栈要占据一定的RAM存储单元。同时MCS-51的堆栈可以由用户设置,SP的初始值不同,堆栈的位置则不一定,不同的设计人员,使用的堆栈区则不同,不同的应用要求,堆栈要求的容量也有所不同。堆栈的操作只有两种,即进栈和出栈,但不管是向堆栈写入数据还是从堆栈中读出数据,都是对栈顶单元进行的,SP就是即时指示出栈顶的位置(即地址)。在子程序调用和中断服务程序响应的开始和结束期间,CPU都是根据SP指示的地址与相应的RAM存储单元交换数据。&&&&堆栈的操作有两种方法:其一是自动方式,即在中断服务程序响应或子程序调用时,返回地址自动进栈。当需要返回执行主程序时,返回的地址自动交给PC,以保证程序从断点处继续执行,这种方式是不需要编程人员干预的。第二种方式是人工指令方式,使用专有的堆栈操作指令进行进出栈操作,也只有两条指令:进栈为PUSH指令,在中断服务程序或子程序调用时作为现场保护。出栈操作POP指令,用于子程序完成时,为主程序恢复现场。&&&&I/O口专用寄存器(P0、P1、P2、P3)&&&&I/O口寄存器P0、P1、P2和P3分别是MCS-51单片机的四组I/O口锁存器。MCS-51单片机并没有专门的I/O口操作指令,而是把I/O口也当作一般的寄存器来使用,数据传送都统一使用MOV指令来进行,这样的好处在于,四组I/O口还可以当作寄存器直接寻址方式参与其他操作。&&&&&定时/计数器(TL0、TH0、TL1和TH1)&&&&MCS-51单片机中有两个16位的定时/计数器T0和T1,它们由四个8位寄存器组成的,两个16位定时/计数器却是完全独立的。我们可以单独对这四个寄存器进行寻址,但不能把T0和T1当作16位寄存来使用。&&&&定时/计数器方式选择寄存器(TMOD)&&&&TMOD寄存器是一个专用寄存器,用于控制两个定时计数器的工作方式,TMOD可以用字节传送指令设置其内容,但不能位寻址,各位的定义如下,更详细的内容,我们将在《MCS-51定时器和中断系统》章节中叙述。表4&&&定时/计数器工作方式控制寄存器&TMOD位序D7D6D5D4D3D2D1D0位标志GATEM1M0GATEM1M0定时/计数器1定时/计数器0&&&串行数据缓冲器(SBUF)&&&&串行数据缓冲器SBUF用来存放需发送和接收的数据,它由两个独立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器,要发送和接收的操作其实都是对串行数据缓冲器进行。&&&其他控制寄存器(TMOD)&&&&除了以上我们简述的几个专用寄存外,还有IP、IE、TCON、SCON和PCON等几个寄存器,这几个控制寄存器主要用于中断和定时的,我们将在《MCS-51定时器和中断系统》中详细说明。【单片机】精华短文、学习进阶、每楼一个话题,开卷有益。-电源网
电源网牵头联合芯派实验室和是德科技联手为电源网网友提供的福利...
2017慕尼黑上海电子展在即,跟电源网一起去看展。...
2017年慕尼黑上海电子展,AOS万国半导体专题报道。...
牛逼1000帖
深圳麦格米特电气股份有限公司
宁波江北华瑞电子有限公司
最新技术探讨
阅读两个产品测评进行回帖讨论,每人两个奖品;
会议主题:采用InnoSwitch(TM)3的终极反激电源解决方案
会议时间:
主讲嘉宾:
报名人数:600人
会议主题:中国工程师巡回培训会-深圳站
会议时间:
会议地点:深圳马哥波罗好日子酒店
报名人数:392
【单片机】精华短文、学习进阶、每楼一个话题,开卷有益。
浏览:1674
发表于 19:46 |
单片机硬件系统设计原则
& & & 一个单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统的配置,即按照系统功能要求配置外围设备,如键盘、显示器、打印机、A/D、D/A转换器等,要设计合适的接口电路。& &&&&&& 系统的扩展和配置应遵循以下原则:&&&&&&
& 1、尽可能选择典型电路,并符合单片机常规用法。为硬件系统的标准化、模块化打下良好的基础。&&&&&
& 2、系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发。&&&&&&&&
& 3、硬件结构应结合应用软件方案一并考虑。硬件结构与软件方案会产生相互影响,考虑原则是:软件能实现的功能尽可能由软件实殃,以简化硬件结构。但必须注意,由软件实现的硬件功能,一般响应时间比硬件实现长,且占用CPU时间。&&&&&
&& 4、系统中的相关器件要尽可能做到性能匹配。如选用CMOS芯片单片机构成低功耗系统时,系统中所有芯片都应尽可能选择低功耗产品&&&&&&
& 5、可靠性及抗干扰设计是硬件设计必不可少的一部分,它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。 & & & & & 6、单片机外围电路较多时,必须考虑其驱动能力。驱动能力不足时,系统工作不可靠,可通过增设线驱动器增强驱动能力或减少芯片功耗来降低总线负载。&&&&&&
& 7、尽量朝“单片”方向设计硬件系统。系统器件越多,器件之间相互干扰也越强,功耗也增大,也不可避免地降低了系统的稳定性。随着单片机片内集成的功能越来越强,真正的片上系统SoC已经可以实现,如ST公司新近推出的μPSD32××系列产品在一块芯片上集成了80C32核、大容量FLASH存储器、SRAM、A/D、I/O、两个串口、看门狗、上电复位电路等等。
发表于 20:38 |
51单片机入门必读的好文章
请允许我假设你已经掌握基本的模拟与数字电路知识、基本的计算机理论知识(比如知道二进制是怎么回事,RAM和ROM是什么东西)与操作知识(比如会装载与使用应用软件)、明白C语言的基本规则与语句。同时,我默认你有一本经典51教材(哪个版本都可以)、一本51单片机应用教材(内容为给出硬件电路和源程序的单片机开发实例)、一块51单片机实验板(含一条串口线)、一块具有ISP(在系统编程)功能的单片机、某个版本的KEIL软件、某个版本的ISP烧写软件、一台性能一般的PC电脑。
如果不具备上述任何一项,请不要继续阅读本教程,收起你的书本,回家吧,你无法学会单片机。知识方面的欠缺请自己尽快弥补。教材与应用书籍可以借阅,但是我建议各买一本,因为它们属于工具书,需要随时翻看,版本我就不推荐了,各种版本内容基本都一样,这个投资需要数十元。实验板可以使用我提供的这一款,硬件功底好的也可以自制,成本在100元以内,网上有很多这方面的资料,且基本配置都大同小异。具有ISP功能的51单片机我推荐使用飞利浦系列,本实验板就是针对P89C51RD2系列(价格40元左右)设计的(周立功单片机公司全面代理飞利浦单片机,可以联系邮购)。其他ISP功能的单片机也行,如华邦的W78E系列,AVR哈佛结构(不是51内核)高速系列,不过我都没有使用过。具有ISP功能的单片机虽然比AT89C51之类(10元左右)贵很多,但是配置很强(仅ROM容量就有64K,是AT89C51的16倍),而且相对于数百元的编程器或者仿真器来说,性价比还是很高的,有利于降低硬件投资给初学者造成的门槛。KEIL软件网上随处都可以下载到(搜索KEIL下载即可),当然尽量使用高版本的。ISP编程软件周立功单片机的网站可以下载,名称为ZLGISP,飞利浦的WINISP也可以。不算PC电脑的话,200元的投资足够开始学习51单片机了(实验板+串口线+单片机+教材)。
OK,这是一份面向对单片机一无所知的初学者的入门教程。单片机技术就如同一张窗户纸,这份肤浅的教程就是来戳穿它的,呵呵。就如同你来到一个陌生的城市,我送你一张地图——不是我水平高,是我比你来得早,就这么点优势,呵呵。它的作用仅仅是帮助你在茫然的情况下顺利上手,至于上手之后的进展,就全靠你自己的辛勤钻研了。你要明白,没有任何路标能够代替你走完脚下的路。显然,我不想你们再像我一样在入门上花费过多宝贵时间。你们当然会感谢我,这是可以理解的,因为我也曾感谢过在我入门的时候给过我帮助的朋友。
好了,我们开始学习单片机的旅程。
第一章:单片机开发的基本流程
不是所有人都学过地理,但是几乎每个人都能找到回家的路,学习单片机也是如此。我们先不要看什么教材,我们直接进入开发过程的介绍与学习,争取在最短的时间内获得最多的感性认识。千万不要像学英语那样学单片机,就像背了十年单词却没见着一回老外——看一年教材也没见过单片机什么样的话,那就不可能学会了。
针对我们前言中的软硬件,基本开发流程是这样的:
1、在PC电脑上安装并启动KEIL软件,建立一个单片机
工程项目,调整设置,使项目输出时生成HEX格式(INTERL公司
规定的一种二进制格式)烧写文件。具体操作详见第二章。
2、新建程序文件,将其加入项目。用汇编或者C51语言编写一个程序,编译,纠错,再编译,再纠错,直到错误全部消失,编译成功,系统会自动生成HEX格式文件,保存在项目所在的文件夹里。
3、在实验板断电的情况下(如果带电容易击穿PC机串口),用串口线连接单片机与PC机串口。接通实验板电源,选择ISP编程(红色发光管亮),复位,进入编程状态。启动ISP编程软件ZLGISP,选择需要擦除的FLASH块(初学编程代码不会很大,擦除第一块BLOCK8K足够)。点击设置选项,VECTOR为FC不要改动,STATUS改为00,点击写入。然后点击读出,确认VECTOR确实为FC,而STATUS确实为00,如果不是,重新写入,然后退出ISP状态,则设置完成。也就是说每次退出ISP功能之前,必须确认向量为FC,否则下次将无法进入ISP状态,就好比你把钥匙放在屋子里却从外边锁上了门一样。因为VECTOR和STATUS是同时被改写的,所以改写STATUS的时候VECTOR可能发生误码或丢失等错误,一旦发生这种情况,只能使用支持P89C51RD2的并行编程器将VECTOR的入口地址FC重新烧入,等于破门而入拿钥匙,比较麻烦了。注意,这一步非常关键,STATUS不为00程序将不能正常运行程序,原理下文再做介绍。打开编译好的HEX格式烧写文件。点击编程选项,不必做任何选择,等待编程自动结束。
4、切换到运行状态(绿色发光管亮),按下复位键。此时程序开始运行,实验板的器件会有相应的反应。至此一次完整的单片机开发流程成功结束。
第二章:KEIL软件使用方法
如何安装与启动KEIL软件我就不说了,这个软件的功能有三个:编辑程序源代码,编译源程序为目标文件(目标文件就是翻译过来的机器码),软件仿真运行结果。作为初学者,你要明白编辑和编译的区别——就像你要明白秘书和翻译的区别一样。
启动软件以后,点击PROJECT(工程),在下拉菜单中选择NEW(新建),在对话框中设置项目文件的保存位置,具体位置随你便了。给该工程项目命名,随你便,但是要把扩展名设为.UV2,比如可以命名为LED.UV2,保存。此时弹出单片机设备选择对话框,针对我们的实验板请选择ATMEL公司的AT89C51或者PHILIPS公司的8XC51RD2,点击确定。
点击FILE(文件)中的NEW,此时会出现一个文本界面,点击FILE中的SAVE(保存),在对话框中设置保存路径(最好与刚才的工程文件在一个文件夹中)。给该源程序文件命名,扩展名要根据你使用的编程语言确定,如果使用汇编语言,就命名为.ASM,如果使用C51语言,就命名为.C。对于没有学过C51的初学者来说,应使用.ASM,比如LED.ASM,保存。
在左面的工程窗口里用右键点击TARGET1,选择OPTIONS&&&
FOR&&& TARGET ‘TARGET1’,在对话框中选择OUTPUT选项,在CREAT&& HEX&&
FILE选项前打勾,点击确定,这样编译之后,在工程项目所在的文件夹中就能够生成HEX格式的烧写文件了。
点击TARGET1前面的加号,用右键点击SOURSE&&
GROUP&& 1,选择ADD&& FILES&& TO&& GROUP ‘SOURSE&&
GROUP&&1’,将刚才新建的源程序文件加入。此时SOURSE&&
GROUP&& 1之前也有加号了,点击会看到你新建的文件。
双击进入你建立的文件,现在可以编写你的第一个程序了。
第三章:你的第一个单片机程序
源程序如下:
MOV&& P0 ,
SJMP&&LOOP
什么?这么简单?!是不是在搞笑?!没错,虽然简单,但这就是一个完整的单片机程序。具体语句我先不作解释,你要先把这个程序在实验板上跑起来才行。点击编译按钮(项目窗口上面那三个蛋糕一样的按钮中间或者右边那个),也可以选择PROJECT选项中的BUILD&& TARGET选项,编译就自动开始。如果有错误或者警告,下面的编译输出栏将会显示,如果你编译过C语言的程序,就会比较熟悉,所以要求你具有一定的C语言基础。如果没有错误和警告,系统将显示代码量,DATA表示占用内部RAM空间的大小,XDATA表示占用外部RAM空间的大小,CODE表示占用片内ROM空间的大小。P89C51RD2HBP本身有1K内部数据存储器RAM,64K内部程序存储器ROM,本实验板没有扩展外部RAM,所以暂时不能做有关外部RAM存储的实验。至于你使用AT89C51+编程器的话,资源就比较少了,只有128B(1字节=8位)RAM和4K大小的ROM,不过对于初学者,足够使用了。
好的,对于你这样一个一点成就感都没有的初学者来说,激动人心的时候就要到了:我们要把这个程序固化到单片机的ROM里了。连接好串口线,写入STATUS为00(切记!写一次就行了,频繁擦写有可能导致向量丢失,那麻烦就大了),擦除,固化,复位——哈,程序运行了吗?8个LED发光管隔一个亮一个吗?如果是的话,恭喜你啊!你已经成为一名单片机的开发人员啦!呵呵,虽然这个程序没有什么实用价值,你也不明白语句的意义,但是它给你带来了成就感和自信心,这才是作为初学者最最需要的,有了信心与兴趣,一切都不再成为负担和难题。
是不是开始跃跃欲试了?好的,我们继续讲下去。
第四章:程序解释与软件仿真功能的介绍
现在我们回过头来解释这个程序。
ORG是一个伪指令。不懂?呵呵,正常,当初我也不懂。伪指令就是一条没有真正操作的指令,说白了就是什么活也不干,耍耍嘴皮子而已。ORG是个定位伪指令,告诉系统程序从00地址开始执行,至于执行什么,怎么执行,它不管。就像一次扫雪任务,一个领导来了,指着脚下说:从这里开始扫。至于具体怎么扫,那是你的事情,呵呵。还有几条伪指令,去看教材。
MOV&& P0 , #55H是这个程序的核心指令,工作全部都是它做的。参照教材,它的意思是将十六进制数55输出给寄存器P0,而P0口的状态由8个LED显示。我知道你会对这个十六进制数字感到糊涂,因为我们长了10手指头。这里的55不是十进制转换来的,它实际是二进制数字的一种压缩写法,写成二进制就是,这样P0口接的8个LED就会隔一个亮一个。55屁股后面的H表示它是十六进制数,如果去掉H就表示55是十进制数了。十进制数55转换为十六进制数是37,二进制数是,就不是了,不信可以试试看,去掉55后面的H。为了明确输出状态,你可以将55H写成B,这个B表示是二进制数,显示结果一样,我写输出一般都使用二进制写法。你必须明白十进制、二进制、十六进制之间的转换方法,各种计算机书里都有的。以后你就不要用十进制思考了,二进制是一种重要思维方式,你务必熟悉。具体计算你不要动手,那很傻哦——PC机的附件里不是有个很好的计算器吗?可以非常方便的转换多种数制,编程的时候同时打开就行了。
现在来解释那个很有趣味的软件仿真,你不用烧写芯片就可以看到运行结果,神奇吧!我当初都不知道有这么好的软件,为了改变一个简单的程序会白白烧片十几次,简直是傻瓜。现在我使你避免成为傻瓜,你是不是应该感谢我呢?呵呵。编译成功后点击DEBUG(调试或者叫除错,因为BUG是错误的意思)选项里的STARTSTOP&&
DEBUG&& SESSION,工具栏里也有这个快捷图标(有个带红色B字母的放大镜)。点击PERIPHERAL(外设)选项,选择需要察看的部分,这里我们选择P0口。点击左上角文件下面的RET复位,然后点击RET右面的带下箭头的小方块来运行程序,这时可以看到P0口状态变为,表明运行成功。想要退出运行中的程序,点击那个圆形的红色叉。要回到编辑界面请再次点击DEBUG的快捷图标。
现在有个问题,那个LOOP :&&
SJMP&& LOOP是干嘛的?这是一个死循环,指令反复跳转到本身,相信你能够看懂。你会觉得它没有什么用,你感觉很对,它的确没有什么实际的作用。那么好,让我们把它删除——编译照样通过,没有任何错误和警告,而且就算你现在把它烧写到芯片里,它也能正确运行,那为什么还要加上?你不服?好,那我们进入刚才的调试界面,运行程序,不好!系统提示出错NO&&
‘EXECUTE/REDA’&& PERMISSION&& !什么原因?问题出来了吧?因为你删除了这个循环,程序就跑飞了!跑飞了是什么意思?比如你让一只小狗在广场上随便跑,你怎么知道它会跑到哪里去?这就是跑飞,结果是你丢失了这条小狗,当然你可以重新买一只,这就是复位了,哈哈。如果你让一只小狗在院子里跑,它就不会丢失啦。循环的意义就在这里,让程序掉到这个循环里,你和系统就能把它控制住。你还是不以为然吗?这是一个简单程序,也许问题不大,但是当程序复杂之后,跑飞了是件很麻烦很可怕的事情,会出现莫名其妙的错误,而且你也无法使用软件仿真功能了。要是你还不服气,那就尝试每次编程都让程序跑飞一次,如此之后你就有感觉了,我曾经被这个简单问题困扰了数周之多,现在我提示你,你要当回事。
END也是个伪指令,是个编译结束标志,编译器编译到END的时候就结束编译了,不再编译END以下的程序。
这就是软件仿真的基本过程,后面我还会介绍到仿真的其他功能。建议你每次编写程序以后都要先进行软件仿真,反复修改,反复调试,直到需要完成的功能完全仿真成功再将程序烧写到芯片,这样能够提高开发效率,延长单片机使用寿命。
第五章:关于编程器、仿真器与ISP
我建议你使用具有ISP功能的单片机完全是考虑到初学者的资金问题,因为很多人一听说学习要花钱就会放弃学习。世界上没有免费的知识,更没有免费的技能,投资是非常必要的,但是成本越低就越容易上手,所以我推荐具有ISP功能的单片机,但这并非说编程器与仿真器已经没用,这一点你们要明白。
首先说说编程器,它是干什么用的呢?程序编辑好后,并且通过编译生成了HEX格式的二进制烧写文件,就要用编程器把它烧写到单片机里面。我最初入门的时候就是使用AT89C51 +编程器的开发模式,过了半年多才在发现具有ISP功能的单片机,白花了那么多银子。编程器本身很贵的,最好的上千,好一点的数百元,最便宜的简易型的也要上百元,是个不小的投资,很多人之所以对单片机望而却步,正是在这个投资上出现了犹豫。另外编程器使用起来也比较麻烦,每一次编程都要把芯片从实验板上拔下来,烧写好了再插回去,很容易弄坏插座和管脚,为此配置零插拔力插座的话,又要花一只单片机的钱了(十多元一只)。而且如果去现场工作的话,拎着个编程器多麻烦!设备复杂的话插拔芯片也很困难,一旦弄坏了管脚或者印刷板,设备就完蛋了。但是编程器在开发产品中具有重要作用,因为产品的目标板(相当于完成指定功能的实验板)一般没有空间额外加挂串口电平转换部分的器件,所以要通过编程器编程。而且开发产品如果使用一般的51芯片,成本也会大幅度下降。对于那些不用改动程序的产品比较有利。当然如果产量非常大的话,就选择掩膜(就是把程序直接做到芯片里)生产了,编程器也不用了,成本非常低。
仿真器在高校教学、实验与复杂产品开发中可以使用。使用编程器和ISP的开发方法叫做“崩溃——烧写”模式,如果程序运行结果错误,只能改动程序后擦除芯片重新烧写,为了调试一个程序连续烧写芯片数十次是很正常的事情,但是这样不但麻烦,还会缩短芯片使用寿命,而且无法观察程序运行中的状态。仿真器正是针对这一问题,它无需烧写,通过它可以直接观察运行结果,而且可以单步运行,能够最直接的找到问题所在,所以高级产品的开发都要用到。不过初学者一般买不起仿真器,也没必要买,KEIL本身就有软件仿真功能,可以大大减少烧写次数。只要不涉及到外部扩展接口,在KEIL上仿真运行成功的程序,绝大部分烧写以后都能正常运行,下文将有说明。
ISP的意思是在系统编程,但是我不喜欢这个说法,刚入门谁能理解?我的解释就是单片机本身自带编程功能,就像把一台编程器集成到单片机上,这就很容易理解了。它本身有一个出厂时候就固化好的编程程序,放在BOOT&& ROM里,不可修改。这个BOOT&& ROM不占用系统本身的ROM空间,具体放在哪里我们不必关心,VECTOR(向量)设置为FC(针对P89C51RD2系列)就是BOOT&& ROM的入口的地址,不得改动。顺便解释一下,BOOT不是靴子的意思哦,是启动的意思。向量的意思我理解就是一个地址,线性代数中不是有N维向量的概念吗?其实就是一串数字,你记住是地址就行了,不要去想什么向量。对于P89C51RD2来说,PSEN脚(29脚)接地(低电平)是进入ISP功能的硬件激活条件,所以编程的时候要按下选择开关到编程端。编程结束后使PSEN脚恢复高电平,复位之后即可启动程序,但是此时STATUS(状态字)必须为00,它的意思就是程序从00地址开始启动,因为编程操作是把程序烧写到00地址开始的空间里,如果不从00启动,程序就发生错误了。有关ISP的详细资料可以从网上下载。不懂什么叫高低电平?不准确的说,低电平就是0V,高电平就是电源电压5V,低电平相当于逻辑里的0,高电平相当于逻辑里的1,数字电路教材里一定有描述,我就不说了。
我觉得开发器材的选择是这样的:当你是初学者的时候,用一块具有ISP功能的单片机学习足够;当你能够独立设计目标板进行小产品开发时,可以考虑购置编程器;当你成为专业单片机技术人员乃至嵌入式系统工程师的时候,仿真器对于高级产品的开发是必须的了。
第六章:51单片机实验板原理与功能简介
现在市面上单片机实验板种类繁多,有的非常简陋,有的相对高级,价格与外围器件扩展的程度正相关。我设计的这一款实验板个人认为不算简陋但也称不上高级,和网上的各种普及型实验板都差不多,市售价格在100元左右,非常适合初学者使用。能够把这款实验板的所有功能都开发出来的话,你的单片机开发水平就相当可以了。由于电路原理非常简单,电路原理图与PCB图我将免费公布,以利于广大初学者自制,需要者请联系向我索要。你也可以参考我板子的硬件结构,根据自己的要求自行设计。
请参照你手里的51教材中列出的单片机管脚,我将详细说明本实验板的硬件结构。
1、P0口通过74LS244(单方向8位总线驱动器)驱动8位LED发光二极管。可以实现广告灯、跑马灯、交通灯等相关实验。
2、P0同时通过74LS244驱动4位LED数码管的段选,与8位LED切换通过一只开关完成。位选由P2口前4位通过4只NPN三极管驱动完成。可以实现时间显示、秒表与计数显示等与数码管有关的实验。
3、P1.5通过一只PNP三极管驱动一只自震荡的蜂鸣器。自震
荡的意思是加上一定直流电压,蜂鸣器即可发出一定频率的声音。如果想改变频率,可以使用PWM(脉宽调制,就是改变脉冲占空比)方式通过音频调制驱动。如果想实现音乐编程,更换为一般的蜂鸣器(就是音乐贺卡里的压电片)即可。可以完成与音乐发生有关的实验,也可作为报警信号输出。
4、P1.6与P1.7脚连接IIC器件,板载一只8脚DIP插座,可选AT24C02,它是一只256B的EEPROM(电可擦写存储器)。可以实现电子密码锁等需要保存数据的实验,通过实验也可以对IIC技术有个基本的了解与掌握。
5、P3.2——P3.5是51的4个中断的外部输入端,这四个管脚连接4只按键开关到地,按下按键将该管脚接地。选择P3工作于第一功能,则按键开关工作于查询方式。如果选择第二功能,就工作于中断方式。可以完成按键和中断的相关实验。此处解释一下查询与中断,如果你在睡午觉,为了防止迟到,你每隔5分钟就睁眼看一下闹钟(假设你能够准时醒来),这就是查询方式,使用闹钟叫你就是中断方式了。它们的区别很显然,选择查询方式CPU就不能干别的工作了(就像你无法连续的睡觉),选择中断的话CPU可以去做其他工作,直到中断来临,CPU再去做中断要求的工作。
6、P3.0与P3.1是单片机的串口接收与发送数据线,它们通过MAX232转换为RS-232(一种串口通讯协议)标准电平,以便与PC机的串口通讯。因为51单片机与PC机的串口电平标准不同,所以用MAX232进行一个电平转换工作,仅此而已,你不需要准确的知道RS-232的协议标准。这就如同英制与公制的转换,对于你来说1M的长度对一个英国人来说就是3.28英尺。这个串口可以实现单片机与PC或者其他具备RS-232接口的单片机的通讯实验,更为重要的是,ISP编程就是通过这个串口将程序从PC机下载到单片机的ROM里面的。对于具有ISP功能的单片机,必须有这个电平转换部分(最小系统组成部分之一),否则无法进行编程。
7、其他没有使用的管脚可以作为系统扩展使用。P0口外接上拉电阻。同时引出全部IO口线、ALE口线以及5V电源线和地线,便于扩展。晶振使用12M,选择12个时钟周期方式,机器周期为1US,选择6个时钟周期方式,机器周期为0.5US,这是飞利浦单片机的特殊功能。在ZLGISP软件编程时,点击设置,在6CLOCK前打勾即可选择6个时钟周期方式。这个方式比12个时钟周期方式速度提高不少,但是对于精确延时程序将有影响,而且大多51教材都是针对12个时钟周期所写,所以不推荐初学者使用。
8、单片机非常害怕电源极性颠倒,所以电源插口后边安装了一只全桥作为“防呆开关”(原理简单而巧妙,请自行研究),无论电源极性如何都可以直接输入,但是输入电压不得低于8.5V,也不可太高,否则稳压块LM7805功耗过大容易发热。可以使用市售收音机直流电源,推荐使用9V。至于复位开关,编程选择开关,电源稳压部分就不再赘述了。
以上简介了实验板的硬件结构,实验请参见下文设计。
第七章:51单片机常见问题解答
关于51单片机的硬件,你手里任何一本教材都写得很清楚,我没有必要重新COPY一份,但是我很少看到能够不费力气就看得懂的51教材。对于初学者来说,一堆术语加上一堆严密得让人头痛的逻辑推导不啻为一种灾难,有时候明明很简单的原理非要被描述得艰涩异常。科学的精神在于把复杂的东西表述得简单,但是我们很多教材编写者却反其道而行之,完全违背了真正的科学精神,实在是面目可憎,行而不远。这也是我花费时间撰写本教材的原因之一。下面就针对几个被教材解释得一塌糊涂的常见问题做一下通俗的解释。
1、处理能力的概念。51单片机属于8位机,8位是个什么意思呢?就是CPU处理的数据是8位的。位数的高低体现了CPU处理能力的强弱。4位的处理器已经基本淘汰了,8位的处理器占据了低端单片机的大部分市场,32位处理器是现在兴起的嵌入式系统的主流配置,我们常用的电脑大多都是32位,64位的处理器也有,但是市场份额比较少,价格也较高。所以我们学习的51单片机属于比较低级的单片机,会逐渐被新兴的嵌入式处理器所淘汰,但是51单片机成本低,学习资源最丰富,上手容易,对于初学者来说是很理想的用于学习的单片机。
2、存储器问题。51单片机有两类存储器,一类是程序存储器ROM,它断电以后数据不丢失,但是必须用编程器擦除和写入程序;另一类是数据存储器RAM,它断电以后数据会丢失,但是可以用程序改写内容。以AT89C51为例,因为它有16条地址线(P0和P2),所以它可以访问64K存储器空间(2的16次方是65535),它的ROM和RAM都是分内外的,外部存储器都需要扩展,扩展方法参见教材。但是ROM和RAM的内外执行方式不同,ROM的内外切换要用EA脚(31脚)的电平选择,而RAM的切换可以直接用不同指令MOV和MOVX分开同时访问。例如AT89C51有4K内部ROM,64K外部ROM,如果EA=1,则从内部ROM开始执行,当超出4K之后,跳转到片外4K以上的空间运行;如果EA=0,则完全在外部ROM中运行,内部ROM不再起作用。什么意思呢?就是要么运行内部4KROM要么运行外部4KROM,内外ROM的前4K不能同时运行,必须用EA切换。所以一般在没有外部ROM的情况下,EA必须接电源正极,否则程序不能运行。我曾经因为EA悬空造成程序无法运行,苦苦思索一周才找到原因,期间因为盲目测试导致3块AT89C51损坏,教训十分惨痛,望后来者吸取教训。RAM就不同了,AT89C51有128B内部RAM,可以扩展64K外部RAM,这两个部分的RAM可以同时被访问,注意选择不同指令即可,访问内部用MOV,访问外部用MOVX,外部RAM扩展方法参见教材。ROM的种类除了常见的PROM(可编程ROM),还有MASK&& ROM、FLASH&& ROM 和EEPROM等种类。MASK&& ROM是掩模存储器,掩模的意思就是工厂把程序直接做在芯片上了,适于不需要反复修改的大批量产品生产,成本非常低,但是用户不能更改程序,8051里就是这种ROM。我最初接触单片机的时候,去电子市场买8051,结果商家真的卖给我了一块,回家一看,里面全都是程序,根本无法修改,现在回想起来,自己简直是个傻瓜,哪有买掩模ROM的单片机做学习和开发的?!商家也不告诉我已经烧好的程序可以干什么,害的我只能拿它当8031使了!这个教训真是好笑,希望大家一定要搞明白ROM的种类区分。PROM有OTP(一次性编程)和允许反复擦写(用紫外线照射擦除)两种,87C51系列就是OTP的ROM;就现在的形势看,ROM有普及FLASH之势,那些用紫外线擦除的垃圾看来是要被淘汰了。FLASH&& ROM可以电擦写,但必须整块擦除,写入速度快,擦写次数在1000到10万次之间(视不同类型芯片而定),事实上89C51系列的ROM就是FLASH&& ROM,U盘内的ROM也是,一种NAND FLASH现在广泛用于嵌入式系统中,它的存储容量大,成本低,可以实现固态硬盘的功能;EEPROM是电可擦写存储器,它是按位擦写的,可以擦写10万次以上,但擦写速度较FLASH ROM要慢,AT24C02就是EEPROM,我们用的很多智能IC卡也是。RAM的种类有静态SRAM,动态DRAM和SDRAM之分。SRAM只要写入一次,有电数据就可以保持,单片机里就是SRAM,但是它的缺点就是太贵,所以单片机里的RAM都很小。DRAM一次写入数据之后只能保持一瞬间,必须不断重写,叫做刷新,这个过程还需要相应的逻辑电路支持,很麻烦但是很便宜。SDRAM叫做具有静态特性的动态RAM,它把逻辑刷新电路和DRAM做到了一起,它的工作方式本质是动态的,但是从外部看相当于一个SRAM,这样就不但具有静态特性而且价格便宜,我们电脑里的内存条都是SDRAM。我自己的理解是这样的,就像爬山比赛,能力强的人呢,爬上去就不会滑下来。但是能力不行的人站不住,只好滑下来再爬上去,反复这样,频率高了给人的感觉就好像他在山上一样。呵呵,反正能力强的东西总是更贵一些的。
3、IO口问题。P0口是集电极开路,所以我的实验板上给它加了上拉电阻。上拉电阻的作用就是在基本没有电流输出的情况下将管脚电位拉到5V,这样对于外部来说是逻辑1,如果没有这个电阻,管脚电位就是0。为什么?假如三极管关闭的情况下C-E间电阻为100M,如果上拉电阻为10K,则分压的结果是几乎接近5V,这就是上拉的原理。IO口的驱动能力有限,AT89C51也就不到20MA(8051连这些都没有),可以直接驱动LED(电流流入方式),但是驱动别的大电流外部设备必须加驱动电路,否则会烧毁IO口,务必注意。迄今为止,我一共烧毁了7块AT89C51,损失了一把银子之后我终于找到了原因:一个是电源问题,电源电压超过5V或者极性颠倒都会导致芯片烧毁;另一个问题就是我在单片机供电的情况下测量P0.0脚(39脚)电位时表笔不小心连通了电源正极(40脚),而此时刚好P0.0内部MOS管开通(也就是输出0),结果直接烧毁了输出MOS管。因为P0口是数据线,结果导致编程时数据无法写入。这个教训最惨痛了,务必牢记。单片机的一种绝对保密技术就是利用了这种方法,编程之后烧毁一只闲置的数据或地址管脚的输出管,造成数据无法读出,达到绝对保密的目的。还有一点需要注意,如果要读入管脚的状态,必须先向该管脚写1,然后再读该管脚方能得到正确输入。使用P3的第二功能之前,也要先向P3口写1,目的都是让IO口输出管关闭。IO口详细构造请阅读51教材相关部分。
4、有关寻址方式。相关教材中的寻址部分纯粹是找别扭,我都可以用51开发产品了,可是我现在重读这部分教材依然一头雾水,无法理解。不理解很好,说明你大脑正常,不用去管教材所说的寻址方式到底是什么意思,你学会如何使用就行了。其实就是对数字操作(所谓立即寻址)、对寄存器操作(所谓寄存器寻址)、对地址操作(所谓直接寻址)、对指针操作(有专用指针也有寄存器作为指针)和对位操作5种情况。寻址方式就是告诉你一个操作什么东西的问题,没有什么高深的。如果还是不明白就不要看这部分内容了,直接学习指令进行编程,当你编程很熟练之后,你会发现,其实它那些怪里怪气的寻址方式命名是很可笑的。
5、对中断概念的理解。我最开始看了一个使用中断的程序之后,想了好几个晚上也没有理解什么叫中断。这个程序的注释竟然说中断服务程序是这个程序的核心部分,我当时就茫然了——那主函数是什么?垃圾吗?在我的认识里,主函数才应该是一个程序的核心。忘了过了多少日子,我终于明白了中断的含义。假如你设置一只闹钟6点叫你,如果你6点准时爬起来看闹钟是不是叫你的话,那就不叫闹钟了,你成了闹钟的闹钟了。初学者很容易不明白为什么主函数里并没有跳转到中断服务函数的指令,怎么中断服务程序就自己自动执行了呢?没错,中断不需要什么指令来启动,它会自己启动。什么时候启动由定时器、计数器或者外部中断决定,这是一个前台运行过程(谁表演谁就是前台嘛),你在后台看不到,后台是个设置中断的过程,决定什么情况下中断会叫你。比如你在车站等你女朋友,你无法准确知道她什么时候来,所以后台函数是个循环——你来回踱步,焦急的等待。当你女朋友出现的时候,她要求你停止踱步,和她去商店买衣服——这是中断服务函数。如果你女朋友还没来,你就自己跑到商店里了,那就不叫中断了。如果她来了你还在踱步——很不幸,系统不是跑飞就是崩溃了,呵呵。有关中断的具体操作与设置方法,请仔细阅读51教材相关部分。中断是单片机一个的难点,也是一个有特色之处,没有中断的话单片机就失去了全部的灵活性与实时性,变成一块用于顺序控制的数字电路了。
6、编程语言问题。你可以用汇编编程,也可以用C51语言编程。它们各有各的强项和弱点,选择哪种语言要根据你的基础和具体任务确定。有个老兄这样说:汇编挺好啊,不过你用着用着就想用C51了;C51嘛,也挺好啊,不过你用着用着就想用汇编了。呵呵,真的是这样。我个人的理解是:汇编好写不好看,C语言好看不好写。去看别人一段没有注释的汇编语言是一件很困难的事情,看不懂并不说明你编程水平差。这种情况下先不要看别人的例程,根据你自己的思路编写即可,到了关键部分或是遇到障碍再看看例程,效果很好。别人写的C语言比较好理解,因为C语言本质上就是各种各样的函数调来调去的过程,看懂了函数,程序基本就明白了。下面说说汇编和C各自的特点:汇编是个事必躬亲的战术语言,要干什么就直接干什么,什么事情都要直接操作硬件,所以累啊——系统倒不累,你累啊,呵呵,累死你换来的好处就是代码比较小,而且工作准确,操作决不会马马虎虎。C语言就不同了,是个战略语言,只抓大局,一堆基层工作全给INCLUDE了,够狠,要干什么不好好干,非要拐弯抹角——比如重新运行不让用跳转(封杀GOTO语句),非要设计一个巧妙的循环,汇编就没这么不老实。这次你不累了,但是如果智商不够就惨了,一句都写不下去,不像汇编——就算我笨,能编多少时多少,编一点是一点。当甩手掌柜自然不错,但是缺点也很明显:一来代码要大不少,系统资源一下就被搞紧张了;二来涉及到对硬件的具体操作就它就没招了,还得求人家汇编,呵呵。所以汇编和C你都要掌握,大局由C定,几处需要准确处理硬件的工作交给汇编,属于瞎子背瘸子的组合,呵呵。两手抓,两手都要硬,互相渗透,结合使用,这就是学习单片机语言的基本原则。说了一顿,和具体编程一点关系都没有,但是原则你要把握。汇编语言我就不说了,教材都会详细说明指令的意义和使用方法,下面我说一下C51。C语言的具体结构和编写方法你明白了吗?没明白赶紧看书。C51与通用C语言的区别我理解主要有两点:一是中断函数的声明与使用,二是如何在单片机里进行位操作,我的理解就这一点点,当然这与我水平比较菜有很大关系。那么C语言如何能够认识那些单片机的寄存器呢?难道每写一个程序都先要铺天盖地的定义一番?!这个我们不怕也不用管,KEIL里有自带的包含文件来解决这个问题。你在KEIL里写C51程序的话,上来先写一个#INCLUDE&AT89C51.H&,这一堆问题就解决了,下面你可以直接写P0=0X00,或者SCON=0X00之类,反正C语言可以认识,还能正确编译,怎么样?战略语言确实不得了,脏活全让&AT89C51.H&这个文件做了。当然想舒服就得付出资源的代价,C代码肯定比汇编大,不信你编写一个同样的汇编程序试试看。想学习C51的话,可以找一本教材,但是如果你基本明白C了,买教材就有点浪费了,因为大多数C51教材都花上很大篇幅讲C的规则,什么数据类型,什么控制语句,简直是浪费白纸,所以你借一本教材看看C51和通用C不同的地方就可以了,买一本实在不值得。借不到也可以到网络上搜索一下,有更通俗的教材,这里推荐明浩写的那个基于KEIL软件的C51教材,虽然只有几课内容,很简单,但是非常容易理解,也很实用,同时还说明了KEIL的使用方法。
常见问题就谈这么多,都是一些概括性的介绍,具体问题你要自己去解决。
&&& 第八章:实验设计
你一定很着急知道学习多长时间才具有开发产品的能力,这个过程很快,一般连续学习半年以上(注意不是三天打鱼两天晒网)即可开发简单的产品。你必须严格进行一系列实验,通过实现单片机的所有功能达到提高开发能力的目的。下面列出我自己认为需要完成的实验的名称以及实验项目的说明。
实验1:跑马灯左右循环移动的应用
实验项目:
1、学习IO口的控制技巧,掌握各种数制的转换方法。
2、第一次用取机器周期倍数的延时方法实现移动速度的设定。
3、第二次使用定时器中断的方法实现移动速度的设定。
4、第三次使用DPTR取表的方式实现移动顺序的设定。
实验2:中断的应用
实验项目:
1、第一次用多种模式实现两个定时器中断的功能,可以用LED闪烁显示,也可以让蜂鸣器发声。
2、第二次设定四个中断同时存在,两个外部中断,两个计数器中断,由四个按键作为外部输入。四个按键设定两个优先级,完成五种任务(包括后台的任务和四个中断服务程序的任务)。
实验3:布尔代数(一位机)应用
实验项目:
类似可编程逻辑控制器的使用,选择多个复杂的逻辑关系,使用指令中的逻辑语句完成相关的逻辑功能,使单片机成为一块可以完成复杂逻辑的数字电路。这个实验主要用于工业配线以及顺序生产过程。
实验4:串口应用
实验项目:
1、UART通过74LS164和74LS166实现串行扩展IO口输入输出功能。
2、两个单片机做全双工通讯实验。
3、单片机与PC机之间进行全双工通讯实验。
4、一个单片机与两个以上单片机做全双工主机从机通讯实验。
实验5:单片机音乐编程应用
实验项目:
1、该实验可以用延时的方法也可以用定时器中断的方法实现,主要学习了如何通过对频率和节拍编码表的读取进行音乐编程。
2、在此基础上,可以学习如何使用单片机产生双音频拨号音,完成单片机自动拨号实验。
实验6:直流电机与步进电机控制应用
实验项目:
1、了解直流电机驱动部分硬件原理。掌握单片机控制直流电机正反转的方法,能够使用PWM(脉宽调制)方式改变直流电机转速。
2、了解步进电机驱动部分硬件原理。掌握用脉冲分配的方法驱动步进电机正反转,并且可以通过改变脉冲分配频率来改变步进电机转速。
实验7:键盘与显示器应用
实验项目:
1、独立按键识别操作方法,BCD码转盘的使用方法。
2、扫描式按键操作方法(结合中断操作)。
3、串口扩展IO口的键盘操作方法。
4、静态LED显示操作方法。
5、动态扫描LED显示操作方法。
6、结合时钟芯片(需要扩展),设计一个电子表。
7、结合4*4键盘,设计一个计算器。
8、结合EEPROM,设计一个防掉电电子密码锁。
9、结合步进电机,设计一个可设定和显示速度的步进电机控制板。
实验8:其他显示器件应用
实验项目:
1、点矩阵LED显示器应用。使用4块8*8矩阵LED作为大屏幕,滚动显示中文字幕。
2、使用LCD显示字符与图形,掌握LCD驱动方法。
实验9:AD/DA转换应用
实验项目:
1、使用ADC0809和一种温度探头,结合LED显示制作一只数字温度计。如果温度探头成本过高,可以制作一只数字电压表。
2、使用双积分型A/D转换电路ICL7135制作数字电压表。
3、使用DAC0832制作一个多种波形的数控信号发生器。
4、使用ADC0809和DAC0832,外扩RAM(可使用32K的62256)制作简易数字录音机(录音时间为数秒钟)。
实验10:外部传感器输入与数据采集应用
实验项目:
1、利用光敏三极管采集光电信号。
2、利用红外线对管构成主动式红外线光电信号采集。
3、利用热释电红外线传感器,结合驱动电路,构成被动式红外线光电信号采集。
4、利用驻极体话筒或压电陶瓷片,结合音频锁相环技术(LM567),制作超声波距离探测器,使用LED显示距离。
5、利用霍尔元件,制作伺服电机转速控制器,由键盘设定转速,LED显示。
6、利用压力传感器制作电子秤,键盘输入,LED显示。
实验11:单片机外围扩展IC应用
实验项目:
1、8155原理与应用。
2、8255原理与应用。
3、8279原理与应用。
4、利用时钟芯片DS12887制作智能电子表。
5、利用ISD1420或者APR9600制作公共汽车报站器、汉语报时钟或会说话的万用表。
实验12:IIC技术应用
实验项目:
1、电可擦写存储器AT24C02读写实验。
2、PCF8583驱动实验,可制作电子表。
3、8位并行输入输出芯片PCF8574实验。
4、数模转换芯片PCF8591实验。
IIC技术可以节省单片机端口,有利于设计小型化和制作低成本化,但是实时性有所下降。以前的实验均可由相关IIC器件完成。
实验13:操作系统UCOS_II在单片机上的移植
实验项目:
要求单片机ROM最少要8K,一般要14K以上,外部扩展RAM最少要4K。完成在单片机上运行多个任务的操作系统的移植
如果你已经成功做完以上所列的所有实验,不要谦虚了,请删除本教材,并收下我这个徒弟,可以说在51单片机开发方面你已经走在我们这些菜鸟前面了。对于初学者,当然不必因此而泄气,能够在每个方面都实现一个基本实验就相当不错了,就算自己无法编出程序,把网上编好的程序拿来跑一跑也很不错,起码说明我们具有“移植”的能力,呵呵。别小看这个能力,复杂产品的开发基本都是这样,试问谁能为了一个产品自己开发操作系统?要是能编出来还卖产品干吗?直接卖操作系统就发财了,呵呵!所以初学者要量力而行,上述所列只不过给大家指出个学习方向,基本就这么多了,从简单的开始,一步一步做下去。当然还有一些比较高难的,比如单片机上网,单片机控制蓝牙模块、GSM模块、GPRS模块乃至GPS全球定位系统模块等等,这些暂时不是我们的学习内容,等你成为高手以后再研究吧。
单片机的入门教材暂且写到这里,如果以后有新的体会再继续补充。每一个初学硬件技术的人都要明白,世界上的器件是无穷无尽的,有数以万计的技术可能你还没来得及接触就被淘汰掉了,所以不要揪住一堆知识不放,或者幻想掌握所有器件的使用方法。培养一种思维方式是最重要的——有方法没有知识随时可以学,有知识没方法的话,知识最终也会被忘掉。我们现在学习51,如果我们在学习过程中培养出了解决方法的思维方式,一旦客观需要我们使用AVR,很短的时间我们就可以搞定,哪怕我们对AVR一无所知。
发表于 20:45 |
发表于: 20:38
51单片机入门必读的好文章
请允许我假设你已经掌握基本的模拟与数字电路知识、基本的计算机理论知识(比如知道二进制是怎么回事,RAM和ROM是什么东西)与操作知识(比如会装载与使用应用软件)、明白C语言的基本规则与语句。同时,我默认你有..
单片机名词解释
一、名词解释
1.微处理器:即中央处理器CPU,它是把运算器和控制器集成在一块芯片上的器件总称。
2.单片机(单片微型计算机):把CPU、存储器、I/O接口、振荡器电路、定时器/计数器等构成计算机的主要部件集成在一块芯片上构成一台具有一定功能的计算机,就称为单片微型计算机,简称单片机。
3.程序计数器:程序计数器PC是一个不可寻址的16位专用寄存器(不属于特殊功能寄存器),用来存放下一条指令的地址,具有自动加1的功能。
4.数据指针:数据指针DPTR是一个16位的寄存器,可分为两个8位的寄存器DPH、DPL,常用作访问外部数据存储器的地址寄存器,也可寻址64K字节程序存储器的固定数据、表格等单元。
5.累加器:运算时的暂存寄存器,用于提供操作数和存放运算结果。它是应用最频繁的寄存器,由于在结构上与内部总线相连,所以一般信息的传送和交换均需通过累加器A。
6.程序状态字:程序状态字PSW是一个8位寄存器,寄存当前指令执行后的状态,为下条或以后的指令执行提供状态条件。它的重要特点是可以编程。
7.堆栈:堆栈是一组编有地址的特殊存储单元,数据遵循先进后出的存取原则。栈顶地址用栈指针SP指示。
8.软件堆栈:通过软件唉内部RAM中定义一个区域作为堆栈(即由软件对SP设置初值),称软件堆栈。
9.振荡周期(晶振周期):振荡电路产生的脉冲信号的周期,是最小的时序单位。
10.时钟周期:把2个振荡周期称为S状态,即时钟周期。1个时钟周期=2个振荡周期。
11.机器周期:完成一个基本操作所需的时间称为机器周期。1个机器周期=12个振荡周期。
12.指令周期:执行一条指令所需的全部时间称为指令周期。MCS-51单片机的指令周期一般需要1、2、4个机器周期。
13.地址/数据分时复用总线:是指P0口用作扩展时,先输出低8位地址至地址锁存器,而后再由P0口输入指令代码,在时间上是分开的。
14.准双向并行I/O口:当用作通用I/O口,且先执行输出操作,而后要由输出变为输入操作时,必须在输入操作前再执行一次输出“1”操作(即先将口置成1),然后执行输入操作才会正确,这就是准双向的含义。
15.冻结运行方式:它是节电运行方式的一种,在冻结运行方式时,振荡器继续工作,中断系统、串行口、定时器电路继续由时钟所驱动,但时钟信号不送往CPU,即CPU处于冻结状态。
16.掉电保持运行方式:它是节电运行方式的一种,在掉电保持运行方式时,振荡器被停止工作,但片内RAM和特殊功能寄存器内容被保存,由后备电源继续供电。
17.时序:在统一的时钟信号的控制下,指令执行的过程。
18.总线:连接各部件的公共信息线称为总线。总线分地址总线、数据总线和控制总线。
19.随即存取存储器(RAM):又称读/写存储器,它可对任意存储单元按需要随时读出或写入,且工作速度快。
20.只读存储器(ROM):ROM固化后的信息在工作时是不可改变的,只能从中读出信息,一般用来存放固定的程序和数据。
21.地址码:代表每个存储单元的号码称为地址码。
22.指令地址:存放指令代码的地址称为指令地址。
23.操作数地址:存放数据的地址称为操作数地址。
24.寻址:寻找操作数的地址称为寻址。
25.寻址方式:寻找操作数地址的方法称为寻址方式。
26.立即寻址:指令中直接给出操作数的寻址方式。
27.直接寻址:指令中直接给出操作数地址的寻址方式。
28.寄存器寻址:被寻址的寄存器中的内容就是操作数的寻址方式。
29.寄存器间接寻址:寄存器内容为操作数地址的寻址方式。
30.变址间接寻址:将指令中指定的变址寄存器和基址寄存器的内容相加形成操作数地址的寻址方式。
31.相对寻址:以PC的当前值为基准,加上指令中给出的相对偏移量(rel)形成的有效转移地址,这种寻址方式称为相对寻址。
32.位寻址:以位为单元进行寻址的方式。
33.布尔处理器:即位处理器,它包含有位累加器Cy、位寻址寄存器、位寻址I/O口、位寻址内部RAM、位寻址指令系统、程序存储器等,组成一个完整的、独立的、功能很强的位处理器。
34.指令:指令是机器能直接识别和接受,并指挥计算机执行某种操作的命令。指令由操作码和操作数组成。操作码表明指令要执行的动作性质,即“做什么”,操作数说明参与操作的数据和数据存放的地址,即“对谁做”。
35.目标程序:由机器码编制的计算机能识别和执行的程序称为目标程序(目的程序)。
36.汇编程序:用汇编语言编写的能实现某些功能的程序称为汇编程序。
37.机器语言:计算机能直接识别和执行的语言。
38.汇编语言:一种面向机器的用助记符表示的程序设计语言。
39.高级语言:面向过程并能独立于计算机硬件结构的通用程序设计语言。
40.溢出:表示运算结果超出了数值所允许的范围。
41.中断:由计算机内部或外部某种紧急事件引起并向主机发出请求处理的信号,主机在允许情况下响应请求,暂停正在执行的程序,保存好“断点”处的现场,转去执行中断处理程序,处理完后自动返回到原断点处,继续执行原程序,这一处理过程就称为“中断”。
42.中断现场:指转入中断程序前,原主程序中某些存储单元的信息,如Acc、B、PSW等的信息,由PUSH和POP完成保护及恢复的工作。
43.中断现场保护和恢复:为了能使中断处理完后正确返回到被中断的原程序的断点处继续往下执行,必须将断点处的现场压进堆栈保护。待执行完中断处理程序,恢复现场,返回原断点继续执行原程序。这一过程就称为中断现场保护和恢复。
44.中断源:引起并发出中断请求的源头(如某设备或事件)称为中断源。
45.查询中断:是中断通过软件逐个查询各中断源的中断请求标志的方式,其查询顺序反映出各中断源的优先顺序。
46.向量中断:以硬件为基础,为每个中断源直接提供对应中断服务程序入口地址。
47.中断入口地址:由系统统一分配给五个中断源对应的中断服务程序的入口地址,该地址不可由用户自己设定。
48.可编程的:是指通过软件可实现对相关系统功能的设置与控制。(或者:可由用户通过指令对SFR的各位进行编程来实现相关的功能。)
49.可屏蔽中断:即通过软件对片内特殊功能寄存器IE的设置,实现对各中断源中断请求的开放(允许)或屏蔽(禁止)的控制。
50.断点:程序正常运行时被中断请求信号打断的地方称为断点。
51.全双工串行通信:即用两根通信线各自连接发送/接收端,由两个单向线组成双向传输。(或者:指在任何时候均可实现接收、发送的双向传输通信方式。)
52.波特率:单位时间内传输的位信息量。(或者:每秒钟接收或发送数据的位数。)1波特=1位/秒(1bps)。
53.溢出率:单位时间(秒)内定时器/计数器1回0溢出的次数。
54.伪指令:又称汇编程序控制译码指令,属说明性的汇编指令。汇编时不产生及其指令代码,不影响程序的执行,仅产生供汇编用的某些命令,在汇编时执行某些特殊的操作。
55.汇编语言源程序:用汇编语言编写的能够实现某些功能的指令集合。
56.汇编:将源程序翻译成计算机能够识别并执行的机器语言的过程称为汇编。
57.流程图:用来展现总体设计思路和程序流向的图形称为流程图。
58.干扰:把单片机应用系统所不需要的,影响其正常可靠工作的信号称为噪声,又称干扰。
59.干扰源:凡能产生一定能量、足以影响系统及其周围电路正常工作的媒体称为干扰源。
60.指令冗余:在编程时应尽量多选用单字节指令,并在关键的部位人为地插入一些单字节的NOP空操作指令,或将有效单字节指令重复书写,这就是指令冗余。
61.软件陷阱:就是用一段引导程序,强行将捕获的跑飞程序引导到一个指定地址,执行一段专门对程序出错进行处理的程序,然后转入指定的入口执行正常的运行程序。
62.系统复位:使CPU进入初始状态,从(PC)=0000H地址开始执行程序的过程称为系统复位。(系统复位有硬件复位和软件复位两种方法。)
63.线性选择法:是将空余的地址总线中的某一根地址线作为选择某一片存储器或某一功能部件接口芯片的片选信号线的方法。
64.地址译码法:是将有限的地址线通过译码器译码转换后扩展连接更多功能部器件的方法。
65.地址总线:传送地址信号的总线。
66.数据总线:传送数据信号的总线。
67.控制总线:传送控制信号的总线。
68.算法:解决问题的具体方法。
69.开发系统:具备完整、齐全的开发、调试手段的专门的计算机系统成为开发系统。
70.仿真:将开发器的单片机的40线引脚信号通过扁平线和接插件与应用系统的单片机的引脚相连,使单片机应用系统与开发器合用同一台单片机,在开发器上通过仿真头调试应用系统时,就像使用应用系统中真的单片机一样,并不感觉到这种“替代”,这就是所谓的“仿真”。
71.RS-232C:这是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串行接口标准,用来实现 与计算机之间、计算机与外设之间的数据传输。
72.EPROM:紫外线可擦除、电可编程的只读存储器。
73.EEPROM:电可擦除、电可编程的只读存储器。
74.中央处理单元:即中央处理器、微处理器,它是把运算器和控制器集成在一块芯片上的器件总称。
75.SRAM:即静态随即存储器,用触发器作为存储单元存放1 和0,存取速度快,只要不掉电即可持续保持内容不变。一般静态RAM 的集成度较低,成本较高。
76.DRAM:即动态,DRAM只能将数据保持很短的时间,DRAM使用电容存储,为了保存数据,所以必须隔一段时间刷新(refresh)一次,如果存储单元没有被刷新,存储的信息就会丢失。
76.存储器编址:为每个存储单元编写地址码就称为存储器编址。
77.串行通信:数据的各位一位一位顺序传输的通行方式。
78.并行通信:数据的所有位同时传输的通信方式。
79.同步串行通信:发送和接收数据时时钟需始终保持严格同步的串行通信方式。
80.异步串行通信:不需要同步字符,也不要求保持数据流的连续性,只需要按照规定的帧格式传送的串行通行方式。
81.(信息)帧:帧是异步通信中数据传送的一个表示单位。一帧信息由起始位、数据位、奇偶校验位和停止位组成。
82.单工:只有一根通信线,只允许按照一个固定的方向传送的通信方式。
83.半双工:只用一根通信线,可以用于接收或发送,但不能同时在两个方向上传送的通信方式。
84.全双工:用两根单向的通信线组成的双向传送的通信方式。
85.A/D转换:将连续变化的模拟量转换成离散的数字量。
86.D/A转换:将计算机处理的数字量转换成连续变化的模拟量。
87.采样:所谓采样就是采集模拟信号的样本。
88.SFR:即特殊功能寄存器,是MCS-51单片机中各功能部件对应的寄存器,用于存放相应功能部件的控制命令、状态或数据。
89.微型计算机系统:由硬件和软件共同组成的完整计算机系统。
90.工业级产品:工作环境介于民用级和军用级之间的产品。
91.相对偏移量:是一个带符号的8位二进制数,以PC的当前值为起始地址,相对PC在-128~+127个字节单元间偏移的量。
二、简答题
1.目前微型计算机正沿着哪两个分支迅速发展?为什么会形成单片机这一分支?
答:(1)目前微型计算机正沿着通用计算机系统和嵌入式系统这两个分支迅速发展。
&& (2)为了满足更广泛的实时应用的需要,从微型计算机家族中形成单片机这一分支。
2.什么是单片微型计算机?它与典型微型计算机在结构上有和区别?
答:(1)见书P1。(在一块单晶芯片内集成了……,简称单片机。)
&& (2)与典型微型计算机在结构上的区别是:单片机采用哈佛结构,存储器ROM和RAM是严格区分、相互独立的,程序和数据存储器独立编址,而典型微机采用冯.诺依曼结构,程序和数据存储器统一编址。
3.单片机具有哪些突出优点?
答:单片机的突出优点:体积小、重量轻、单一电源、功耗低、功能强、价格低廉、运算速度快、抗干扰能力强、可靠性高。
4.MCS-51系列各档单片机各有什么特点?同一档次的8051、8751、8031又有何区别?
答:(1)不同型号MCS-51单片机CPU处理能力和指令系统完全兼容,只是存储器、定时器、中断源和I/O接口的配置有所不同。
&& (2)8051:片内含有掩膜ROM型程序存储器;只能由生产厂家代为用户固化;&&&&&&&&&& 批量大、永久保存、不修改时用。
8751:片内含EPROM型程序存储器;
用户可固化,可用紫外线光照射擦除;&&&&&&&&&& 但价格高。
8031:片内无程序存储器,可在片外扩展;方便灵活,价格便宜。
5.何谓工业级产品?单片机有几级产品?如何合理选择?
答:(1)工作环境介于民用级和军用级之间的产品。
&& (2)单片机芯片分有三级产品:民用级、工业用级和军品级。
&& (3)选用单片机时应注意与构成系统的其他元器件相匹配,并满足相关技术要求。
1.MCS-51系列单片机从制造工艺、功能结构上分为哪几种类型和产品?
答:见书P10。(倒数第三段部分)
2.MCS-51系列单片机内部包含哪些主要逻辑功能部件?
答:见书P10-11。
3.为了更好地适应“面向控制”的应用特点,MCS-51单片机的CPU作了哪些独特的改进?
答:为了更好地适应“面向控制”的应用特点,MCS-51单片机的CPU具有一般微机ALU所不具备的位处理功能。
4.MCS-51系列单片机的时钟周期、机器周期、指令周期是如何分配的?当主频为12MHz时,一个机器周期为几微秒?执行一条最长的指令需要几微秒?
答:(1)1个时钟周期=2个振荡周期。
1个机器周期=12个振荡周期。
一条指令所需的全部时间称为指令周期。MCS-51单片机的指令周期一般需要1、2、4个机器周期。
&& (2)主频为12MHz时,一个机器周期为1微秒
&& (3)执行一条最长的指令需要4微秒。
5.何谓程序状态字?各位的定义又是什么?
答:(1)见名词解释部分相关答案。
&& (2)各位的定义见书P15。
6.MCS-51设有4组工作寄存器,有什么特点?应如何正确使用?
答:(1)MCS-51设有4组工作寄存器,每个寄存器组有8个8位的工作寄存器,这是8051单片机所特有的,是内部数据存储器RAM中的一部分。
&& (2)使用不同的工作寄存器组时,通过设置RS1(PSW.4)和RS0(PSW.3)两位的值来确定。具体选用的设置方法见:P15。
7.何谓堆栈?栈指针SP的作用是什么?为什么要重新定义SP?
答:(1)见名词解释部分相关答案。
&& (2)栈指针SP的作用是指向栈顶,存放栈顶地址。
(3)为了避免与工作寄存器重迭,一般在程序的初始化时应重新定义SP,再定位堆栈区域。
8. MCS-51设有4个并行I/O口(共32线),在使用时各有哪些特点与分工?简述各个并行I/O口的结构特点?
答:(1)见书P13(或笔记)。
&& (2)P0口既可作地址、数据分时复用总线口,这时是个真正的双向I/O口;又可作通用I/O口,但这时是个准双向I/O口,由于内部无上拉电阻,需要外接上拉电阻。
&&&&&&& P1口是一个标准的8位准双向并行I/O口,内部接有上拉电阻,无需外接上拉电阻。
&&&&&&& P2口既可作高8位地址输出,也可作通用I/O口,内部接有上拉电阻,无需外接上拉电阻。
&&&&&&& P3口是一个双功能口,其第一功能作通用I/O口,是一个8位的准双向输入或输出口,内部接有上拉电阻,无需外接上拉电阻;其第二功能为变异功能,其每位都有具体的功能定义。
9.何谓地址/数据分时复用总线?在什么情况下使用这种工作方式?
答:(1)见名词解释部分相关答案。
&& (2)进行外部功能扩展时使用这种工作方式。
10.何谓准双向并行I/O口?如何正确使用输入/输出操作?
答:(1)见名词解释部分相关答案。
&& (2)用作输入时应先将口置成“1”。
11. MCS-51的ALE线的作用是什么?在主机不访问外部数据时它的输出脉冲频率是多少?可作什么用?
答:(1)ALE线的作用是允许地址锁存信号输出。
&& (2)在主机不访问外部数据时它的输出脉冲频率是1/6振荡频率。
&& (3)可作外部时钟或定时信号用。
答:(1)PSEN线的作用是允许访问外部程序存储器的信号输出,低电平有效。
&& (2)PSEN选通外部程序存储器读允许;
&&&&&&& RD选通外部数据存储器读允许;
&& &&&&&WR选通外部数据存储器写允许。
13.主机复位后,PC的内容是什么?有何特殊含义?
答:(1)主机复位后,PC的内容是0000H。
&& (2)表示程序立即从“0000H”号单元开始重新执行。
14.什么是冻结运行方式?怎样进入和退出冻结运行方式?
答:(1)见名词解释部分相关答案。
(2)进入冻结运行方式的方法是通过程序将PCON.0位置“1”。
退出冻结运行方式的方法有两种:一种是有中断信号进入,CPU响应时引起硬件对PCON.0位清“0”;另一种是硬件复位。
1.简述半导体存储器的种类及其各自的功能特点?
答:半导体存储器分为随机存取存储器RAM和只读存储器ROM。随机存储器RAM的特点为:可对任意存储单元按需要随时读出或写入,且工作速度快;只读存储器ROM的特点为:固化后的信息在工作时是不能改变的,只能从中读出信息,故一般用来存放固定的程序和数据。
2.何谓随机存取存储器RAM?静态RAM和动态RAM的本质区别是什么? 动态RAM为什么要刷新?
答:(1)见名词解释部分相关答案。
&& (2)静态RAM和动态RAM的本质区别是静态RAM不需要刷新,而动态RAM需要刷新。
&& (3)存储在MOS管栅极电容上的信息,由于存在泄漏电阻而栅极电容上的电荷经过一定时间泄放,从而使存储的信息从“1”变为“0”,必须定期对原存信息“1”的单元进行电荷补充。另外,单管动态RAM在读出时,其存储内容受到破坏,属破坏性读出,需要信息再生。所以需要刷新。
3.何谓只读存储器ROM?有何功能特点?试述ROM、PROM、EPROM、EEPROM的本质区别?
答:(1)见名词解释部分相关答案。
&& (2)特点:固化后的信息在工作时是不能改变的。
&& (3)ROM即掩膜ROM由生产厂家成批实现程序固化,只能读出不能改写;PROM可由用户用专门的固化器进行程序固化,一经固化后,只能读出,不能再改写;EPROM可通过紫外线照射完成信息的擦洗,经过擦洗后又可再次固化,即紫外线可擦除、电可写入;EEPROM不需要脱机擦洗和固化,可直接在计算机应用系统中进行在线修改,即电可擦除、电可写入。
4.为什么说MCS-51单片机的存储器结构独特?这种结构有什么优点?
答:(1)因为MCS-51单片机采用的是哈佛结构,这种结构的特点是吧程序存储器和数据存储器截然分开,各有自己的寻址系统、控制信号和功能。
&& (2)这种结构的优点是能有效地使用较大而固定的程序和频繁地处理大量的数据或变量。
5.MCS-51系列单片机根据程序存储器的不同设置可分为哪三种产品?通过什么信号来区别不同空间的寻址?
答:【(1)MCS-51系列单片机根据程序存储器的不同设置可分为以下三种:最低地址空间为4K字节ROM/EPROM的单片机,如8051、8751;最低地址空间为8K字节ROM/EPROM的单片机,如8052;无内部程序存储器的单片机,如8031。】
(1)MCS-51系列单片机按片内不同程序存储器的配置来分,可以分为以下3种类型:
&= 1 \* GB3 ① 片内带Mask ROM(掩膜ROM)型:8051、80C51、8052、80C52。此类芯片是由半导体厂家在芯片生产过程中,将用户的应用程序代码通过掩膜工艺制作到ROM中。其应用程序只能委托半导体厂家“写入”,一旦写入后不能修改。此类单片机适合大批量使用。
&= 2 \* GB3 ② 片内带EPROM型:8751、87C51、8752。此类芯片带有透明窗口,可通过紫外线擦除存储器中的程序代码,应用程序可通过专门的编程器写入到单片机中,需要更改时可擦除重新写入。此类单片机价格较贵,不宜于大批量使用。
&= 3 \* GB3 ③ 片内无ROM(ROMLess)型:8031、80C31、8032。此类芯片的片内没有程序存储器,使用时必须在外部并行扩展程序存储器存储芯片。此类单片机由于必须在外部并行扩展程序存储器存储芯片,造成系统电路复杂,目前较少使用。
&& (2)不同空间的寻址通过EA来区别。
6.简述MCS-51内部数据存储器的空间分配。访问外部数据存储器和程序存储器有什么本质区别?
答:(1)8051内部128B的数据RAM区,包括有工作寄存器组区、位寻址区和数据缓冲区。各区域的特性如下:
1 \* GB3 ① 00H~1FH为工作寄存器组区,共分4组,每组占用8个RAM字节单元,每个单元作为一个工作寄存器,每组的8个单元分别定义为8个工作寄存器R0~R7。当前工作寄存器组的选择是由程序状态字PSW的RS1、RS0两位来确定。如果实际应用中并不需要使用工作寄存器或不需要使用4组工作寄存器,不使用的工作寄存器组的区域仍然可作为一般数据缓冲区使用,用直接寻址或用Ri的寄存器间接寻址来访问。
2 \* GB3 ② 20H~2FH为可位寻址区域,这16个字节的每一位都有一个地址,编址为00H~7FH。当然,位寻址区也可以用作字节寻址的一般数据缓冲区使用。
3 \* GB3 ③ 30H~7FH为堆栈、数据缓冲区。
(2)访问外部数据存储器和程序存储器的本质区别是它们有各自不同的选通信号。访问外部数据存储器时,由数据指针DPTR提供寻址地址码,由RD/WR进行读/写选通;访问外部程序存储器时,由程序指针PC提供地址码,由PSEN进行读选通。
7.简述布尔处理存储器的空间分配、内部RAM中包含哪些可位寻址单元。
答:布尔处理存储器的空间分布有内部RAM的128位和部分专用、特殊功能寄存器,内部RAM中包含的可位寻址的单元是20H~2FH,共16个单元。
8.简述MCS-51的几种寻址方式。
答:MCS-51系列单片机设有7种基本寻址方式,分别为:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址寄存器加变址寄存器间接寻址、相对寻址、位寻址。
9.访问特殊功能寄存器应采用什么寻址方式?
答:访问特殊功能寄存器应采用直接寻址方式。
10.基址寄存器加变址寄存器间接寻址方式有什么特点?主要应用于什么场合?采用DPTR或PC作基址寄存器其寻址范围有何不同?
答:(1)可实现动态寻址。
&& (2)主要应用于实现多出口的散转和查表。
&& (3)采用DPTR作为基址寄存器其寻址范围为64K,采用PC作为基址寄存器其寻址范围最大为256B。
11.为什么说MCS-51系列单片机具有独特的布尔处理器?
答:因为MCS-51的位处理器包含有位累加器Cy、位寻址寄存器、位寻址I/O口、位寻址内部RAM、位寻址指令系统、程序存储器等,组成一个完整的、独立的、功能很强的位处理器,可以方便地实现置位、清零、求反、传送、判跳和逻辑运算等操作,不需要大范围的传送数据,大大提高了速度,增加了实时性。
1.MCS-51系列单片机的指令系统具有哪些特点?(书上P92~93)
答:特点之一是指令集当中的很多指令可派生出若干条指令,大大扩充了指令功能。
特点之二是转移指令极其丰富,设置了所谓长、绝对、相对、间接等不同转移范围的指令,既使用方便,又能节省程序的存储器空间,提高转移速度。
特点之三设有专门的布尔(位)处理指令集。
2.为什么说MCS-51系列单片机的传送指令极为丰富?为什么在某些传送中要旁路工作寄存器或累加器A?
答:(1)因为MCS-51系列单片机的传送指令能实现多种数据传送操作,能实现各个方面的数据传送。
(2)为了提高数据传送速度和编程效率。
3.对8051内部RAM的128~255字节的地址空间寻址要注意些什么?
答:对8051内部RAM的128~255字节的地址空间寻址要注意的是这部分地址空间的很多单元无定义,对无定义单元进行读/写,则读得的数不定,欲写入的数将被丢失。
4.指出下列指令的本质区别:
MOV A,data
MOV A,#data
MOV direct1,direct2
MOV 74H,#78H
5.设R0的内容为32H,A的内容为48H,内部RAM的32H单元内容为80H,40H单元内容为08H,请指出在执行下列程序段后上述各单元内容的变化。
MOV& A,@R0
MOV& @R0,40H
MOV& 40H,A
MOV& R0,#35H
答:(A)=80H,(R0)=35H,(32H)=08H,(40H)=80H
6.某一系统,要求根据运算结果给出的数据,到指定的数据表中查找对应的数据输出。
设给出数据存于内部RAM30H单元中,数据表存放在程序存储器的10H页,表首地址为1000H。查表所得数据(均由双字节组成)高位字节存于41H,地位

我要回帖

更多关于 单片机计数器 的文章

 

随机推荐