单片机原理教程(经典)f

上传人:xiao****017 文档编号:16383847 上传时间:2020-09-30 格式:PPTX 页数:255 大小:3.67MB
收藏 版权申诉 举报 下载
单片机原理教程(经典)f_第1页
第1页 / 共255页
单片机原理教程(经典)f_第2页
第2页 / 共255页
单片机原理教程(经典)f_第3页
第3页 / 共255页
资源描述:

《单片机原理教程(经典)f》由会员分享,可在线阅读,更多相关《单片机原理教程(经典)f(255页珍藏版)》请在装配图网上搜索。

1、课程目标,掌握: 单片微型机的基本工作原理 汇编语言程序设计方法 单片微型计算机应用 单片微型计算机应用系统设计方法,单片机原理与应用,第一章 绪 论,本讲重点: 微处理器、微机和单片机的基本概念、 单片机的发展、常用系列简介、应用。 讲授内容: 本章主要介绍单片机的结构特点、单片机的发展及常用系列和单片机的应用领域等。重点介绍单片机的特点以及在各领域中的应用。,回 顾:有关微型计算机的基础知识,硬件:微处理器,存储器,总线,I/O接口 软件:系统软件,应用软件,第一节 单片机的特点与发展概述,一、微处理器、微机和单片机的概念 微处理器(Microprocessor)微型计算机的控制和运算器部

2、分; 微型计算机(Microcomputer)有完整运算及控制功能的计算机,包括微处理器、存储器、输入/输出(I/O)接口电路以及输入/输出设备等; 单片机(single chip microcomputer)直译为单片微型计算机,它将CPU、RAM、ROM、定时器/计数器、输入/输出(I/O)接口电路、中断、串行通信接口等主要计算机部件集成在一块大规模集成电路芯片上,组成单片微型计算机简称单片机 。,单片机的形态只是一块芯片,但是它已具有了微型计算机的组成结构和功能。由于单片机的结构特点,在实际应用中常常将它完全融入应用系统之中,故而也有将单片机称为嵌入式微控制器(embedded micr

3、ocon-troller)。,单片机有2种基本结构形式: 一种是在通用微型计算机中广泛采用的将程序存储器和数据存储器合用一个存储空间的结构,称为普林斯顿(Princeton)结构或称冯诺依曼结构; 另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,称为哈佛(Har-vard)结构。Intel公司的MCS-51和80C51系列单片机采用的是哈佛结构。目前的单片机以采用程序存储器和数据存储器截然分开的结构较多。 单片机的中央处理器(CPU)和通用微处理器基本相同,只是增设了“面向控制”的处理功能。例如:位处理、查表、多种跳转、乘除法运算、状态检测、中断处理功能等,增强了控制的实用性和灵活性

4、。,二、 单片机的一般结构及特点,1)存储结构为哈佛结构,将程序存储器和数据存储器分开;,单片机结构特点小结:,4)面向控制,位处理功能强。,3)芯片引脚具有复用功能;,2)片内接口电路丰富,由特殊功能寄存器管理;,三、单片机的发展过程概述,单片机作为嵌入式微控制器在工业测控系统、智能仪器和家用电器中得到广泛应用。虽然单片机的品种很多,但其中最具有代表性的是Intel公司的MCS-51系列单片机,以及其与之兼容的派生系列芯片。Intel 8位单片机的发展经历了以下3代: 第一代:以1976年推出的MCS-48系列为代表。 第二代:以MCS-51的8051为代表的单片机, 第三代:以80C51系

5、列为代表。,一般根据控制应用需要: 又可设计成通用单片机、专用单片机 按内部数据总线的宽度: 单片机分为4位、8位、16位及32位等。,第二节 常用单片机系列简介,一、ATMEL单片机 ATMEL公司所生产的ATMEL89系列单片机(简称89系列单片机),就是基于Intel公司的MCS-5l系列而研制的,该公司的技术优势在于Flash存储器技术。 标准型单片机有:AT89C51,AT89LV51,AT89C52,AT89LV52; 低档型单片机有:AT89C1051和AT89C2051两种型号。它们的CPU内核和AT89C51是相同的,但并行I/O较少; 高档型单片机有:AT89S8252,这

6、是一种可下载的Flash单片机。它和IBM微机通信进行下载程序十分方便。,二、Philips单片机 Philips公司的的单片机都属于MCS-51系列兼容的单片机。从内部结构看可以划分为两大类,8位机与80C51兼容系列和16位机XA系列。Philips公司的的单片机8位机的主要产品型号有P80CXX、P87CXX和P89CXX系列,16位机的主要产品型号有PXACXX、PXAGXX和PXASXX等。 三、Maxim-Dallas单片机 四、WinBond单片机 五、Motorola单片机 六、其他公司的单片机 1)NEC单片机; 2)东芝单片机; 3)Epson单片机; 4) PIC单片机

7、M icrochip公司,第三节 单片机的应用领域及发展,一、单片机在智能仪器中的应用 智能化仪器内部基本上都是用单片机进行信息控制与处理。特别是近年来出现的数字信号处理器DSP是一种速度极高的单片机,它在通信和高速信息处理中起了极大的作用,从而扩展了单片机在智能仪器中的应用。 二、单片机在过程控制中的应用,三、单片机与e-Home,在家用网络系统HNS(home networked system) 中,对家用电器提出了“个性化”和“社会化”的要求。 家用电器的嵌入式结构有单核嵌入和双核嵌入2种。例如:一般电脑电饭煲,内部只有一个单片机,这种控制系统是单核嵌入;对于分体式空调,室内机与室外机中

8、分别有1个单片机,为双核嵌入结构。 四、单片机与Internet Internet技术已经深入到日常生活和工作中。各类家用电器和智能装置,它们的“心脏”多是单片机,由于单片机芯片品种达数百种,其硬件结构和指令系统各不相同,不能像PC机那样通过标准的硬件接口和接口软件直接接入Internet网络。,五、单片机的发展,1)强化指令功能 2)增加各种接口部件 3)提高专用程度,补充内容:计算机系统中的数制、码制复习,2、带符号数的表示法 3、原码、反码、补码 特点: 8位二进制数表示原码、反码、补码的范围 (-127+127、-127+127、-128+127) 补码的运算 在微型计算机中,带符号数

9、用补码表示,减法可用补码相加来实现,运算结果为补码。,1、数制及其互换 数制 基数 字符 二进制 (B) 十进制 (D) 十六进制 9 (H),第二章 MCS-51单片机的硬件结构与工作原理,主要内容: 1.MCS-51单片机组成(结构、引脚功能) 2.并行I/O端口结构 3.储器组织与操作 4.MCS-51单片机的中断系统 1)中断系统概述 2)中断的处理过程,重点理解: 1 . MCS-51系列单片机存储器结构特点 2. 单片机特殊功能寄存器的作用 3. 不同场合下单片机引脚的复用功能 4 . 单片机的位处理功能及其作用,一、MCS51单片微机的硬件组成 1、MCS51系列单片机的主要特性

10、 1) 8位字长CPU和指令系统。 2) 1个片内时钟振荡器和时钟电路。 3) 64K外部数据存储器的地址空间。 4) 64K外部程序存储器的地址空间。 5) 32条双向且分别可位寻址的IO口线。 6) 128字节的片内RAM(52子系列为256字节)。 7) 2个16位定时器计数器(52子系列为3个)。 8) 具有2个优先级的5个中断源结构(52子系列有6个)。 9) 1个全双工串行口。 10) 1个布尔处理器。,第一节 MCS-51单片机的基本组成,2. MCS51单片机的内部结构,MCS51单片机的功能模块框图如图所示。,MCS-51单片机由8位CPU、只读存储器EPROMROM、读写存

11、储器RAM、并行IO口、串行IO口、定时器计数器、中断系统、振荡器和时钟电路等部分组成。各部分之间通过内部总线相连。,MCS51的内部结构框图,二、MCS51单片机的引脚功能,40脚分三类: 1、电源线和时钟信号线共4根 VCC,GND电源和地+5V电源供电, X1时钟振荡器输入端,内部振荡器输入端; X2时钟振荡器输出端,内部振荡器输出端; 2、控制线4根 RST复位信号,晶振工作后2个机器周期的高电平复位CPU. ALE地址锁存信号访问外部存储器时该信号锁存低8位地址;无RAM时,ALE为晶振6分频; PSEN外部程序存储器读从程序存储器中取指令或读取数据时,该信号有效。 EA程序存储器有

12、效地址,EA=1从内部开始执行程序;EA=0从外部开始执行程序; 3、I/O口线32根- MCS-51系列单片机 P0、P1、P2、P3共32位,对应着芯片的32根引脚。,三、振荡器、时钟电路及时序,1.时钟电路 MCS5l单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTALl和XTAL2分别是反相放大器的输入端和输出端,由这个放大器与作为反馈元件的片外晶体或陶瓷谐振器一起构成了一个自激振荡器,如图24所示。这种方式形成的时钟信号称为内部时钟方式。图25所示,为外部时钟方式。,2. 有关单片机CPU的时序,1)振荡周期 指为单片机提供定时信号的振荡源的周期,若为内部产生方式时,为石英

13、晶体的振荡周期。 2)时钟周期 也称为状态周期,用S表示。时钟周期是计算机中最基本的时间单位,在一个时钟周期内,CPU完成一个最基本的动作。MCS51单片机中一个时钟周期为振荡周期的2倍。 3)机器周期 完成一个基本操作(例如,取指令、存储器读、存储器写等)所需要的时间称为机器周期。MCS51的一个机器周期含有6个时钟周期。 4)指令周期 完成一条指令所需要的时间称为指令周期。MCS5l的指令周期含14个机器周期不等,其中多数为单周期指令,还有2周期和4周期指令。4周期指令只有乘、除两条指令。,MCS-51单片机各种周期的相互关系,第二节 并行I/O接口,MCS5l单片机内有四个8位并行IO端

14、口,为P0、P1、P2和P3。每个端口都是8位准双向IO口,共占32根引脚。每个端口都包含一个锁存器、一个输出驱动器和一个输入缓冲器。,一、并行I/O接口的内部结构,IO口的每位锁存器均由D触发器组成,用来锁存输出的信息。在CPU的“写锁存器”信号驱动下,将内部总线上的数据写入锁存器中。,P0口某位的结构图,当由P0口输入数据时,由于外部输入信号既加在缓冲输入端上,又加在驱动电路的漏极上。如果这时T2是导通的,则引脚上的电位始终被钳位在0电平上,输人数据不可能正确地读人。因此,在输入数据时,应先把P0口置1,使两个输出FET均关断,使引脚“浮置”,成为高阻状态,这样才能正确地插人数据。这就是所

15、谓的准双向口。,P1口也是个准双向IO口,与P0口不同的是,没有多路开关MUX和控制电路部分。输出驱动电路只有一个FET场效应管,同时内部带上拉电阻,此电阻与电源相连。P1口可作通用双向IO口用,而不必再外接上拉电阻。,P2口在结构上比P0口少了一个输出转换控制部分,多路开关MUX的倒向由CPU命令控制,且P2口内部接有固定的上拉电阻。,P3口与Pl口的输出驱动部分及内部上拉电阻相同,但比P1口多了一个第二功能控制部分的逻辑电路由一个与非门和一个输入缓冲器组成,P3.0(RXD):串行输入端。 P3.1(TXD):串行输出端。 P3.2(INTO):外部中断0输入端,低电平有效。 P3.3(I

16、NT1):外部中断1输入端,低电平有效。 P3.4(T0):定时计数器0外部事件计数输入端。 P3.5(T1):定时计数器1外部事件计数输入端。 P3.6(WR):外部数据存储器写选通信号,低电平有效。 P3.7(RD ):外部数据存储器读选通信号,低电平有效。,P3口每位的第二功能:,P0P3的功能及使用时的注意事项,1. 在无片外扩展存储器的系统中,这四个端口的每一位都可以作为准双向通用IO端口使用。在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口作为双向总线,分时作为低8位地址和数据的输入输出线。,2. P0口作为通用双向IO口用时,必须外接上拉电阻。,3. P3口除了作通用

17、IO使用外,它的各位还具有第二功能。当P3口某一位用于第二功能作输出时,则不能再作通用IO使用。,4. 当P0P4端口用作输入时,为了避免误读,都必须先向对应的输出锁存器写入“l” ,使FET截止。然后再读端口引脚。 如:MOV P1,#0FFH MOV A, P1,单片机的片外三总线结构,第三节 MCS-51单片机的复位,MCS5l的RSTVPD引脚是复位输入端,其内的施密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2由复位电路采样一次。在振荡器运行时,RST端至少要保持2个机器周期(24个振荡周期)为高电平,才完成一次复位。复位后片内各专用寄存器的状态如表21。,几种实用的复位电路

18、,第四节 MCS-51存储器组织与操作,MCS51系列单片机其存储结构特点是: 将程序存储器和数据存储器分开,并有各自的寻址机构和寻址方式,这种结构的单片微机称为哈佛型结构单片微机。 在物理上 有4个相互独立的存储空间: 片内和片外程序存储器;片内和片外数据存储器。 在逻辑上 有三个彼此独立的地址空间: 1、片内外统一编地址的64KB程序存储器地址间; 2、256字节的片内数据存储器地址空间; 3、64KB片外数据存储器地址空间,MCS5l系列存储器地址空间分配图,一、 MCS51程序存储器地址空间,7个特殊单元: 0000H 复位后,PC=0000H. 开始执行程序 0003H 外部中断0

19、(INT0)入口 000BH 定时器0中断( TF0)入口 0013H 外部中断1(INT1) 入口 001BH 定时器1中断( TF1)入口 0023H 串行口中断TI/RI入口 002BH 定时计数器2溢出或T2EX输入负跳变(52系列),程序存储器用于存放调试好的应用程序和表格常数。MCS5l采用16位的程序计数器PC和l6位的地址总线,64KB片内、外的程序存储器空间连续、统一 。,二、MCS51数据存储器地址空间,数据存储器地址空间由内部和外部数据存储器空间组成。内部和外部数据存储器空间存在重叠。 通过不同指令来区别,内部数据传送指令:MOV,外部数据传送指令:MOVX,1、工作寄存

20、器区( ) 分成4组,每组8个寄存器R0-R7,2、位寻址区(20H 2FH ) 既可进行字节寻址,又可进行位寻址。这16个单元共有168128位,对应位地址00H-7FH。 3、通用存储区(30H 7FH) 4、外部数据存储器 0000H-FFFFH 范围为64K字节,采用R0、R1或DPTR寄存器间址方式访问。,内部数据存储器在物理上又可分成三部分:低128字节RAM、高128字节RAM(仅80320852才有)和专用寄存器(SFR)。,低128字节RAM由工作寄存器区、位寻址区和通用RAM区组成。,内部数据存储器地址空间,80320852的高128字节RAM和专用寄存器(SFR)空间重合

21、,通过不同寻址方式区别,三、特殊功能寄存器地址空间,共有26个专用寄存器SFR,离散地分布在片内RAM的高128字节地址80H0FFH中。 程序计数器PC不占据RAM单元,在除PC外的专用寄存器SFR中,有12个专用寄存器既可字节寻址,又可位寻址(字节地址为8的整倍数)。,位地址的表示法 例: 位名称 CY 、RS0 寄存器名加序号 PSW.7 ACC.1 字节地址加序号 20H.3 直接位地址 00H,1.累加器ACC 累加器A在大部分的算术运算中存放某个操作数和运算结果。 2.寄存器B寄存器B主要用于与累加器A配合执行乘法和除法指令的操作。 3.程序状态字PSW8位寄存器,用来存放程序状态

22、信息。某些指令的执行结果会自动影响PSW的有关状态标志位,有些状态位可用指令来设置。,特殊功能寄存器,:进位标志位 :半进位标 :用户标志位 :工作寄存器组选择 :溢出标志 P :奇偶标志,RS1 RS0 寄存器组内部RAM地址 0 0 工作寄存器组0 00H07H 0 1 工作寄存器组1 08H0FH 1 0 工作寄存器组2 10H17H 1 1 工作寄存器组3 18H1FH,4.堆栈指针SP 栈指针SP为一个8位专用寄存器,每存入(或取出)一个字节数据,SP就自动加1(或减1),SP始终指向新的栈顶。系统复位后钱指针初始化为07H。,5.数据指针DPTR 16位的专用寄存器,由高位字节DP

23、H和低位字节DPL组成。可作为一个16位寄存器使用,也可以作为2个独立的8位寄存器DPH和DPL使用。,6.I/O端口P0P3 专用寄存器P0P3分别是I/O端口P0P3的锁存器。可以把I/O口当作般的专用寄存器来使用,没有专门设置的口操作指令,全部采用统一的MOV指令。,关于数据存储器,1)根据地址总线宽度,在片外可扩展的存储器最大容量为64KB,地址范围为0000HFFFFH。,2)片外数据存储器与程序存储器的操作使用不同的指令和控制信号,允许两者的地址重复。因此,片外要扩展的数据存储器与程序存储器各为64KB。,3)片外数据存储器与片内数据存储器的操作指令亦不同(对片外RAM用MOVX指

24、令),所以也允许两者的地址重复,内部数据存储器的地址00 FFH,外部扩展数据存储器的地址可以从0000H FFFFH。,注意:采用R0、R1或DPTR寄存器间址方式访问片外数据存储器。当采用R0、R1间址时只能访问低256字节,采用DPTR间址可访问整个64K字节空间。,MCS-51及其5l子系列的其它成员都具有相同的中断结构。 8051有5个中断源2个外部中断源INT0和INT1,2个片内定时器计数器溢出中断源,1个片内串行口中断源。 分为两级高级中断和低级中断。其中任何一个中断源的优先级均可由软件设定为高级或低级,能实现两级中断服务程序嵌套 。 都是可屏蔽的,由软件设定。,第五节 MCS

25、-51的中断系统,中断允许寄存器IE控制,中断优先级寄存器IP控制,中断触发方式位IT控制,一、MCS51的中断源,1.中断源 1) 外部中断0请求,由P3.2引脚输入。可由用户设定为两种触发方式,(电平触发方式还是边沿触发方式)。一旦输入信号有效,则向CPU申请中断,并且将中断标志IE0置1。 2) 外部中断1请求,由P3.3引脚输入。亦可由用户设定为电平触发方式还是边沿触发方式。一旦输人信号有效,则向CPU申请中断,并将中断标志IE1置1。,3)片内定时器T0溢出中断请求。当定时器T0产生溢出时,T0中断请求标志TF0 置1,请求中断处理。 4)片内定时器T1溢出中断请求。当定时器T1产生

26、溢出时,T1中断请求标志TF1置l,请求中断处理。 5)片内串行口发送接收中断请求。当通过串行口发送或接收完一帧串行数据时,串行口中断请求标志TI或RI置1,请求中断处理。,2.中断请求标志,(1)TCON的中断标志 TCON是专用寄存器,字节地址为88H,它锁存了外部和的中断请求标志及T0和T1的溢出中断请求标志,1)IT0:选择外部中断0(INT0)触发方式控制位。 IT0=0 INT0为电平触发方式。 2)IE0:外部中断0请求标志位。IE01,外部中断0向CPU申请中断。 3)IT1:选择外部中断1(INT1)触发方式控制位。 4)1E1:外部中断1请求标志位。IE11时,外部中断1向

27、CPU申请中断。 5)TF0:片内定时器T0溢出中断请求标志。T0被启动后,从初始值开始进行加1计数,当最高位产生溢出时置TF01,向CPU申请中断,直到CPU响应该中断时,才由硬件自动将TF0清0,也可由软件查询该标志,并用软件清0。 6)TF1:片内定时器T1溢出中断请求标志,其操作功能与TF0类同。,SCON是串行口控制寄存器,与中断有关的是它的低两位TI和RI。 1) TI(SCON.1):串行口发送中断标志位。每发送完一个串行帧,由硬件置位TI。CPU响应中断时,不能清除TI,TI必须由软件清除。 2)RI(SCON.0):串行口接收中断标志位,当允许串行口接收数据时,每接收完一个串

28、行帧,由硬件置位RI。同样,RI必须由软件清除。,SCON,2)SCON的中断标志,二、MCS51的中断控制,1、中断允许寄存器IE中断的允许与开放,2中断优先级寄存器IP 中断优先级控制,内部自然优先级: 入口地址 INT0 高 0003H T0 000BH INT1 0013H T1 001BH TI/RI 底 0023H,中断处理过程一般分为三个阶段,即中断响应、中断处理和中断返回。,三、响应中断的条件及过程,1.中断响应 (1)中断响应的条件 1)有中断源发出请求信号 2)中断是开放的(总允许、源允许) 3)没有封锁(受阻),受阻情况是: CPU正在执行同级或高一级的中断服务程序; 现

29、行机器周期不是正在执行的指令的最后一个机器周期,即现行指令完成前不响应任何中断请求; 当前正在执行的是中断返回指令RETI或访问专用寄存器IE或IP的指令。也就是说,在执行RETI或是访问IE、IP的指令后,至少需要再执行条其他指令,才会响应中断请求。,2)中断响应过程 进入中断响应周期。CPU在中断响应周期要完成下列操作: 1) 根据中断请求源的优先级高低, 使相应的优先级状态触发器置1。 2) 清相应中断请求标志位IE0、 IE1、TF0或TF1 3) 保留断点,把PC内容 压入堆 保存。 4) 把被响应的中断源服务 程序入口地址送入PC,输入相应 中断服务程序。,2.中断服务与返回 在编

30、写中断服务程序时加注意的几点: 1)因各入口地址之间只相隔8个字节,一般的中断服务程序是存放不下的。所以通常在中断入口地址单元处存放条无条件转移指令,这样就可使中断服务程序灵活地安排在64KB程序存储器的任何空间。 2)若要在执行当前中断程序时禁止更高优先级中断,可先用软件关闭CPU中断,或禁止某中断源中断,在中断返回前再开放中断。 3)注意在保护现场和恢复现场。 4)中断服务程序的最后一条是返回指令RETI,该指令将清除响应中断时被置位的优先级状态触发器,然后自动将断点地址从栈顶弹出,装入程序计数器PC,使程序返回到被中断的程序断点处,继续向下执行。,3.中断请求的撤除 CPU响应中断请求后

31、,在中断返回(RETI)前,该中断请求信号必须撤除,否则会引起另外一次中断。 注意:采用边沿触发的外部中断标志IE0或IEl和定时器中断标志TF0或TFl,CPU响应中断后能用硬件自动情除。 但在电平触发时,IE0或IEl受外部引脚中断信号(或)的直接控制,CPU无法控制IE0或IEl,需要另外考虑撤除中断请求信号的措施,如通过外加硬件电路,并配合软件来解决;串行口中断请求标志TI和RI也不能由硬件自动清除,需要在中断服务程序中,用软件来清除相应的中断请求标志。,小结:1、硬件构成 2、存储器组织 3、中断系统,课间休息,第三章 1-1,本章重点:指令的寻址方式、功能、使用方法 程序设计的一般

32、方法和技巧 讲授内容:MCS-51单片机的寻址方式 MCS-51单片机指令分类 程序设计方法和算法分析 应用程序设计举例,第三章MCS-51单片机的指令系统与程序设计,第一节 MCS51单片机的寻址方式,MCS-51单片机的指令系统共有111条指令,7种寻址方式,共分为五大类,MCS-51指令系统简介: 1、指令所包含的内容 操作码:规定指令的操作功能 操作数:指令操作的具体对象(地址、数据) 2、指令格式 单字节指令: 双字节指令: 三字节指令,在MCS-51系列单片机的指令中,常用的符号: #data8、#data16:分别表示8位、16位立即数。 direct:片内RAM单元地址(8位)

33、,也可以指特殊功能寄存器的地址或符号名称。 addr11、addr16:分别表示11位、16位地址码。 rel:相对转移指令中的偏移量,为8位带符号数(补码形式)。 bit:片内RAM中(可位寻址)的位地址。 A:累加器A;ACC则表示累加器A的地址。 Rn:当前寄存器组的8个工作寄存器R0R7。 Ri:可用作间接寻址的工作寄存器,只能是R0、R1。 :间接寻址的前缀标志。,第一节 MCS51单片机的寻址方式,一、立即寻址 立即寻址是指在指令中直接给出其操作数,该操作数称为立即数。为了与直接寻址指令中的直接地址相区别,在立即数前面必需加上前缀“#”。 例如: MOV R0,#30H,寻址方式,

34、二、直接寻址 直接寻址是指在指令中直接给出存放数据的地址(注意:不是立即数,并且只限于片内RAM范围)。直接寻址只能访问特殊功能寄存器、内部数据存储器和位地址空间。 例如:MOV A,30H 比较以上两指令的区别,三、寄存器寻址 寄存器寻址是指指令中的操作数为寄存器中的内容。 例如:MOV A,R1,四、寄存器间接寻址 寄存器间接寻址是指指令中的操作数在寄存器的内容所指的地址单元中。 例如:MOV R1,#30H;把立即数30H送R1寄存器 MOVA,R1;把30H单元中的数送到A中,五、变址寻址 变址寻址用于访问程序存储器中的一个字节,该字节的地址是:基址寄存器(DPTR或PC)的内容与变址

35、寄存器A中的内容之和。 例如: MOV DPTR,#3000H ;立即数3000H送DPTR MOV A,#02H ;立即数02H送A MOVC A,A+DPTR ;取ROM中3002H单元中的数送A,六、相对寻址 以当前值为基准,加上相对偏移量rel形成转移地址 转移范围:以当前值起始地址,相对偏移在 字节单元之间。相对寻址方式为相对转移指令所采用。 转移的目的地址为: 目的地址=转移指令所在地址+转移指令字节数+rel,七、位寻址 位寻址是指对片内RAM的位寻址区(20H2FH)、可以位寻址的专用寄存器的各位,并进行位操作的寻址方式。 例如:MOVC,00H;把20H单元中D0位的值送C位

36、 MOVP1.0,C;把C位中的值送P1口的D0位 SETB20H. 0;把00H位置1,位地址的表示方法 位名称 例:CY、RS0 寄存器名加序号 例:ACC.1、P0.1 字节地址加序号 例:20H.3 直接位地址 例:00H、 07H,操作数的7种寻址方式和寻址的空间,MCS51汇编语言指令格式如下: 标号:操作码 操作数1,操作数2,操作数3 ;注释 其中标号实际上为符号地址,表示这条指令在程序存储器中的存放首地址,以字母开始,后可跟18个字母或数字,但标号不能用操作码或专用符号。 操作码规定了指令的具体操作。 指令中的操作数为指令的具体操作对象,有些指令中有3个操作数,有些只有一个,

37、有些无操作数,仅有操作码。,第二节 MCS51单片机的指令分类,指令分类:,一、数据传送与交换类指令 特点:除第一操作数为A的指令影响P位外,其它并不影响标志位 有三种传送指令 MOV 片内RAM和特殊功能寄存器之间的传送 MOVX 片外RAM与ACC之间的传送 MOVC 程序存储器的数据送ACC 1用于片内RAM传送的指令(16条),1)以累加器CC 为目的操作数 ,n ; . , direct; , Ri (R1,R0) , #data,2)以 Rn 为目的操作数 n, A n, direct n, #data 3)以直接地址为目的操作数 direct, direct,Rn direct,

38、#data direct,Ri(R1,R0) direct,direct ;,4)以 寄存器间址 为目的操作数 Ri, direct; Ri, A; Ri, #data 5)16位数据送数据指针 DPTR DPTR,#Ddata16,例如:MOV30H,#7AH ;将立即数7AH送片内RAM 30H单元中 MOVR0,#30H ;将立即数30H送R0寄存器 MOVA,R0 ;将R0指定的30H中的数7AH送A中 MOV DPTR,#1000H ;将1000H送DPTR寄存器 MOVX DPTR,A,练习:将R1中的内容送R2,2用于片外RAM传送的指令(共4条) 片外RAM单元的地址为16位,

39、一般用DPTR间接寻址;也可使用Ri来间接寻址(低8位编址时)。,1)外部RAM低256字节单元与之间的传送 MOVX , i MOVX i, )外部RAM单元与之间的传送 MOVX ,DPTR MOVX DPTR, 例: MOV DPTR, #2000H MOVX ,DPTR ;将外部RAM中2000H单元内容A,思考:将片内RAM 50H单元 内容 片外RAM 5000H单元,3用于ROM传送的指令(共2条),MOVC A,A+DPTR;(A)(A)+DPTR)) MOVC A,A+PC ;(A)(A)+(PC) 以PC的当前值为基址,A为变址,例3-1:在ROM 1000H开始存有5个字

40、节数,编程将第二个字节数取出送片内RAM 30H单元中。程序段如下: MOV DPTR,#1000H ;置ROM地址指针(基址)DPTR MOV A,#01H ;表内序号送A(变址) MOVC A,A+DPTR ;从ROM 1000H单元中取数送到A MOV 30H,A ;再存入内RAM 30H中 ORG 1000H ;伪指令,定义数表起始地址 TAB: DB 55H,67H,9AH,;在ROM 1000H开始的空间中定义5个 ; 字节,例3-2:设某数N已存于20H单元(N10),查表求N平方值,存入21H单元。 程序段如下: MOV A,20H;取数N ADD A,#01;加查表偏移量 M

41、OVC A,A+PC;查表 NOP TAB:DB 00H,01H,04H,09 ;定义数表,由于PC为程序计数器,总是指向下一条指令的地址在执行第二条指令“MOVC A,A+PC”时,在查表前应在A累加器中加上该指令与表之间的偏移量。 用DPTR查表时,表格可放在ROM的64K范围(不用考虑偏移量),用MOVC A,A+PC指令时则必须把表格就放在该条指令下面开始的255个字节的空间中。,4交换指令(共5条) 其中3条为整个字节相互交换,XCHD指令为低4位相互交换,SWAP为ACC中的高、低4位互换。,1)字节交换 XCH A, Rn ; (A)(Rn) XCH A, direct XCH

42、A, Ri 2)半字节交换 XCHD A, Ri ; SWAP A 例:已知(A)=34H,(R6)=29H,执行以下指令后,(A)=? XCH A,R6 SWAP A,思考:用不同的方法实现片内RAM (20H)R1,5堆栈操作指令(共2条) 堆栈是在内RAM开辟的一个数据的暂存空间,遵守“后进先出”原则操作,其地址指针为SP,它指出栈顶的位置,复位时SP=07H。,入栈:PUSH direct ;SP先增1,再将数据压栈。 出栈;POP direct ;数据先出栈,再SP减1。 例如,已知(A)=44H,(30H)=55H,执行 MOVSP,#5FH ;栈起点设置为5FH PUSH ACC

43、 ;A中的44H压到60H中保存 PUSH 30H ;30H中的55H压到61H中保存 POP30H ;把61H中的55H弹出到30H POPACC ;把60H中的44H弹出到A中,【例】 将片内RAM 30H单元与40H单元中的内容互换。,方法1(直接地址传送法): MOV31H,30H MOV30H,40H MOV40H,31H SJMP$,方法2(间接地址传送法): MOVR0,#40H MOVR1,#30H MOVA,R0 MOVB,R1 MOVR1,A MOVR0,B SJMP$,方法4(字节交换传送法): MOVA,30H XCHA,40H MOV30H,A SJMP$,方法3(堆

44、栈传送法): PUSH30H PUSH40H POP30H POP40H SJMP$,二、算术运算类指令 算术运算类指令有加、减、乘、除法指令,增1和减1指令,十进制调整指令,共24条,使用时应注意判断各种结果对哪些标志位(CY、OV、AC、P)产生影响。,1.不带进位的加法指令ADD(4条),ADD A,Rn ;A(A)+ (Rn) ADD A,direct ;A(A)+(direct) ADD A,Ri ;A(A)+ (Ri) ADD A,#data ;A(A)+ data,练习3-3 98H+75H 分析各标志位的置位情况,加法和减法指令的第一操作数都是A,并将运算结果放在A中,2. 带

45、进位的加法指令ADDC (4条),ADDC A, Rn ;A(A)+(Rn)+(CY) ADDC A, direct ;A(A)+(direct)+(CY) ADDC A, Ri ;A(A)+((Ri))+(CY) ADDC A, #data ;A(A)+data +(CY),例如求 5688H+2396H 低字节用ADD指令,高字节用ADDC指令,3. 带借位减法指令SUBB (4条),SUBB A, Rn ;A(A)-(Rn)-(CY) SUBB A, direct ;A(A)-(direct)-(CY) SUBB A, Ri ;A(A)-((Ri))-(CY) SUBB A, #data

46、 ;A(A)-data-(CY),减法只有带借位减法指令,在不须减借位时可先清CY。,4.乘法指令MUL(1条),MUL AB ;B A (A)(B),5.除法指令DIV(1条),DIV AB ;A A/B(商)B 余数 说明:无符号数相除,当除数(B)=0时,结果为无意义,并置OV=1;CY位总是0。,说明:当积大于255(0FFH)时,即积的高字节B不为0时,置OV=1,否则OV=0;CY位总是0。,6.加1指令 INC (5条),INC A INC Rn INC direct INC Ri INC DPTR,7.减1指令(4条),注意:没有对DPTR 的减1操作指令,DEC A DEC

47、Rn DEC direct DEC Ri,只有INC A 和 DEC A这两条指令影响影响P,其他不影响任何标志。,8.十进制调整指令 DA A(1条) ADD、ADDC指令都是对8位二进制数进行加法运算,当两个BCD码数进行加法时,必须增加一条DA A指令(对其结果进行调整),否则结果就会出错。 注意: DA A指令只能用于加法指令后,第三章 2-11,三. 逻辑运算与循环类指令 特点:是当A作目的操作数(第一操作数)时,影响P位;带进位的移位指令影响Cy位,其余都不影响PSW。,第二节 MCS-51 单片机的指令分类,1. 逻辑“或”运算指令ORL (6条) 2. 逻辑“与”运算指令ANL

48、 (6条) 3. 逻辑“异或”运算指令XRL (6条),此类指令都是按位操作,其中有4条指令的第一操作数都为A。另外两条指令的第一操作数为direct,第二操作数为A和data。,逻辑运算类指令:,如:逻辑或指令格式: ,n ,direct ,i ,data direct, direct, data,用AND指令可对指定位或指定的一些位进行屏蔽(清零) 。 例如:ANL A,#0FH;将A中的高4位清零 #0FH称为屏蔽字,屏蔽字中的0对应于需要清0的位。,用ORL指令可对一些指定位置1。 例如:ORL A,#80H 可将A中的最高位置1,其他位保持不变。,通过XRL指令用“1”与某数的对应位

49、异或,可将该位取反,用“0”与某数的对应位异或,可将指定位不变;,逻辑运算类指令的常用功能:, 求反指令(1条) CPL A;对累加器A的内容各位求反,结果送回A中,影响P位。 清0指令(1条) CLR A ; 将累加器A的内容清0。,注意:两条指令仅对A有效, 循环移位指令(4条,仅对A有效) 其中有两条不带CY位的逐位循环移位一次指令,不影响PSW。两条带CY位的逐位循环移位一次指令,仅影响CY位。,RL A;左移 RR A;右移 RLC A;带进位CY的左移 RRC A;带进位CY的右移,例:将双字节数(R2)(R3)右移一位 CLR C MOV A,R2 RRC A MOV R2,A

50、MOV A,R3 RRC A MOV R3,A 分析执行过程,四、控制程序转移类指令,控制程序转移类指令主要功能是控制程序转移到新的PC所指地址去执行程序。,1.无条件转移指令(4条) (1)长转移指令 LJMP addr16 ;PC addr16 范围 64K,(2)绝对转移指令 AJMP addr11 ;PC100 addr11 指令中包含有11位的目的地址(a10 a9 a0), PC 高5位不变,*转移范围2K字节 目的地址必须和 PC+2 在同一页内 *机器码为两字节 a10 a9 a8 0 0 0 0 1 a7-a0,(3)短(相对)转移指令 SJMP rel ; PC PC +

51、2 + rel 其目的地址是由PC中的当前值和指令的第二字节中带符号的相对地址相加而成的。因此本指令转移的范围为:下一条指令的(128127)字节内,即本指令的(-126+129)字节内。 实际应用时,addr16、addr11、rel一般用符号地址形式。,(4)间接转移指令(又称散转指令) JMP A+DPTR ;PC (A) + (DPTR 目的地址由指针DPTR和变址A的内容之和形成,范围达 64K 。,2条件转移指令(8条) 此类指令均为相对寻址指令。,(1)累加器判零转 JZ rel;A=0 转,PC=PC+2+rel JNZ rel;A0转,(2)CY位条件判转 JC rel; C

52、Y=1 转PC=PC+2+rel JNC rel;CY=0 转,(3)数值比较转 均为三字节 CJNE A,#data,rel CJNE A,direct,rel CJNE Rn,#data ,rel CJNE Ri,#data, rel 指令功能为两数比较不相等 转移,操作过程为 第一数减第二数 状态标志送PSW,但不改变原来 的操作数,注意:参与比较的数为无符号数,(4)可寻址位条件判转 (三字节) JB bit,rel; (bit)=1 转 JNB bit,rel ;(bit)=0 转 JBC bit,rel ;(bit)=1 转, 并将该位清零,(5)循环控制指令DJNZ DJNZ R

53、n,rel DJNZ direct,rel; 指令功能是把源操作数减1,结果送回原操作数中,再判结果不为0就转到目的地去,否则继续下面一条指令执行。 主要应用在循环结构的编程中,作循环结束控制用。,例2:比较两无符号数的大小 求R1、R2中较大的数,结果存R3 中。,解: ORG 0000H AJMP MAIN ORG 0030H MAIN:MOV A,R1 CJNE A,02H,NEXT NEXT:JC/JNC DONE (?) MOV A,R2 DONE:MOV R3,A LP:SJMP JP END,条件转移指令的应用: 例3-7:根据A中的数是大于/等于/小于64H这三种情况去执行三种

54、不同的处理程序。,3.子程序调用及返回指令(4条),(1)长调用指令 LCALL addr16 ;PCPC+3,SPSP+1,(SP)PC710 SPSP+1,(SP)PC158 , PCaddr16,(2)绝对调用指令 ACALL addr11;PC PC+2,SPSP+1,(SP)PC70 SP SP+1,(SP) PC158,PC100addr1,(3)子程序返回指令 RET ;PC158 (SP),SPSP-1 ;PC70 (SP),SPSP-1 从堆栈中弹出(断点)地址值给PC(先高后低,栈指针减2),使程序从该PC值处开始执行程序。不影响PSW。 (4)中断返回 RETI ;PC1

55、58(SP),SPSP-1 ;PC70 (SP),SPSP-1 除具有RET指令的所有功能外,还将自动清除优先级状态触发器。RETI指令用在中断服务子程序中,作最后一条返回指令。 注意:不能用RET指令代替RETI。,4空操作指令(1条) NOP; 指令的执行时间为一个机器周期,占一个字节。,1.位传送指令(2条) MOV C,bit; C(bit) MOV bit,C; bitC 指令中必须有一个位操作数是布尔累加器C,另一个才可以是直接可寻址的位。 例:MOV P1.5,C;把C中的值送到P1.5口线输出 2.位修改指令(6条) CLR C ; C0 CLR bit ;(bit)0 SET

56、B C ;C1 SETB bit ;(bit)1 CPL C ;C/C CPL bit ;(bit)/(bit),五、位操作类指令,这组指令用来实现对位清0,取反,置1,不影响其它标志位。,3.位逻辑运算指令(4条) 这组指令的第一操作数必须是C,两位逻辑运算的结果送C中,式中的斜杠是位取反,但并不影响操作数本身的值。,ANL C,bit ; CC(bit) ANL C,/bit ;CC/(bit) ORL C,bit ;CC(bit) ORL C,/bit ; CC/(bit),第三章 3-1,用汇编语言编写程序,一般可分为以下几个步骤: 1)分析题意,确定算法; 2)设计程序流程图; 3)

57、确定数据结构:合理地选择和分配内存单元以 及工作寄存器; 4)编写源程序: 5)上机调试程序。,第三节 程序设计方法,MCS-51单片机汇编语言,包含两类不同性质的指令。 (1)基本指令:即指令系统中的指令。它们都是机器能够执行的指令,每一条指令都有对应的机器码。 (2)伪指令:汇编时用于控制汇编的指令。它们都是机器不执行的指令,无机器码 汇编语言的语句格式 汇编语言一般由四部分组成。 标号:操作码 操作数;注释 START:MOV A,30H;A(30H),(1)标号段 标号是用户根据需要设定的符号地址。通常是在一段程序的入口或程序的转向点设置一个标号。使用标号便于程序的阅读、修改及转移指令

58、的书写。标号由英文字母开头的18个字母数字串组成。 标号以“:”结束,且同一个标号名在一个程序中只能使用一次,不能重复定义。 (2)操作码段即指令系统中的助记符。它规定了语句执行的操作属性,是不可缺少的。 (3)操作数段操作数用于给指令的操作提供具体数据和地址。 操作数可以是一项或用逗号分开的两项、三项,也可以是空白(例如DA A 指令)。 (4)注释段注释用于对语句或一段程序进行解释和说明,有利于交流和阅读。注释的长度不限,但应尽量简明扼要。注释与操作数之间用“;”分开。,一、伪指令简介 1. ORG 汇编起始地址伪指令 指令格式: ORG m m为十六进制数或十进制。它规定了它下面的程序或

59、数表应从ROM的m地址处开始存放。一个汇编语言源程序中,可以多次使用ORG命令,地址一般应从小到大,且不能使各程序段出现重叠现象。,2 END 汇编结束伪指令 指令格式: END END指令用于终止源程序的汇编工作。一般一个源程序只能有一个END。,3 EQU 赋值伪指令 指令格式: 标号名称 EQU 汇编符号或数 EQU是将一个数或汇编符号赋予规定的标号名称,汇编程序会自动将EQU右边的数或汇编符号(地址或常数)赋给左边的标号名称。所以应先定义后使用。,4DB 定义字节伪指令 指令格式:标号:DB 字节常数或数表。表明从该标号地址单元开始定义一个或若干个字节的数。例如: ORG 1000H

60、TAB:DB 12H,34H,56H;从1000H单元开始存放数 DB 78H,9AH,00H;换行,仍要先写DB 5DW 定义字伪指令 指令格式:标号:DW字常数或字数表 类似DB,但DW指从该标号地址单元开始,存放一个或若干个字的数。例如: ORG 1500H TAB1:DW 1234H,9AH,10 伪指令DW则定义1500H1505H单元的内容依次为12H、34H、00H、9AH、00H、0AH。,6DS 预留空间伪指令 指令格式:标号:DS表达式 DS指定从标号地址单元开始,保留若干字节单元备用。例如: TAB2:DS100 ;通知汇编程序从TAB2开始保留100个字节单元,以备源程

61、序另用。 7BIT 位地址符号伪指令 指令格式:标号名称BIT位地址 一般用来将位地址赋给标号名称,以用户编程和程序阅读。例如: M0 BIT 20H.0 MOV C,M0,二、顺序程序设计,练习:将30H单元内的两位BCD码拆开并转换成ASCII码,存入RAM31H、32H两个单元中。,ORG1000H MOVA,30H ;取值 ANLA,#0FH ;取低4位 ADDA,#30H ;转换成ASCII码 MOV32H,A ;保存结果 MOVA,30H ;取值 SWAPA ;高4位与低4位互换 ANLA,#0FH ;取低4位(原来的高4位) ADDA,#30H ;转换成ASCII码 MOV31H

62、,A ;保存结果 SJMP$,三、分支程序与循环程序设计,1.分支程序,三、分支程序与循环程序设计,例3-13:设X,Y均为带符号数, 存放在地址为M和N单元中, 编程计算Y=f(x) 1 当x0 Y = 0 当x=0 -1 当x0 思路: 进行两次判断,第一次 利用指令JZ,第二次利用 指令JZB判断此符号位。,MEQU40H ;定义数据地址 NEQU41H ORG0100H MOV A,M ;取出X JZ NEXT2 ;当X=0,则跳转到NEXT2 JNB ACC.7,NEXT1 ;当X0,则跳转到NEXT1 MOVA,#0FFH ;当X0,01H送A NEXT2: MOV N,A ;存结

63、果 SJMP $,例313程序清单:,当程序出现多重分支时,常用无条件间接转移指令实现散转。,JMP A+DPTR,MOV DPTR,#JTAB ;转移指令表首地址送DPTR MOV A,NAMBER ;转移分支编号(04)送A MOV B , #03H MUL AB JMP A+DPTR,下面是一个实现5种分支转移的程序:,JTAB: LJMP CASE0 LJMP CASE1 LJMP CASE2 LJMP CASE3 LJMP CASE4,2循环程序,循环程序一般包括如下四个部分: (1)初始化 (2)循环体 (3)循环控制 (4)结束 循环程序按结构形式,有单重循环与多重循环。 在多重

64、循环中,只允许外重循环嵌套内重循环。 不允许循环相互交叉,也不允许从循环程序的外部跳入循环程序的内部。 循环/结束控制常有两种结构:一种为计数器控制循环结构;一种为条件控制循环结构。循环程序的一般结构如图,例3-15:在内RAM 40H开始存放了一串单字节数,串长度为8,编程求其中最大值并送R7中。 思路:对数据块中的数逐一两两相比较,较大值暂存于A中,直到整串比完,A中的值就为最大值。,MOV R0,#40H ;数据块首址送地址指针R0 MOV R2,#7 ;循环次数送R2 MOV A,R0 ;取第一个数,当作极大值 LOOP: INC R0 ;修改地址指针 MOVB,R0 ;暂存B中 CJNE A,B,NEXT ;比较后产生标志(CY) NEXT : JNC NEXT1 ;CY=0? MOVA,R0 ;更大数送A NEXT1: DJNZR2,LOOP ; 循环次数结束? MOVR7,A

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!