热门搜索关键字:
点击:80 更新时间:2016.01.18 来源: www.ic-test.cn
在自动化工作中,我们常常听到过单片机,但是不进入这个领域的人并不清楚什么是单片机,今日群测科技烧录器小编就为我们讲解下,这个常识。
我们以打算盘为例核算一道算术题。例:36+163×156——166÷34。现在要进行运算,首要需求一把算盘,其次是纸和笔。我们把要核算的问题记录下来,然后第一步先算163×156,把它与36相加的作用记在纸上,然后核算166÷34,再把它从上一次作用中减去,就得到终究的作用。
现在,我们用单片机来结束上述进程,明显,它首要要有代替算盘进行运算的部件,这就是“运算器”;其次,要有能起到纸和笔作用的器件,即能回想原始标题、原始数据和中心作用,还要记住使单片机能自动进行运算而编制的各种指令。这类器件就称为“存贮器”。此外,还需求有能代替人作用的控制器,它能依据事前给定的指令宣布各种控制信号,使整个核算进程能一步步地进行。但是光有这三部分还不可,原始的数据与指令要输入,核算的作用要输出,都需求按先后次第进行,有时还需等候。
如上例中,当在核算163×156时,数字36就不能一同进入运算器。因此就需求在单片机上设置按控制器的指令进行动作的“门”,当运算器需求时,就让新数据进入。或许,当运算器得到终究作用时,再将此作用输出,而中心作用不能随意“溜出”单片机。这种对输入、输出数据进行必定处理的“门”电路在单片机中称为“口”(Port)。在单片机中,根柢上有三类信息在活动,一类是数据,即各种原始数据(如上例中的36、163等)、中心作用(如166÷34所得的商4、余数30等)、程序(指令的集结)等。这样要由外部设备通过“口”进入单片机,再存放在存贮器中,在运算处理进程中,数据从存贮器读入运算器进行运算,运算的中心作用要存入存贮器中,或终究由运算器经“出入口”输出。
用户要单片机施行的各种指令(程序)也以数据的办法由存贮器送入控制器,由控制器解读(译码)后变为各种控制信号,以便施行如加、减、乘、除等功用的各种指令。所以,这一类信息就称为控制指令,即由控制器去控制运算器一步步地进行运算和处理,又控制存贮器的读(取出数据)和写(存入数据)等。第三类信息是地址信息,其作用是告诉运算器和控制器在何处去取指令取数据,将作用存放到什么当地,通过哪个口输入和输出信息等。
存贮器又分为只读存贮器和读写存贮器两种,前者存放调试好的固定程序和常数,后者存放一些随时有可能改动的数据。断章取义,只读存贮器一旦将数据存入,就只能读出,不能更改(EPROM、E2PROM等类型的ROM可通过必定的办法来更改、写入数据——编者注)。而读写存贮器可随时存入或读出数据。深圳群测科技主要从事各类IC编程器研发、烧录机、烧录器、自动烧录机、芯片自动烧录机、全自动烧录机、烧录编程器生产与销售,针对半导体工厂、芯片通路商、手机制造商、汽车电子、消费数码电子生产商及EMS代工厂等提供集成电路烧录、测试、返修服务提供商。
实践上,人们往往把运算器和控制器吞并称为中央处理单元——CPU。单片机除了进行运算外,还要结束控制功用。所以离不开计数和守时。因此,在单片机中就设置有守时器兼计数器,其根柢结构与本连载之(二)中的举例相似。到这儿间断,我们现已知道了单片机的根柢组成,即单片机是由中央处理器(即CPU中的运算器和控制器)、只读存贮器(一般标明为ROM)、读写存贮器(又称随机存贮器一般标明为RAM)、输入/输出口(又分为并行口和串行口,标明为I/O口)等等组成。实践上单片机里边还有一个时钟电路,使单片机在进行运算和控制时,都能有节奏地进行。其他,还有所谓的“接连系统”,这个系统有“传达室”的作用,当单片机控制方针的参数抵达某个需求加以干涉的情况时,就可经此“传达室”通报给CPU,使CPU依据外部事态的轻重缓急来选用恰当的唐塞办法。
现在,我们现已知道了单片机的组成,余下的问题是如何将它们的各部分连接成互相相关的整体呢?实践上,单片机内部有一条将它们连接起来的“枢纽”,即所谓的“内部总线”。此总线有如大城市的“干道”,而CPU、ROM、RAM、I/O口、接连系统等就散布在此“总线”的两旁,并和它连通。然后,全部指令、数据都可经内部总线传送,有如大城市内各种物品的传送都通过干道进行。
单片机指令系统与汇编语言程序
前面现已叙说了单片机的几个首要组成部分,这些部分构成了单片机的硬件。所谓硬件(Hardware),就是看得到,摸得到的实体。但是,光有这样的硬件,还仅仅有了结束核算和控制功用的可能性。单片机要实在地能进行核算和控制,还有必要有软件(Software)的协作。软件首要指的是各种程序。只需将各种正确的程序“灌入”(存入)单片机,它才调有效地作业。单片机所以能自动地进行运算和控制,正是因为人把结束核算和控制的进程一步步地用指令的办法,即一条条指令(Instruction)预先存入到存贮器中,单片机在CPU的控制下,将指令一条条地取出来,并加以翻译和施行。就以两个数相加这一简略的运算来说,当需求运算的数已存入存贮器后,还需求进行以下几步:
第一步:把第一个数从它的存贮单元(Location)中取出来,送至运算器。 第二步:把第二个数从它地址的存贮单元中取出来,送至运算器; 第三步:相加; 第四步:把相加完的作用,送至存贮器中指定的单元。
全部这些取数、送数、相加、存数等等都是一种操作(Operation),我们把要求核算机施行的各种操作用指令的办法写下来,这就是指令。但是怎样才调差异和施行这些操作呢?这是在规划单片机时由规划人员赋予它的指令系统所选择的。一条指令,对应着一种根柢操作;单片机所能施行的全部指令,就是该单片机的指令系统(Iustruction Set),不同品种的单片机,其指令系统亦不同。
运用单片机时,事前应当把要处理的问题编成一系列指令。这些指令有必要是选定的单片机能辨认和施行的指令。单片机用户为处理自己的问题所编的指令程序,称为源程序(Source Program)。指令一般分为操作码(Opcode)和操作数(Operand)两大部分。操作码标明核算机施行什么操作,即指令的功用;操作数标明参与操作的数或操作数地址的地址(即操作数所存放的当地编号)。因为单片机是一种可编程器件,只“认得”二进码(0、1)。要单片机运作,单片机系统中的全部指令,都有必要以二进制编码的办法来标明。例如,在Intel公司的MCS——51系列单片机中,从存贮器中取出一数到CPU中的累加器(在运算器中,参与运算、存放运算作用的专用存放器)的指令代码为74H,累加器内容加当即数的代码为24H,再加上当即数代码,累加器送数到内部RAM存贮器的代码为F6H——F7H等。这些指令是用十六进制标明二进制的机器码。
MCS——51单片机的字长为8位,有时,要结束某些操作用一个字节尚不能充分表达。所以,在指令系统中有单字节指令,也有多字节指令。机器码是由一连串的0和1组成,没有明显的特征,欠好回想,不易了解,易犯错。所以,直接用它来编写程序十分困难。因此,人们就用一些助记符(Mue monic)——一般是指令功用的英文缩写来代替操作码,如MCS——51中数的传送常用MOV(Move的缩写)、加法用Add(Addition的缩写)来作为助记符。这样,每条指令有明显的动作特征,易于回想和了解,也不简略犯错。用助记符来编写的程序称为汇编语言程序。但是,助记符编写的程序便于人了解,可单片机却只知道二进制机器代码,因此,为了让单片机能“读懂”汇编语言程序有必要再转换成由二进制机器码构成的程序,这种转换进程,就称为“汇编”。汇编可仰仗于人工查表法来结束,也可仰仗PC机通过所谓“穿插汇编程序”来结束。由机器码构成的用户程序一旦“进入”了单片机,再“发起”单片机,就可让它施行输入程序所规矩的任务。深圳群测科技主要从事各类IC编程器研发、烧录机、烧录器、自动烧录机、芯片自动烧录机、全自动烧录机、烧录编程器生产与销售。
MCU--51 CPU和存储器
单片机8051的CPU由运算器和控制器组成。
一、运算器
运算器以结束二进制的算术/逻辑运算部件ALU为中心,再加上暂存器TMP、累加器ACC、存放器B、程序情况标志存放器PSW及布尔处理器。累加器ACC是一个八位存放器,它是CPU中作业最再三的存放器。在进行算术、逻辑运算时,累加器ACC往往在运算前暂存一个操作数(如被加数),而运算后又保存其作用(如代数和)。存放器B首要用于乘法和除法操作。标志存放器PSW也是一个八位存放器,用来存放运算作用的一些特征,如有无进位、借位等。其每位的详细意义如下所示。PSW CY AC FO RS1 RS0 OV —— P对用户来讲,最关心的是以下四位。
1进位标志CY(PSW7)。它标清楚运算是否有进位(或借位)。假定操作作用在最高位有进位(加法)或许借位(减法),则该位为1,不然为0。
2辅佐进位标志AC。又称半进位标志,它反映了两个八位数运算低四位是否有半进位,即低四位相加(或减)有否进位(或借位),如有则AC为1情况,不然为0。
3溢出标志位OV。MCS——51反映带符号数的运算作用是否有溢出,有溢出时,此位为1,不然为0。
4奇偶标志P。反映累加器ACC内容的奇偶性,假定ACC中的运算作用有偶数个1(如11001100B,其间有4个1),则P为0,不然,P=1。PSW的其它位,将在往后再介绍。因为PSW存放程序施行中的情况,故又名程序情况字?运算器中还有一个按位(bit)进行逻辑运算的逻辑处理机(又称布尔处理机)。其功用在介绍位指令时再说明。
二、控制器
控制器是CPU的神经中枢,它包括守时控制逻辑电路、指令存放器、译码器、地址指针DPTR及程序计数器PC、库房指针SP等。这儿程序计数器PC是由16位存放器构成的计数器。要单片机施行一个程序,就有必要把该程序按次第预先装入存储器ROM的某个区域。单片机动作时应按次第一条条取出指令来加以施行。因此,有必要有一个电路能找出指令地址的单元地址,该电路就是程序计数器PC。当单片机开端施行程序时,给PC装入第一条指令地址地址,它每取出一条指令(如为多字节指令,则每取出一个指令字节),PC的内容就自动加1,以指向下一条指令的地址,使指令能次第施行。只需当程序遇到转移指令、子程序调用指令,或遇到接连时(后边将介绍),PC才转到所需求的当地去。8051 CPU碢C指定的地址,从ROM相应单元中取出指令字节放在指令存放器中存放,然后,指令存放器中的指令代码被译码器译成各种办法的控制信号,这些信号与单片机时钟振荡器发生的时钟脉冲在守时与控制电路中相结合,构成按必守时刻节拍改动的电陡峭时钟,即所谓控制信息,在CPU内部和谐存放器之间的数据传输、运算等操作。
三、存储器
存储器是单片机的又一个重要组成部分,图6给出了一种存储容量为256个单元的存储器结构示意图。其间每个存储单元对应一个地址,256个单元共有256个地址,用两位16进制数标明,即存储器的地址(00H——FFH)。存储器中每个存储单元可存放一个八位二进制信息,一般用两位16进制数来标明,这就是存储器的内容。存储器的存储单元地址和存储单元的内容是不同的两个概念,不能稠浊。
一、程序存储器
程序是控制核算机动作的一系列指令,单片机只知道由“0”和“1”代码构成的机器指令。如前述用助记符编写的指令MOV A,#20H,换成机器知道的代码74H、20H:(写成二进制就是01110100B和00100000B)。在单片机处理问题之前有必要事前将编好的程序、表格、常数汇编成机器代码后存入单片机的存储器中,该存储器称为程序存储器。程序存储器可以放在片内或片外,亦可片内片外一同设置。因为PC程序计数器为16位,使得程序存储器可用16位二进制地址,因此,表里存储器的地址最大可从0000H到FFFFH。8051内部有4k字节的ROM,就占用了由0000H——0FFFH的最低4k个字节,这时片外扩展的程序存储器地址编号应由1000H开端,假定将8051作为8031运用,不想运用片内4kROM,全用片外存储器,则地址编号仍可由0000H开端。不过,这时应使8051的第{31}脚(即EA脚)坚持低电平。当EA为高电平时,用户在0000H至0FFFH规划内运用内部ROM,大于0FFFH后,单片机CPU自动访问外部程序存储器。
二、数据存储器
单片机的数据存储器由读写存储器RAM组成。其最大容量可扩展到64k,用于存储实时输入的数据。8051内部有256个单元的内部数据存储器,其间00H——7FH为内部随机存储器RAM,80H——FFH为专用存放器区。实践运用时应首要充分运用内部存储器,从运用视点讲,搞清内部数据存储器的结构和地址分配是十分重要的。因为将来在学习指令系统和程序规划时会常常用到它们。8051内部数据存储器地址由00H至FFH共有256个字节的地址空间,该空间被分为两部分,其间内部数据RAM的地址为00H——7FH(即0——127)。而用做特别功用存放器的地址为80H——FFH。在此256个字节中,还拓荒有一个所谓“位地址”区,该区域内不光可按字节寻址,还可按“位(bit)”寻址。关于那些需求进行位操作的数据,可以存放到这个区域。从00H到1FH组织了四组作业存放器,每组占用8个RAM字节,记为R0——R7。终究选用那一组存放器,由前述标志存放器中的RS1和RS0来选用。在这两位上放入不同的二进制数,即可选用不同的存放器组,如附表1所示。
三、特别功用存放器
特别功用存放器(SFR)的地址规划为80H——FFH。在MCS——51中,除程序计数器PC和四个作业存放器区外,其他21个特别功用存放器都在这SFR块中。其间5个是双字节存放器,它们共占用了26个字节。各特别功用存放器的符号和地址见附表2。其间带*号的可位寻址。特别功用存放器反映了8051的情况,实践上是8051的情况字及控制字存放器。用于CPU PSW就是典型一例。这些特别功用存放器大体上分为两类,一类与芯片的引脚有关,另一类作片内功用的控制用。与芯片引脚有关的特别功用存放器是P0——P3,它们实践上是4个八位锁存器(每个I/O口一个),每个锁存器附加有相应的输出驱动器和输入缓冲器就构成了一个并行口。MCS——51共有P0——P3四个这样的并行口,可提供32根I/O线,每根线都是双向的,而且大都有第二功用。其他用于芯片控制的存放器中,累加器A、标志存放器PSW、数据指针DPTR等的功用前已提及,而另一些存放器的功用在后边有关部分再作进一步介绍
单片机的指令系统和寻址办法
单片机要正常运作,事前需编制程序,再把程序放入存贮器中,然后由CPU施行该程序。程序是由指令组成的,指令的根柢组成是操作码和操作数。单片机的品种许多,规划时怎样标明操作码和操作数,都有各自的规矩,再有指令代码也各不相同,因此,有必要对所选单片机的全部指令,也就是所谓“指令系统”,有满意的了解。各个系列的单片机虽然有不同的指令系统,但也有其共同性。掌握一种单片机的指令系统,对其它系列单片机可以起到举一反三的作用。MCS——51单片机运用广泛,派生品种多,具有代表性,所以,这儿以MCS——51系列的指令系统为例说明“指令”的组成和运用。
1、MOV A,#20H
这条指令标明把20H这个数送入累加器A中(一个特别功用存放器)。
2、ADD A,70H
这条指令标明把累加器A中的内容(在上例中送入的#20H)和存贮器中地址为70H单元中的内容(也是一个数字),通过算术逻辑单元(英文缩写为ALU)相加,并将作用保留在A中。这儿MOV、ADD等称为操作码,而A、#20H、70H等均称为操作数。在汇编语言程序中,操作码一般由英文单词缩写而成,这样有助于回想,所以又称助记符。如MOV就是英文单词MOVE的缩写,含有搬移的意思;而ADD即为英文单词,其意为相加。因此,关于略懂英语的用户,掌握单片机指令的意义是较为便当的。操作数有多种标明法,如以上的#20H称为当即数,即20H就是实在的操作数。而70H是存贮器中某个单元的地址,在该单元中,放着操作数(比方说是3AH),ADD A,70H不是将70H和A中的内容相加,而是从存贮器70H单元中将3AH取出和A中的内容相加。由上可知,要找到实践操作数,有时就要转个弯,乃至转几个弯,这个进程称为寻址,MCS——51共有7种寻址办法,现介绍如下:
一、当即寻址:
操作数就写在指令中,和操作码一同放在程序存贮器中。把“#”号放在当即数前面,以标明该寻址办法为当即寻址,如#20H。
二、存放器寻址:
操作数放在存放器中,在指令中直接以存放器的姓名来标明操作数的地址。例如MOV A,R0就归于存放器寻址,即将R0存放器的内容送到累加器A中。
三、直接寻址:
操作数放在单片机的内部RAM某单元中,在指令中直接写出该单元的地址。如前例的ADD A,70H中的70H。
四、存放器直接寻址:
操作数放在RAM某个单元中,该单元的地址又放在存放器R0或R1中。 假定RAM的地址大于256,则该地址存放在16位存放器DPTR(数据指针)中,此刻在存放器名前加@符号来标明这种直接寻址。如MOV A,@ R0。其它还有变址寻址、相对寻址、位寻址等,待往后再详细介绍。可能有人会问,在指令中直接给出实践操作数,不是简略、清楚吗?为什么还要用其它几种寻址办法呢?这是因为在编制程序时很难一瞬间就给出操作数。如用单片机控制温度时,不时需求将给定的控制温度(如20℃)减去环境温度,而环境温度不时有改动,明显无法在程序指令中给出,只需通过必定办法,将其送入某个输入/输出口,再存放在某个存放器中,这就有必要用到存放器寻址。又如要进行算术运算,要核算每班学员各科作用的均匀值,假定把每个学员的各科都编一个程序,在程序中直接给出该学员各科作用,再求均匀值,明显太费事。这儿可以编一个求均匀作用的通用程序,把每位学员的作用送入存贮器的各个单元中,这时可选用直接寻址,一个程序可供每个学员用,不是更便当吗?所以,寻址办法越多,编制程序就越便当、活络,适用规划就越广。
寻址有如找人,如被找的人有手机、BP机、座机电话等多种联络方规则就简略找到他,单片机也是如此,寻址办法越多,找操作数越便当,单片机的功用就越强。前面介绍51系列单片机的寻址办法时,常遇到单片机内部的一些存放器、累加器A、通用存放器R0——R7、数据指针DPTR和存贮器等。在往后介绍指令时,数据就要在这些存放器、存贮器之间传送,或许进行运算。因此,编制程序就需熟悉单片机的内部结构。
8051单片机的内部整体结构其根柢特性如下:
8位CPU、片内振荡器
4k字节ROM、128字节RAM
21个特别功用存放器
32根I/O线
可寻址的64k字节外部数据、程序存贮空间
2个16位守时器、计数器
接连结构:具有二个优先级、五个接连源
一个全双口串行口
位寻址(即可寻觅某位的内容)功用,适于按位进行逻辑运算的位处理器。除128字节RAM、4k字节ROM和接连、串行口及守时器模块外,还有4组I/O口P0——P3,余下的就是CPU的全部组成。把4kROM换为EPROM就是8751的结构,如去掉ROM/EPROM部分即为8031的框图,假定将ROM置换为Flash存贮器或EEPROM,或再省去某些I/O,即可得到51系列的派生品种,如89C51、AT89C2051等单片机的框图。
单片机各部分是通过内部的总线有机地连接起来的