51单片机自学资料.ppt_第1页
51单片机自学资料.ppt_第2页
51单片机自学资料.ppt_第3页
51单片机自学资料.ppt_第4页
51单片机自学资料.ppt_第5页
已阅读5页,还剩247页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机原理及应用,课程特点,学习方法,知识点既分散又连贯,结构和指令系统是基础; 与电子线路尤其是数字电子线路关系密切;,预习、复习; 多动手(硬件、软件实验); 多看参考书(包括利用网上资料); 其它(上课、作业、答疑)。,第一章 概述 第二章 MCS-51单片机的结构和原理 第三章 MCS-51单片机的指令系统 第四章 MCS-51单片机的程序设计 第五章 MCS-51单片机的中断系统 第六章 MCS-51单片机的串行接口 第七章 MCS-51单片机的系统扩展 第八章 MCS-51单片机的测控接口(部分),主要内容,1.1 微型计算机与单片机,计算机,巨,大,中,小,微,多片机(PC),单

2、片机,第一章 概述,单片机SCMC(Single Chip MicroComputer) -属于微型机的一种 -具有一般微机的基本组成和功能 又称为微控制器MCU(MicroController Unit),一、微型机与单片机的基本组成对比,微型机,CPU,存储器,输入/输出接口,微 处 理 器 CPU,ROM,RAM,I/O接口,外设,地址总线AB,数据总线DB,控制总线CB,微型机组成框图,MCS-51单片机组成框图,(1)优异的性能价格比。,二、单片机的特点,单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性与抗干扰能力。另外,其体积小

3、,对于强磁场环境易于采取屏蔽措施,适合于在恶劣环境下工作。 此外,程序多采取固化形式也可以提高可靠性。,(2)集成度高、体积小、有很高的可靠性。,为了满足工业控制要求,一般单片机的指令系统中均有极丰富的转移指令、I/O口的逻辑操作以及位处理功能。单片机的逻辑控制功能及运行速度均高于同一档次的微机。,(3)控制功能强。,(4)单片机的系统扩展、系统配置较典型、规 范,容易构成各种规模的应用系统。,三、单片机的应用,1单片机应用的特点 软硬件结合、多学科交叉; 应用现场环境恶劣(电磁干扰、电源波动、 冲击振动、高低温湿度等); 应用领域广泛且意义重大(硬件软化-微控 制技术)。,2 单片机的应用领

4、域 在在工业自动化方面(过程控制、数据采集和测控 技术、机器人技术、机械电子计算机一体化技术); 仪器仪表方面(测试仪表和医疗仪器-数字化、智能 化、高精度、小体积、低成本、便于增加显示报警和自诊断功能); 在家用电器方面(冰箱、洗衣机、空调机、微波炉、电视机、音像设备等); 信息和通信产品方面(计算机的键盘、打印机、磁 盘驱动器;传真机、复印机、电话机、考勤机); 在军事方面(飞机、大炮、坦克、军舰、导弹、火箭、雷达等)。,1.2 常用单片机系列介绍,1、综述,自单片机诞生以来的近30年中,单片机已有70多个系列的近500个机种。国际上较有名、影响较大的公司及他们的产品如下所述: Intel

5、公司的MCS48、MCS51、MCS96系列; Motorola公司的6801、6802、6803、6805、68HCll系列产品; Zilog公司的Z8、Super8系列产品; 仙童(Fairchild)公司和Mostek公司的F8、3870系列产品;,NEC公司的COM87系列产品; Rockwell公司的6500、6501系列产品。 Atmel、PHILIPS 、LG等公司的51兼容机。 根据近年来国外实地考察,Intel公司的单片机在市场上占有量为67,其中MCS51系列产品又占54。在我们国内虽然上述各公司的产品均有引进,但由于各种原因,至今在我国所应用的单片机仍然是以MCS48、M

6、CS51、MCS96为主流系列。随着这一系列的深入开发,其主流系列的地位会不断巩固下去。因而我们在此主要介绍Intel公司的单片机系列。,2、MCS-51系列和AT89系列单片机,MCS-51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8951,8032,8052,8752,8952等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS-51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。,(1) MCS

7、-51系列,MCS-51系列单片机分类,8051,1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20,40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21,P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST/VPD RXD/ P3.0 TXD/ P3.1 INT0/ P3.2 INT1/ P3.3 T0/ P3.4 T1/ P3.5 WR/ P3.6 RD/ P3.7 XTAL2 XTAL1 Vss,Vcc P0.0 P0.1 P0.2 P0.

8、3 P0.4 P0.5 P0.6 P0.7 EA/Vpp ALE/PROG PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0,INTEL公司将MCS-51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。,(2)AT89系列,1.3 单片机的开发过程,这里所说的开发过程并不是一般书中所说的从任务分析开始,我们假设已设计并制作好硬件,下面就是编写软件的工作。在编写软件之前,首先要确定一些常数、地址,事实

9、上这些常数、地址在设计阶段已被直接或间接地确定下来了。如当某器件的连线设计好后,其地址也就被确定了,当器件的功能被确定下来后,其控制字也就被确定了。然后用文本编缉器编写软件,编写好后,用编译器对源程序文件编译、查错,直到没有语法错误,除了极简单的程序外,一般应用仿真机对软件进行调试,直到程序运行正确为止。,运行正确后,就可以写片(将程序固化在 EPROM中)。,源程序 ORG 0000H LJMP START ORG 040H START:MOV SP,#5FH ;设堆栈 LOOP:NOP LJMP LOOP ;循环 END ;结束,目标文件也就是最终写入EPROM的文件: 02 00 40

10、FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 75 81 5F 00 02 00 43,仿真是单片机开发过程中非常重要的一个环节,除了一些极简单的任务,一般产品开发过程中都要进行仿真,仿真的主要目的是进行软件调试,当然借助仿真器,也能进行一些硬件排错。一块单片机应用电路板包括单片

11、机部份及为达到使用目的而设计的应用电路,仿真就是利用仿真器来代替应用电路板(称目标机)的单片机部份,对应用电路部份进行测试、调试。 仿真分软件模拟仿真和利用仿真器仿真两类。,1.4 仿真、仿真器,软件模拟仿真 是指用仿真软件来模拟单片机运行情况,一般我们学习指令系统时常用这种方式,它不能进行硬件系统的调试和故障诊断。 利用仿真器仿真 利用仿真器以及微机可以进行软硬件系统的调试和故障诊断。,在仿真调试过程中,可以以各种运行方式运行程序(断点、单步、跟踪),还可以观察到单片机内部存储器、寄存器等的状态。,演示实验一 P1口的LED显示,第二章 MCS-51系列单片机的结构和原理,有关MCS-51机

12、的性能特点,在第一章已作了简单介绍,本节将进一步详细介绍它的结构,使大家对它的性能有更深入的了解。 MCS-51的典型产品是8051、8031、8751。8051是ROM型单片机,内部有4KROM;8031无片内ROM,8751片内有4KEPROM;89C51片内有4KFPEROM。除此以外,它们的内部结构及引脚完全相同。,本章将以MCS-51系列的8051为典型例子,详细介绍单片机的结构、性能、存储器结构及工作原理等内容。通过对这些内容的掌握,可以起到举一反三、触类旁通的作用。,2.1 MCS-51单片机的结构,以8051为例给出的单片机功能方块图如下。 由图可见,在这一块芯片上,集成了一台

13、微型计算机的各个部分。其中主要有CPU、存储器、可编程I/O、定时/计数器、串行口等。各部分通过内部总线相连。,MCS-51单片机组成框图,8051的内部结构展开图,1288 RAM,RAM地址寄存器,P3口,P1口,P2口,P0口,锁存器,锁存器,锁存器,锁存器,中断控制 定时/计数器 串行I/O口,SP,寄存器B,累加器A,暂存器1,暂存器2,程序状态 字PSW,指令寄存器IR,指令译码器ID,数据指针DPTR,缓冲器,程序计数器,PC增1,程序地址寄存器AR,定时与控制,4K8 ROM,ALU,CPU,2.1.1 CPU,运算器,CPU,算术/逻辑部件ALU(Arithmetic Log

14、ic Unit),累加器ACC (Accumulator),程序状态字寄存器PSW (Program Status Word),暂存寄存器,寄存器B,控制器,定时控制与条件转移逻辑电路,程序计数器PC,指令寄存器IR,指令译码器ID,2.1.2 8051的片内存储器,8051单片机与一般微机的存储器配置方式很不相同。 一般微机通常只有一个逻辑空间,可以随意安排ROM或RAM。访问存储器时,同一地址对应唯一的存储单元,可以是ROM也可以是 RAM,并用同类访问指令。 而MCS-51则不同:,8051在物理结构上设计成程序存储器与数据存储器独立分开的哈佛结构: 片内程序存储器4KB(ROM 000

15、0H0FFFH) 片内数据存储器128B(RAM 00H7FH),2.1.3 8051的I/O端口,8051有四个8位并行双向I/O口P0、P1、P2、P3, 一个串行口。,2.1.4 8051的特殊功能寄存器SFR,8051内部有21个特殊功能寄存器,分别 叫SP、IE、IP、PCON.(与内部RAM统 一编址80HFFH),2.2 MCS-51单片机的存储器组织,8051在物理结构上有四个存储空间: 片内程序存储器、片外程序存储器、 片内数据存储器、片外数据存储器。,new,片外,片外,程序存储器,数据存储器,8051在逻辑上,即从用户角度上8051有三个存储空间: 片内外统一编址的程序存

16、储器 片内外不统一编址的数据存储器 特殊功能寄存器(片内),访问这几个不同的逻辑空间时,采用的指令: 片内外程序存储器空间-MOVC 片内数据存储器空间和SFR-MOV 片外数据存储器地址空间-MOVX,一、程序存储器及地址空间,作用-程序存储器用于存放编好的程序和表格常数。 8051片内有4K字节ROM,片外用16位地址线最多 可扩展64K字节ROM,两者是统一编址的。 如果EA端保持高电平,8051执行片内前4KB ROM地址(0000H0FFFH) 中的程序。当寻址范围超过4KB(1000HFFFFH)时,则从片外存储器取指令。 当EA端保持低电平时,8051的所有取指令操作均在片外程序

17、存储器中进行,这时片外存储器可以从 0000H开始编址。,在程序存储器中,有6个单元具有特殊功能,0003H:外部中断0入口。 000BH:定时器0溢出中断入口。 0013H:外部中断1入口。 001BH:定时器1溢出中断入口。 0023H:串行口中断入口。 使用时,通常在这些入口地址处存放一条绝对跳转指令,使程序跳转到用户安排的中断程序起始地址,或者从0000H起始地址跳转到用户设计的初始程序上。,0000H: 8051复位后,PC0000H,即程序从0000H 开始执行指令。,二、数据存储器及地址空间,数据存储器,片外RAM64KB,地址范围0000HFFFFH,片内RAM128B,地址范

18、围00H7FH,使用时只能用MOVX指令访问,使用MOV指令访问,可以进行堆栈操作,片内数据存储器空间分布图,通用RAM区 (80B),位地址区 (16B),寄存器区 4组(32B),7FH,寄存器3组 寄存器2组 寄存器1组 寄存器0组,寄存器区 4组(32B),. . . . . . . . .,由PSW中的2位RS1、RS0来决定选 哪一组为当前工作寄存器: RS1、RS0=00 选0组 RS1、RS0=01 选1组 RS1、RS0=10 选2组 RS1、RS0=11 选3组,在位地址区,每一个BIT都有一个 地址,共168=128位,00H,30H 2FH 20H 1FH,. . .,

19、片内数据存储器空间分布图,通用RAM区 (80B),位地址区 (16B),7FH,寄存器3组 寄存器2组 寄存器1组 寄存器0组,寄存器0组,寄存器区 4组(32B),. . . . . . . . .,RS1、RS0=00,00H,30H 2FH 20H 1FH,. . .,片内数据存储器空间分布图,通用RAM区 (80B),位地址区 (16B),7FH,寄存器3组 寄存器2组 寄存器1组 寄存器0组,寄存器1组,寄存器区 4组(32B),. . . . . . . . .,RS1、RS0=01,00H,30H 2FH 20H 1FH,. . .,片内数据存储器空间分布图,通用RAM区 (8

20、0B),位地址区 (16B),7FH,寄存器3组 寄存器2组 寄存器1组 寄存器0组,寄存器2组,寄存器区 4组(32B),. . . . . . . . .,RS1、RS0=10,00H,30H 2FH 20H 1FH,. . .,片内数据存储器空间分布图,通用RAM区 (80B),位地址区 (16B),7FH,寄存器3组 寄存器2组 寄存器1组 寄存器0组,寄存器3组,寄存器区 4组(32B),. . . . . . . . .,RS1、RS0=11,00H,30H 2FH 20H 1FH,. . .,片内数据存储器空间分布图,通用RAM区 (80B),位地址区 (16B),7FH,寄存器

21、3组 寄存器2组 寄存器1组 寄存器0组,位地址区,. . . . . . . . .,00H,30H 2FH 20H 1FH,. . .,片内数据存储器空间分布图,通用RAM区 (80B),位地址区 (16B),00H,30H 2FH 20H 1FH,7FH,寄存器3组 寄存器2组 寄存器1组 寄存器0组,通用RAM区,. . .,. . . . . . . . .,共80个字节,作为一般的数据缓冲区并可设置堆栈区,三、特殊功能寄存器(21个字节),SFR (Special Functional Register) 见书P20表2-2 与ALU相关的(3个) A Register (Accu

22、mulator): 累加器,通常用A或ACC表示。可字节寻址(E0H), 也可位寻址(E0HE7H) 它是一个寄存器,而不是一个做加法的部件。 在运算器做运算时其中一个数一定是在ACC中。 B Register:暂存寄存器。 暂存寄存器。在做乘、除法时放乘数或除数及结果。 PSW (Program Status Word ): PSW是8位寄存器,用于作为程序运行状态的标志。这是一 个很重要的部件,里面存放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。,它的各位功能如下:,当CPU进行各种逻辑操作或算术运算时,为反映操作或运算结果的状态,把相应的标志位置1或清

23、0。这些标志的状态,可由专门的指令来测试,也可通过指令来读出。它为计算机确定程序的下一步进行方向提供依据。PSW寄存器中各位的名称及位置如上所示,下面说明各标志位的作用。,CY:进位标志。 加减运算时,保存最高位进位、借位状态。 AC:半进位标志。 例:78H+97H 0111 1000 +1001 0111 1 0000 1111,有进位 CY=1,没有半进位AY=0,RS1、RS0:工作寄存器组选择位。 0 0 选择工作寄存器0组 0 1 选择工作寄存器1组 1 0 选择工作寄存器2组 1 1 选择工作寄存器3组 P:奇偶校验位,它用来表示累加器A内容中二进制数位 “1”的个数的奇偶性。若

24、为奇数,则P=1,否则为0。 例:某运算结果是78H(01111000),P=0。,F0:用户标志位。作为软件标志,由编程人员决定 何时使用。 OV:溢出标志位。 有符号数运算时,如果发生溢出,OV置“1”,否 则清“0”。,与指针相关的(2个) SP (Stack Pointer): 堆栈指针,8位寄存器,用来指定堆栈的栈顶位置,初值为07H。它是加1计数. DPTR (Data Pointer)(分成DPH、DPL两个): 数据指针可以用它来访问外部数据存储器中的任一单元,也可以作为通用寄存器来用,由我们自已决定如何使用。,P0、P1、P2、P3: 四个并行输入/输出口的寄存器。它里面的内

25、容对应着管脚的输出。 SCON (Serial Control Register) SBUF (Serial Date Buffer) PCON (Power Control Register),与端口相关的(7个),与定时/计数器相关的(6个),TMOD (Timer/Counter Mode Register) 定时器工作模式寄存器。 TCON (Timer/Counter Control Register) 定时器控制寄存器。 TH0、TL0 、TH1、TL1:分别是T0、T1的记数初值寄存器。,IP (Interrupt Priority Register) IE (Interrupt

26、 Enable Register),与中断相关的(2个),课堂练习及思考题 (P30)题2、7、8、10 补充题: 下列是关于8031单片机存储空间的描述,分析其对错: a.特殊功能寄存器容量为21B, 没有位地址。 b.外部数据存储器容量可达64kB, 字节地址和位地址范围均为0000HFFFFH c.程序存储器容量可达64kB, 字节地址和位地址范围均为0000HFFFFH,d. 内部数据存储器容量为128B, 字节地址和位地址范围均为00H7FH e.特殊功能寄存器容量为21B, 有一部分特殊功能寄存器具有位地址。 f.程序存储器容量可达64kB,地址范围为0000HFFFFH。 2.M

27、CS-51单片机的工作寄存器组如何选择?若PSW 的RS1、RS0位的内容是01,那么此时工作寄存器R1的字节地址是多少? 3.MCS-51内部RAM的寄存器区一共有多少个存储单元?分为多少组?每组有多少个存储单元?分别以什么作为寄存器名?,4.8051存储空间的结构与8086/8088有什么不同?它的物理结构是怎样的? 5.MCS-51单片机的内部数据存储器容量是多少?它有 什么特点?,2.3 MCS-51单片机的并行端口结构与操作,8051单片机有4个I/O端口,每个端口都是8位准双向口,共占32根引脚。每个端口都包括一个锁存器(即专用寄存器P0P3)、一个输出驱动器和输入缓冲器。通常把4

28、个端口笼统地表示为P0P3。,在无片外扩展存储器的系统中,这4个端口的每一位都可以作为准双向通用I/O端口使用。在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口分时作为低8位地址线和双向数据总线。 8051单片机4个I/O端口线路设计的非常巧妙,学习I/O端口逻辑电路,不但有利于正确合理地使用端口,而且会给设计单片机外围逻辑电路有所启发。 下面简单介绍一下输入/输出端口结构。,2.3.1 P0口和P2的结构,下图为P0口的某位P0.n(n=07)结构图,它由一个 输出锁存器、两个三态输入缓冲器和输出驱动电路 及控制电路组成。从图中可以看出,P0口既可以作 为I/O用,也可以作为地址

29、/数据线用。,一、P0口的结构,1、P0口作为普通I/O口,输出时 CPU发出控制电平“0”封锁“与”门,将输出上拉场效 应管T1截止,同时使多路开关MUX把锁存器与输出,驱动场效应管T2栅极接通。故内部总线与P0口同相。由于输出驱动级是漏极开路电路,若驱动NMOS或其 它拉流负载时,需要外接上拉电阻。P0的输出级可驱动8个LSTTL负载。, 输入时-分读引脚或读锁存器 读引脚:由传送指令(MOV)实现; 下面一个缓冲器用于读端口引脚数据,当执行一条由端口输入的指令时,读脉冲把该三态缓冲器打开,这样端口引脚上的数据经过缓冲器读入到内部总线。, 输入时-分读引脚或读锁存器 读锁存器:有些指令 如

30、:ANL P0,A称为“读-改-写” 指令,需要读锁存器。 上面一个缓冲器用于读端口锁存器数据。,*原因:如果此时该端口的负载恰是一个晶体管基极,且原端口输出值为1,那么导通了的PN结会把端口引脚高电平拉低;若此时直接读端口引脚信号,将会把原输出的“1”电平误读为“0”电平。现采用读输出锁存器代替读引脚,图中,上面的三态缓冲器就为读锁存器Q端信号而设,读输出锁存器可避免上述可能发生的错误。*,准双向口: 从图中可以看出,在读入端口数据时,由于输出驱动FET并接在引脚上,如果T2导通,就会将输入的高电平拉成低电平,产生误读。所以在端口进行输入操作前,应先向端口锁存器写“1”,使T2截止,引脚处于

31、悬浮状态,变为高阻抗输入。这就是所谓的准双向口。,2、P0作为地址/数据总线,在系统扩展时,P0端口作为地址/数据总线使用时,分为: P0引脚输出地址/数据信息。,CPU发出控制电平“1”,打开“与”门,又使多路开关MUX把CPU的地址/数据总线与T2栅极反相接通,输出地址或数据。由图上可以看出,上下两个FET处于反相,构成了推拉式的输出电路,其负载能力大大增强。,2、P0作为地址/数据总线,P0引脚输出地址/输入数据 输入信号是从引脚通过输入缓冲器进入内部总线。 此时,CPU自动使MUX向下,并向P0口写“1”,“读引脚”控制信号有效,下面的缓冲器打开,外部数据读入内部总线。,2、P0作为地

32、址/数据总线,-真正的双向口,二、P2的内部结构,1.P2口作为普通I/O口,CPU发出控制电平“0” ,使多路开关MUX倒向锁存器 输出Q端,构成一个准双向口。其功能与P1相同。,2.P2口作为地址总线 在系统扩展片外程序存储器扩展数据存储器且容量超过256B (用MOVX DPTR指令)时,CPU发出控制电平“1”,使多路开关MUX倒内部地址线。此时,P2输出高8位地址。,2.3.2 P1口、P3口的内部结构,P1口的一位的结构 它由一个输出锁存器、两个三态输入缓冲器和输出驱动电路组成-准双向口。,P3的内部结构,D Q CLK Q,P3.n,读锁存器,内部总线,写锁存器,读引脚,VCC,

33、R,T,P3口引脚,第二输入功能,第二输出功能,一、作为通用I/O口与P1口类似-准双向口(W=1),W,P3的内部结构,D Q CLK Q,P3.n,读锁存器,内部总线,写锁存器,读引脚,VCC,R,T,P3口引脚,第二输入功能,第二输出功能,二、P3第二功能(Q=1) 此时引脚部分输入(Q=1、W=1) ,部分输出(Q=1、W输出) 。,W,课堂复习,补充题: 1.MCS-51单片机的哪些端口,有两种功能?分别是什么功能? 2.在系统扩展片外程序存储器时,P2口是否可以再作为通用I/O口?,3. 某控制程序有如下片段: MOV P1,#00H,MOV A,P1 执行后结果不正常,请问为什么

34、会出现这种情况,如何修改程序,才能保证输入的数据正常?,MOV P1,#0FFH,2.4 MCS-51单片机片外总线和复位,2.4.1 MCS-51单片机片外总线配置,地址总线: P2口(高8位A15A8)和P0口(低8位A7A0) 可寻址64KB。,数据总线: P0口(D7D0),控制总线: ALE、PSEN、WR、RD,2.4.2 MCS-51单片机复位(RST高电平2个机器周期),任何单片机在工作之前都要有个复位的过程,复位是什么意思呢?对单片机来说,是程序还没有开始执行,是在做准备工作-初始状态。显然,准备工作不需要太长的时间,复位需要不少于24个时钟周期的时间就可以了。,如何进行复位

35、呢?只要在单片机的RST引脚上加上高电平,就可以了。为了达到这个要求,可以用很多种方法,见图。,一、复位电路(两种),上电复位电路,复位后,PC指向0000H,使单片机从起始地址0000H开始执行程序。,一、复位电路(两种),上电且开关复位,二、复位后单片机的状态,复位后各寄存器的状态,PC 0000H(程序入口) P0、P1、P2、P3 0FFH (可以直接输入) SP 07H (栈底已经设好) PSW 00H (选择0组寄存器) 其余大部分都是0,2.4.3 MCS-51单片机最小系统,最小系统-最少外部电路条件下,可以独立工作 的单片机系统。,8051,9,RST,C,R,+5V,K,2

36、.5 MCS-51单片机片时序,CPU时序及有关概念p1415,计算机工作要有严格的时序。事实上,计算机更象一个大钟,什么时候分针动,什么时候秒针动,什么时候时针动,都有严格的规定,一点也不能乱。基本时序单位:,3.机器周期:一个机器周期包括12个时钟周期。 4.指令周期:执行一条指令的时间。,1.振荡周期:晶体振荡器的周期。 2.状态周期:振荡周期2分频,也称时钟周期。,INTEL对每一条指令都给出了它的指令周期数, MCS-51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较慢,得要2个机器周期,还有两条指令要4个机器周期才行。,3.1 概述,7种寻址方式,

37、111条指令,字节数,运算速度,单字节指令:49条 双字节指令:45条 三字节指令:17条,单周期指令:64条 双周期指令:45条 四周期指令: 2 条,第三章 MCS-51指令系统 Instruction Set,功能,数据传送类:29条 算术运算类:24条 逻辑运算类:24条 控制转移类:17条 位操作类: 17条,常用符号,Rn:工作寄存器中的寄存器Rn、R1R7之一,,Ri:工作寄存器中的寄存器R0或R1,#data:8位立即数,#data16:16位立即数,direct:片内RAM或SFR的地址(8位),间接寻址寄存器,Bit:片内RAM或SFR的位地址,addr11:11位目的地址

38、,addr16:16位目的地址,rel: 补码形式的8位地址偏移量。 偏移范围为-128127 /:位操作指令中,该位求反后参与操作,不影响该位 X:片内RAM的直接地址或寄存器 (X):相应地址单元中的内容 :箭头左边的内容送入箭头右边的单元内,3.2 寻址方式,3.2.1 立即寻址 Immediate Addressing,操作数就包含在指令代码中,在操作码之后,称为立即数,用“”表示。 MCS-51 如:MOV P1, #80H MOV R7, #0F5H MOV DPTR,#1245H,8086/8088 MOV AL,80H MOV AL,0F5H MOV BX,1245H,操作数存

39、在程序存储器中,3.2.2 直接寻址 Direct Addressing 直接使用数所在单元的地址找到了操作数,所以称 这种方法为直接寻址。 操作数在SFR、内部RAM、位地址空间。 如: MOV A,00H MOV C,60H MOV A,0F0H,8086/8088CPU MOV AL,2000H,3.2.3 寄存器寻址 Register Addressing,对选定的工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR中的数进行操作。 例:MOV A,R0;将R0工作寄存器中的数据送到累加器A中去。,提一个问题:我们知道,工作寄存器就是内存单元的一部分,如果我们选择工作寄存器组

40、0,则R0就是RAM的00H单元,那么这样一来,MOV A,00H 和 MOV A,R0不就没什么区别了吗?,MOV AL,BL (8086CPU的寄存器寻址方式),的确,这两条指令执行的结果是完全相同的,都是将00H单元中的内容送到A中去,但是执行的过程不同,执行第一条指令需要2个机器周期,而第二条则只需要1个机器周期,第一条指令变成最终的目标码要两个字节(E5H 00H),而第二条则只要一个字节(E8H)就可以了。,3.2.4 寄存器间接寻址 Register Indirect Addressing,把地址放在另外一个寄存器中,根据这个寄存器中的数值决定该到哪个单元中取数据。 R0,R1-

41、8位地址,片内低128字节或片外 DPTR-16位,片外64KB MCS-51 如:MOV A,R0 MOVX A,R0 MOVX A,DPTR,8086/8088CPU MOV AL,BX MOV AX,SI,操作数在片内RAM中,操作数在片外RAM中,操作数在片外RAM中,以DPTR或PC为基址寄存器,累加器A为变址寄存器。把两者内容相加,结果作为操作数的地址。 常用于查表操作。 MCS-51 MOVC A, A+DPTR ;(A+DPTR) A MOVC A, A+PC; PC+1 PC,(A+PC)A,3.2.5 变址寻址(基址+变址),Base-Register-plus-Index

42、-Register-Indirect Addressing,8086/8088CPU MOV AL,BX+SI MOV AX,BP+DI,操作数在程序存储器中,如:MOVC A,A+DPTR 设DPTR=2000H,A=E0H,20E0H,47,指令代码,如:MOVC A,A+PC 设A=E0H,2121H,45,当前PC,指令代码,3.2.6 相对寻址,将PC中的当前内容与指令第二字节给出的数相加,结 果作为跳转指令的转移地址(转移目的地址)。 PC中的当前内容称为基地址(本指令后的字节地址) 指令第二字节给出的数据称为偏移量,1字节带符号数. 常用于跳转指令。 如: JC 23H 若C=0

43、,不跳转; C=1,跳转.,Relative Addressing,改变PC,如:JC 23,1025H,23H,1002H,指令代码,当前PC,对片内RAM的位寻址区和某些可位寻址的特殊功能寄存器进行位操作时的寻址方式。 如: SETB 3DH; 将27H.5位置1 CLR C ;Cy位清0 8086/8088CPU 无此寻址方式,3.2.7 位寻址 Bit Addressing,操作数在片内RAM位地址区或SFR某些位中,寻址方式涉及的存储器空间,3.3 数据传送类指令(29条) Data Transfer Instruction,MCS-51 助记符: 8086/8088 助记符: MO

44、V、MOVX、MOVC MOV XCH、XCHD、SWAP XCHG PUSH、POP PUSH、POP 源操作数寻址方式(5种): 立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址。 目的操作数寻址方式(3种): 直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响 标志位。,3.3.1 以累加器为目的操作数的指令(4条),MOV A,Rn ;RnA MOV A,direct;(direct)A MOV A,Ri ;(Ri)A MOV A,#data;dataA 将源操作数指定内容送到A中。,3.3.2 以寄存器Rn为目的操作数的指令 (3

45、条),MOV Rn,A MOV Rn,direct MOV Rn,#data 这组指令功能是把源操作数指定的内容送入当前工作寄存器,源操作数不变。,3.3.3 以直接地址为目的操作数的指令(5条),MOV direct,A MOV direct,Rn MOV direct1,direct2 MOV direct,Ri MOV direct,#data 这组指令功能是把源操作数指定的内容送入由直接地址指出的片内存储单元RAM中。 例: MOV 20H,A MOV 20H,R1 MOV 20H,30H MOV 20H,R1 MOV 0A0H,#34H MOV P2,#34H,3.3.4 以间接地址

46、为目的操作数的指令(3条),MOV Ri,A ;A (Ri) MOV Ri,direct;(direct) (Ri) MOV Ri,#data; data (Ri) 功能:把源操作数指定的内容送入以R0或R1为地址 指针的片内存储单元RAM中。 例:MOV R0,A MOV R1,20H MOV R0,#34H,3.3.5 十六位数的传递指令(1条),MOV DPTR,#data16 8051是一种8位机,这是唯一的一条16位立即数传递指令。功能:将一个16位的立即数送入DPTR中去。其中高8位送入DPH,低8位送入DPL。 例:MOV DPTR,#1234H 执行完了之后DPH中的值为12H

47、,DPL中的值为34H。 如果我们分别向DPH,DPL送数,则结果也一样。 如下面两条指令: MOV DPH,#35H MOV DPL,#12H。 则就相当于执行了 MOV DPTR,#3512H。,3.3.6 累加器A与片外RAM之间的数据传递类指令(4条),MOVX A,Ri MOVX Ri,A MOVX A,DPTR MOVX DPTR,A 说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所有 需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部 RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则

48、不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。,2.要读或写外部的RAM,当然也必须要知道RAM的地址,在后两条指令中,地址是被直接放在DPTR中的。而前两条指令,由于Ri(即R0或R1)只是8位的寄存器,所以只提供低8位地址。高8位地址由P2口来提供。 3.使用时应先将要读或写的地址送入DPTR或Ri中,然后再用读写命令。 例:将外部RAM中100H单元中的内容送入外部RAM中200H单元中。 MOV DPTR,#0100H MOVX A,DPTR MOV DPTR

49、,#0200H MOVX DPTR,A,3.3.7 读程序存储器指令(2条),MOVC A,A+DPTR MOVC A,A+PC 本组指令是将ROM中的数送入A中。本组指令也被称为查表指令,常用此指令来查一个已做好在ROM中的表格 说明:查找到的结果被放在A中,因此,本条指令执行前后,A 中的值不一定相同。 例:有一个数在R0中,要求用查表的方法确定它的平方值(此 数的取值范围是0-5) MOV DPTR,#100H MOV A,R0 MOVC A,A+DPTR . ORG 0100H(用伪指令ORG指示随后的指令从这一地址开始 存放) DB 0,1,4,9,16,25,如果R0中的值为2,则

50、最终地址为100H+2为102H,到102H单元中找到的是4。,3.3.8 堆栈操作(2条),PUSH direct ;SPSP+1,(SP)(direct) POP direct ; (direct) (SP), SPSP-1 第一条为压入指令,就是将direct中的内容送入堆栈中,第二条为弹出指令,就是将堆栈中的内容送回到direct中。例: MOV SP,#5FH MOV A,#100 MOV B,#20 PUSH ACC PUSH B 则执行第一条PUSH ACC指令是这样的:将SP中的值加1,即变为60H,然后将A中的值送到60H单元中,因此执行完本条指令后,内存60H单元的值就是1

51、00,同样,执行PUSH B时,是将SP+1,即变为61H,然后将B中的值送入到61H单元中,即执行完本条指令后, 61H单元中的值变为20。,3.3.9 交换指令(5条),XCH A,Rn ;ARn XCH A, direct ;A(direct) XCH A, Ri ;A(Ri) XCHD A, Ri ;A.3A.0(Ri).3(Ri).0 SWAP A ;A.3A.0A.7A.4 例: 已知A中的内容为34H MOV R6, #29H XCH A, R6 SWAP A XCH A, R6 XCHD A, R0,;R6=29H ;A=29H,R6=34H ;A=92H ;A=34H,R6=

52、92H ;A=36H,(R0)=54H (设原来R0 ;指向的单元的内容为56H),(40H)= H 50H = H A= H (41H)= H 51H= H R0= H,课堂练习,1.设:内部RAM中,(40H)=50H,(41H)=60H,(50H)=30H, (51H)=70H,执行下列片段后:,MOV R0,40H MOV A,R0 INC R0 MOV R0,A,b. MOV R0,#40H MOV A,R0 INC R0 MOV A,R0,;R0=50H ;A=30H ;R0=51H ;(51H)=30H,;R0=40H ;A=50H ;(40)=51H ;A=51H,2.给出每条

53、指令执行后的结果,MOV 23H,#30H MOV 12H,#34H MOV R0,#23H MOV R7,12H MOV R1,#12H MOV A,R0 MOV 34H,R1 MOV 45H,34H MOV DPTR,#6712H MOV 12H,DPH MOV R0,DPL MOV A,R0,;(23H)=30H ;(12H)=34H ;R0=23H,;R7=34H ;R1=12H ;A=30H,;(34H)=34H ;(45H)=34H ;DPTR=6712H,;(12H)=67H ;R0=12H ;A=67H,内部RAM,3.利用传送类指令并用多种方法将内部RAM中50H单元的内容与

54、40H单元的内容互换。,3.4 算术运算类指令(24条) Arithmetic Operations,主要对8位无符号数;也可用于带符号数运算。 包括:加、减、乘、除、加1、减1运算指令 影响PSW有关位。,3.4.1 加法指令,ADD A,#data ; AdataA ADD A,direct ; A(direct )A ADD A,Rn ; ARnA ADD A,Ri ; A(Ri)A 用途:将A中的值与源操作数所指内容相加,最终结果 存在A中。,1.不带进位位的加法指令(4条),例1:ADD A,#47H ADD A,34H ADD A,R7 ADD A,R0,例2: MOV A,#0A

55、EH ADD A,#81H 则执行完本条指令后,A中的值为2FH; C=1,AC=0,OV=1,P=1。 对无符号数:结果为12FH;,2.带进位位的加法指令(4条),ADDC A,Rn; ARnCYA ADDC A,direct; A(direct )CYA ADDC A,Ri; A(Ri)CYA ADDC A,#data; AdataCYA 用途:将A中的值和其后面的值以及进位位C中的值相加, 最终结果存在A,常用于多字节数运算中。 说明:由于51单片机是一种8位机,所以只能做8位的数学运算,但8位运算的范围只有0255,这在实际工作中是不够的,因此就要进行扩展,一般是将2个8位(两字节)

56、的数学运算合起来,成为一个16位的运算,这样,可以表达的数的范围就可以达到065535。,例:,先做67H+A0H=107H,而107H显然超过了0FFH,因此最终保存在A中的是07H,而1则到了PSW中的CY位了。换言之,CY就相当于是100H。 然后再做10H + 30H + CY,结果是41H,所以最终的结果是4107H。,1067H+30A0H,0001 0000 0110 0111,0011 0000 1010 0000,0100 0001 0000 0111,1067H,30A0H,4107H,设:1067H存在R1R0中, 30A0H存在R3R2中,计算R1R0+R3R2,结果存

57、在R5R4中。,MOV A,R0 ADD A,R2 ;R0+R2A和CY MOV R4,A MOV A,R1 ADDC A,R3 ;R1+R3+CYA和CY MOV R5,A,又例:,先做67H+20H=87H,没有超过0FFH,因此最终保存在A中的是87H,而PSW中的CY=0。 然后再做10H + 30H + CY,结果是40H,所以最终的结果是4087H。,1067H+3020H,0001 0000 0110 0111,0011 0000 0010 0000,0100 0000 1000 0111,1067H,3020H,4087H,设:1067H存在R1R0中, 3020H存在R3R2

58、中,计算R1R0+R3R2,结果存在R5R4中。,3. 加1指令(5条),INC A;A+1A,影响P标志 INC Rn;Rn+1Rn INC direct;(direct)+1(direct) INC Ri;(Rn)+1(Rn) INC DPTR;DPTR+1DPTR 功能很简单,就是将后面目标中的值加1。,例:A=12H,R0=33H,(21H)=32H, (34H)=22H,DPTR=1234H。 连续执行下面的指令: INC A INC R0 INC 21H INC R0 INC DPTR,; A=13H ; R0=34H ;(21H)=33H ;(34H)=23H ; DPTR=1235H,DA A 在进行BCD码加法运算时,跟在ADD和ADDC指令之

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论