《完美版课件单片机原理与接口技术复习重点.ppt》由会员分享,可在线阅读,更多相关《完美版课件单片机原理与接口技术复习重点.ppt(216页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机原理及应用单片机原理及应用试卷构成1选择题1分*1515分2填空题1分*1515分3阅读程序 5分4=20分4简单程序设计10分2=20分5应用题152=30分试题范围:课本相关理论知识与编程设计、实验、作业第第2 2章章 MCS-51MCS-51系列单片机的结构和原理系列单片机的结构和原理1掌握单片机的基本结构(掌握单片机的基本结构(CPU、ROM、RAM、定时定时/计数器、并行计数器、并行I/O、全双工串行口、中断系统、全双工串行口、中断系统、总线结构)。总线结构)。2掌握特殊功能寄存器掌握特殊功能寄存器SFR的功能、作用及它们复的功能、作用及它们复位后的状态。位后的状态。3掌握存储
2、器的组织结构(分掌握存储器的组织结构(分ROM和和RAM)及对)及对应的寻址方式。应的寻址方式。4了解单片机的工作时钟与时序。了解单片机的工作时钟与时序。2.1 单片机内部组成及引脚功能单片机内部组成及引脚功能 MCS-51系列单片机有系列单片机有3种类型的产品:种类型的产品:8051、8751和和8031,其主要差别:,其主要差别:8051内设有内设有4KB的的掩膜掩膜ROM;8751内设内设有有4KB的的EPROM;8031内内没有没有ROM。51子系列的主要特点为:子系列的主要特点为:8位位CPU。片内带振荡器,频率范围片内带振荡器,频率范围1.212MHZ。片内片内带带256字节字节的
3、的数据存储器数据存储器。片内片内带带4K的的程序存储器程序存储器。程序存储器的寻址空间为程序存储器的寻址空间为64K字节字节。片外数据存储器的寻址空间内片外数据存储器的寻址空间内64K字节字节。128个用户位寻址空间个用户位寻址空间。2.1.1 单片机内部结构单片机内部结构CPURAMROM中断系统中断系统串行口串行口并行口并行口定时计数器定时计数器振荡电路振荡电路X1X2P0P1P2P3TXDRXDINT0INT1T0T1图图2-1 MCS-51系列单片机的基本结构图系列单片机的基本结构图1.微处理器微处理器 即即CPU,包括运算器和控制器。,包括运算器和控制器。(1)运算器)运算器ALU:
4、进行算术或逻辑运算部件;:进行算术或逻辑运算部件;(2)控制器:产生各种控制信号,控制计算机工作的部件。)控制器:产生各种控制信号,控制计算机工作的部件。2.内部数据存储器内部数据存储器共有共有256B(00HFFH),其中低),其中低128B(00H7FH)用)用户使用;高户使用;高128B(80HFFH)为专用寄存器。)为专用寄存器。3.内部程序存储器内部程序存储器8051有有4KB(0000H0FFFH)ROM,用于存放程序、,用于存放程序、原始数据或表格常数。原始数据或表格常数。4.定时器定时器/计数器计数器2个个16位定时位定时/计数器。计数器。5.并行并行I/O口口共有共有4个个8
5、位位I/O口(口(P1、P2、P3、P4)。)。6.串行口串行口1个全双工的异步串行口,实现串行数据传送。个全双工的异步串行口,实现串行数据传送。7.中断控制系统中断控制系统2个外中断、个外中断、2个定时个定时/计数中断和计数中断和1个串行口中断。个串行口中断。8.时钟电路时钟电路为单片机产生时钟脉冲序列,为单片机产生时钟脉冲序列,1.2MHz12MHz。2.1.2MCS-51的引脚功能的引脚功能 MCS-51 MCS-51单片机的单片机的4040引脚引脚双列直插式双列直插式(DIP)(DIP)封装封装结构如下图。结构如下图。XTAL1:时钟电路引脚时钟电路引脚XTAL2:时钟电路引脚时钟电路
6、引脚RST/VPD:复位复位/备用电源备用电源EA:外部程序存储器使能端外部程序存储器使能端0外部程序存储器外部程序存储器1片内片内片外片外ALE:低低8位地址锁存使能端位地址锁存使能端PSEN:外部程序存储器选通外部程序存储器选通信号信号表表2-1 P3各口线的第二功能表各口线的第二功能表 P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7PSEN EAALERST用户I/O控制总线(CB
7、)锁存器A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0地址总线数据总线(AB)(DB)VccVssVccVss片外总线结构片外总线结构1数据总线数据总线数据总线宽度为数据总线宽度为8位,由位,由P0口直口直接提供。接提供。2地址总线地址总线地址总线宽度为地址总线宽度为16位,寻址范位,寻址范围都为围都为64KB。由。由P0口经地址锁存口经地址锁存器提供低器提供低8位(位(A7A0),),P2口提口提供高供高8位(位(A15A8)而形成。可对)而形成。可对片外程序存储器和片外数据存储器片外程序存储器和片外数据存储器寻址。寻址。3控制总
8、线控制总线控制总线由第二功能状态下的控制总线由第二功能状态下的P3口和口和4根独立的控制线根独立的控制线RST、EA、ALE和和PSEN组成。组成。2.3 存储器组织存储器组织(a)外部外部ROM内部内部ROM(EA=1)外部外部ROM(EA=0)0000H0000H0FFFH0FFFH1000HFFFFH7FH80HFFH00H外外部部RAM(64KB)0000HFFFFH内部内部128BRAM特殊功能寄存器特殊功能寄存器(21个个SFR)(c)(b)2.3.1 MCS-51储存器特点储存器特点物理上分为:物理上分为:4个空间,即片内个空间,即片内ROM、片外、片外ROM 片内片内RAM、片
9、外、片外RAM逻辑上分为:逻辑上分为:3个空间,个空间,即程序内存(片内、外)统一编址即程序内存(片内、外)统一编址 MOVC 数据存储器(片内)数据存储器(片内)MOV 数据存储器(片外)数据存储器(片外)MOVX2.3.2 片内数据存储器片内数据存储器1、片内数据存储器低、片内数据存储器低128B(字节地址为(字节地址为00H7FH)(1)通用寄存器区)通用寄存器区00H1FH R0R7;单片机复位后自单片机复位后自动选择工作寄存器动选择工作寄存器0区区。8051的片内的片内8位地址寻址,寻址位地址寻址,寻址范围为范围为256个单元(个单元(00HFFH)RS1RS0工作寄存器工作寄存器组
10、组000组组(00H07H)011组组(08H0FH)102组组(10H17H)113组组(18H1FH)(2)位寻址区)位寻址区20H2FH:可进行可进行128位的位寻址位的位寻址(3)用户)用户RAM区区30H7FH:用户用户RAM区,字节寻址,区,字节寻址,用作数据缓冲区以及用作数据缓冲区以及堆栈堆栈区。区。表表2-3 8051RAM区位地址分配表区位地址分配表(1)位寻址区的访问)位寻址区的访问 SETB 7FH ;7FH1 等价于等价于 SETB 2FH.7两点说明:两点说明:(2)堆栈)堆栈 堆栈是在内存堆栈是在内存RAM中开辟的一个中开辟的一个特定的存储区,专门用来暂存数据或断特
11、定的存储区,专门用来暂存数据或断点地址,并按照点地址,并按照“先进后出,后进先出先进后出,后进先出”的原则进行操作。的原则进行操作。栈底是固定的,栈顶会自动地向栈底是固定的,栈顶会自动地向地址递增的方向变化。地址递增的方向变化。系统复位后,系统复位后,SP被初始化位被初始化位07H。2、片内数据存储器高、片内数据存储器高128B表表2-4 特殊功能寄存器特殊功能寄存器SFR地址表地址表特殊功能寄存器(特殊功能寄存器(SFR)也称)也称专用寄存器专用寄存器,专门用于控制、管理片内,专门用于控制、管理片内算术逻辑部件、并行算术逻辑部件、并行I/O口、串行口、定时口、串行口、定时/计数器、中断系统等
12、功能计数器、中断系统等功能模块的工作。模块的工作。(1)累加器)累加器ACC累加器累加器ACC(简称为(简称为A)为一个)为一个8位的寄存器,它是位的寄存器,它是CPU中使用最频繁的寄存器,中使用最频繁的寄存器,ALU进行运算时,数据绝大多数时候进行运算时,数据绝大多数时候都来自于累加器都来自于累加器ACC,运算结果也通常送回累加器,运算结果也通常送回累加器ACC。(3)堆栈指针)堆栈指针SP堆栈指针堆栈指针SP是一个是一个8位寄存器,位寄存器,用它存放栈顶的地址。用它存放栈顶的地址。数据入栈时,先数据入栈时,先SP自动加自动加1,后,后写入数据;数据出栈时,先读出数据,写入数据;数据出栈时,
13、先读出数据,后后SP自动减自动减1;SP始终指向栈顶地址。始终指向栈顶地址。复位时复位时SP=07H。但在程序设计但在程序设计时应将时应将SP值初始化为值初始化为30H以后,以免以后,以免占用宝贵的寄存器区和位地址区。占用宝贵的寄存器区和位地址区。(2)B寄存器寄存器 主要用于乘法和除法运算。主要用于乘法和除法运算。(4)程序状态字)程序状态字PSW 程序状态字程序状态字PSW是一个是一个8位的寄存器,它用于保存指令位的寄存器,它用于保存指令执行结果的状态,以供程序查询和判别。执行结果的状态,以供程序查询和判别。Cy进位进位/借位标志;位累加器。借位标志;位累加器。AC辅助进辅助进/借位标志;
14、用于十进制调整。借位标志;用于十进制调整。F0用户定义标志位;软件置位用户定义标志位;软件置位/清零。清零。OV溢出标志;溢出标志;硬件置位硬件置位/清零。清零。P奇偶标志;奇偶标志;A中中1的个数为奇数的个数为奇数P=1;否则;否则P=0。RS1、RS0寄存器区选择控制位。寄存器区选择控制位。00:0区区R0R701:1区区R0R710:2区区R0R711:3区区R0R7(5)数据指针)数据指针DPTR DPTR为为16位寄存器,也可按两个位寄存器,也可按两个8位寄存器使用:位寄存器使用:DPH:DPTR高位字节高位字节 DPL:DPTR低位字节低位字节(6)程序计数器)程序计数器PC PC
15、用于存放下一条执行的指令地址,是一个用于存放下一条执行的指令地址,是一个16位专用位专用寄存器,可寻址寄存器,可寻址64KB。PC有自动加有自动加1的功能,的功能,PC没有地址,没有地址,不可寻址不可寻址。复位后,复位后,PC0000H。67H=01100111B 58H=01011000B 0 1 1 0 0 1 1 1B+0 1 0 1 1 0 0 0B 1 0 1 1 1 1 1 1 =0BFH 则执行后累加器则执行后累加器A中的值为中的值为0BFH,由相加过程得,由相加过程得Cy=0、AC=0、OV=1、P=1。例例:试分析下面指令执行后,累加器试分析下面指令执行后,累加器A,标志位,
16、标志位Cy、AC、OV、P的值?的值?MOV A,#67H ADD A,#58H 分析:第一条指令执行时把立即数分析:第一条指令执行时把立即数67H送入累加器送入累加器A,第二条,第二条指令执行时把累加器指令执行时把累加器A中的立即数中的立即数67H与立即数与立即数58H相加,结相加,结果回送到累加器果回送到累加器A中。加法运算过程如下:中。加法运算过程如下:2.3.3 片内程序存储器片内程序存储器寻址范围:寻址范围:0000HFFFFH容量容量64KB,即即地址长度:地址长度:16位位,寻址内部,寻址内部ROM;,寻址外部,寻址外部ROM。当当PC值超过片内值超过片内ROM容量时会自动转向外
17、部存储器空间。容量时会自动转向外部存储器空间。8031单片机单片机接低电平。接低电平。作作 用:用:存放程序及程序运行时所需的常数。存放程序及程序运行时所需的常数。0000H 系统复位,系统复位,PC指向此处;指向此处;0003H 外部中断外部中断0入口入口000BH T0溢出中断入口溢出中断入口 0013H 外中断外中断1入口入口001BH T1溢出中断入口溢出中断入口0023H 串口中断入口串口中断入口1.P0口(P0.0P0.7,3932脚)为三态双向口(1)P0口作地址/数据复用总线使用(低8位)(2)P0口作通用I/O端口使用(3)P0口线上的“读修改写”功能2.P1口(P1.0P1
18、.7、18脚)准双向口3.P2口(P2.0P2.7,2128脚)准双口(1)P2口作通用I/O端口使用(2)P2口作地址总线口使用(高8位)4.P3口(P3.0P3.7、1017脚)双功口(1)P3口作第一功能口(通用I/O端口)使用(2)P3口作第二功能口使用2.4 并行并行I/O端口端口(1)通用输出)通用输出 此时必须外接上拉电阻此时必须外接上拉电阻。(2)通用输入)通用输入读引脚:读引脚:CPU在执行在执行“MOV”类输入指令时(如:类输入指令时(如:MOV A,P0),内部产生的操作信号是),内部产生的操作信号是“读引脚读引脚”。P0.X引脚上的数据经引脚上的数据经过缓冲器过缓冲器2
19、读入到内部总线。读入到内部总线。1、P0口作通用口作通用I/O口使用口使用2、P0口作地址口作地址/数据总线数据总线 不必外接上拉电阻。不必外接上拉电阻。读锁存器:读锁存器:CPU在执行在执行“读读-改改-写写”类输入指令时(如:类输入指令时(如:ANL P0,A),锁存器中的数据经过缓冲器),锁存器中的数据经过缓冲器1送到内部总线,然送到内部总线,然后与后与A的内容进行逻辑的内容进行逻辑“与与”,结果送回,结果送回P0锁存器并出现在引锁存器并出现在引脚。脚。注意:在读引脚时,必须先向电路中的锁存器写入注意:在读引脚时,必须先向电路中的锁存器写入1。MOV P0,#0FFH MOV A,P0P
20、1P1口内部结构如下图所示口内部结构如下图所示输出部分有内部上拉电阻输出部分有内部上拉电阻R*R*约为约为20K20K。其他部分与其他部分与P0P0端口使用相类似(端口使用相类似(读引脚时先写入读引脚时先写入1 1)。)。写数据读端口MOVP1,#0FFHJNBP1.1,$CLRP1.02.4.2P1口内部结构口内部结构2.4.3P2口内部结构口内部结构说明:说明:1、P2可以作为通用的可以作为通用的I/O,也可以作为高也可以作为高8位地址输位地址输出出。2、当控制信号为、当控制信号为1时时P2口输出地址信息,口输出地址信息,此时单片机完成外部的取此时单片机完成外部的取指操作或对外部数据存储指
21、操作或对外部数据存储器器16位地址的读写操作。位地址的读写操作。3、当、当P2口作为普通口作为普通I/O口口使用时用法和使用时用法和P1口类似。口类似。2.4.4P3口内部结构口内部结构说明:说明:1、做普通端口使用时,第、做普通端口使用时,第二功能应为二功能应为“1”。2、使用第二功能时,输出、使用第二功能时,输出端口锁存器应为端口锁存器应为“1”。3、第二功能(、第二功能()P3.0 TXD P3.4 T0 P3.1 RXD P3.5 T1 P3.2 INT0 P3.6 WR P3.3 INT1 P3.7 RD1输出输出I/O口口1读读I/O口口1 12.5.2 时序定时单位时序定时单位1
22、、振荡周期:振荡周期:也称为节拍(用也称为节拍(用P表示),表示),Tosc=1/fosc2、状态周期、状态周期:用用S表示,是振荡周期的表示,是振荡周期的2倍,分为倍,分为P1和和P2两个两个节拍。节拍。3、机器周期:、机器周期:CPU完成一个基本操作所需要的时间。完成一个基本操作所需要的时间。执行一条指令分为几个机器周期。每个机器周期完成一个基本执行一条指令分为几个机器周期。每个机器周期完成一个基本操作。操作。MCS-51单片机每单片机每12个振荡周期为一个机器周期。个振荡周期为一个机器周期。4、执令周期:执令周期:即从取指到执行完一条指令所需时间。即从取指到执行完一条指令所需时间。CPU
23、执行一条指令的各个微操作所对应时间顺序称为执行一条指令的各个微操作所对应时间顺序称为CPU时序时序。S1S2S3S4S5S6S1S2P1P2P1 P2P1P2 P1P2P1 P2P1P2P1P2P1P2fosc一个状态周期一个状态周期一个机器周期一个机器周期T=12*(1/fosc)X28031对片外对片外RAM和和ROM的连接的连接(1)对片外)对片外ROM的读操作的读操作MOVCA,A+DPTR(2)对片外)对片外RAM的写操作的写操作MOVXDPTR,A第一阶段第一阶段是根据程序计数器是根据程序计数器PC到片外到片外ROM中取指令码;中取指令码;第二阶段第二阶段是对累加器是对累加器A和和
24、DPTR中中16位地址进行运算,并把运算位地址进行运算,并把运算得到的和的地址去片外得到的和的地址去片外ROM取出所需要常数送到累加器取出所需要常数送到累加器A。读片外读片外ROM的指令时序的指令时序:MOVC A,A+DPTR读片外读片外RAM的指令时序的指令时序:MOVX A,DPTR第一阶段第一阶段是根据是根据PC中地址读片外中地址读片外ROM中指令码中指令码E0H;第二阶段第二阶段是根据是根据DPTR中地址读片外中地址读片外RAM,并把读出的数,并把读出的数X送往累加器送往累加器A。在读片外。在读片外RAM时,时,PSEN被封锁为高电平,被封锁为高电平,RD有效,用作片外有效,用作片外
25、RAM的选通信号。的选通信号。2.6 MCS-51 单片机工作方式单片机工作方式2.6.1 复位电路与复位方式复位电路与复位方式1、复位方式、复位方式在在RST/VPD端持续给出端持续给出2个机器周期的高电平个机器周期的高电平就可以完成复就可以完成复位操作(一般复位正脉冲宽度位操作(一般复位正脉冲宽度大于大于10ms)。)。使单片机内各寄存器的值变为初始状态的操作称为复位。使单片机内各寄存器的值变为初始状态的操作称为复位。00HTCON0000HPC00HTMOD00000BPCON0000000BIE不定不定SBUF 000000BIP00HSCON0FFHP0P300HTH10000HDP
26、TR00HTL107HSP00HTH000HPSW00HTL000HACC复位状态复位状态寄存器寄存器复位状态复位状态寄存器寄存器1、8051的引脚的引脚RST是是_(IN脚还是脚还是OUT脚脚),当其端出现,当其端出现_电平时电平时,8051进入复位状态;复位后进入复位状态;复位后PC=_。8051一直维持这个值,直一直维持这个值,直到到RST脚收到脚收到_电平电平,8051脱离复位状态脱离复位状态,进入程序运行状态。进入程序运行状态。2、MCS51单片机的单片机的CPU每取一个指令字节,立即使每取一个指令字节,立即使()A.堆栈指针堆栈指针SP自动加自动加1B.数据指针数据指针DPTR自动
27、加自动加1C.程序计数器程序计数器PC自动加自动加1D.累加器累加器A自动加自动加13MCS51单片机的主程序应该从哪个单元开始存放?为什么?单片机的主程序应该从哪个单元开始存放?为什么?4、单片机上电后或复位后,工作寄存器、单片机上电后或复位后,工作寄存器R2是在(是在()A、0区区01H单元单元B、0区区02H单元单元C、0区区0BH单元单元D、SFR58051复位后,复位后,PC与与SP的值为(的值为()A、0000H,00HB、0000H,07HC、0003H,07HD、0800H,00H知识总结知识总结1 1、掌握、掌握寻址方式寻址方式2 2、掌握指令的含义和使用方法,做、掌握指令的
28、含义和使用方法,做到程序注释清晰准确。到程序注释清晰准确。第三章第三章MCS-51单片机指令系统单片机指令系统3.1.3寻址方式及寻址空间寻址方式及寻址空间寻址方式寻址方式即寻找操作数存放单元的即寻找操作数存放单元的地址地址的方式,共的方式,共7种方式。种方式。1、立即寻址方式、立即寻址方式所谓立即寻址,就是指令中直接给出参与操作的数所谓立即寻址,就是指令中直接给出参与操作的数据本身,即操作数出现在指令中,用据本身,即操作数出现在指令中,用“#”作前缀。作前缀。MOV A,#40HFFHROM74H40HSFRFFHAFAHRAMFFH06HSFRFFHA06H32H2、直接寻址方式、直接寻址
29、方式所谓直接寻址,就是在指令中直接给出参与操作所谓直接寻址,就是在指令中直接给出参与操作的数据所在内部的数据所在内部RAM单元的地址。单元的地址。MOV A,32H直接寻址方式中可以访问直接寻址方式中可以访问:(1)内部数据存储器的低)内部数据存储器的低128个字节单元(个字节单元(00H7FH)。)。(2)特殊功能寄存器,)特殊功能寄存器,特殊功能寄存器只能用直接特殊功能寄存器只能用直接寻址方式进行访问。寻址方式进行访问。3、寄存器寻址方式、寄存器寻址方式所谓寄存器寻址,就是操作数存放在指定的所谓寄存器寻址,就是操作数存放在指定的寄存器中。寄存器中。MOV A,R7FAHRAMFFH22HS
30、FRFFHA40HR740H规定:按字节访问特殊功能寄存器只能用直接寻址方式。规定:按字节访问特殊功能寄存器只能用直接寻址方式。MOV A,P0等同于等同于 MOV A,80H寄存器寻址方式的寻址范围包括:寄存器寻址方式的寻址范围包括:通用工作寄存器通用工作寄存器有有4组共组共32个通用工作寄个通用工作寄存器,存器,R0R7。部分专用寄存器部分专用寄存器累加器累加器A、B寄存器、寄存器、DPTR寄存器。寄存器。4、寄存器间接寻址方式、寄存器间接寻址方式指令中寄存器的内容作为操作数存放的地指令中寄存器的内容作为操作数存放的地址,在工作上间接寻址寄存器前用址,在工作上间接寻址寄存器前用“”表表示前
31、缀。示前缀。MOV A,R0FAHRAMFFH22HSFRFFHA40H40H22HR0寻址范围:寻址范围:(1)访问内部)访问内部RAM低低128个单元,其通用形式为个单元,其通用形式为Ri(2)对片外数据存储器的)对片外数据存储器的64K字节的间接寻址,字节的间接寻址,例如:例如:MOVXA,DPTR(3)片外数据存储器的低)片外数据存储器的低256字节字节例如:例如:MOVXA,Ri5、基址变址寄存器间接寻址方式、基址变址寄存器间接寻址方式 基地址寄存器基地址寄存器 DPTR 或或 PC 变址寄存器变址寄存器 A 该寻址方式常用于访问该寻址方式常用于访问程序存储器程序存储器,查表。,查表
32、。如如 MOVC A,A+DPTR56H ROM DPTR+=2042H 2030H 12H A 地址 56H56H说明:说明:(1)本寻址方式是专门针对)本寻址方式是专门针对程序存储器的寻址方式,寻程序存储器的寻址方式,寻址范围可达到址范围可达到64KB。(2)本寻址方式的指令只有本寻址方式的指令只有3条:条:MOVC A,A+DPTR MOVC A,A+PC JMP A+DPTR6、相对寻址、相对寻址 把指令中给定的把指令中给定的相对偏移量相对偏移量与本指令所在单元地址与本指令所在单元地址(PC内容)相加得到真正有效的操作数所存放的地址。内容)相加得到真正有效的操作数所存放的地址。例如(例
33、如(rel75H)2000H:SJMP rel PC=2000H 2 +75 PC=2077H 2077H 2002H 2001H 2000H 80H 75H ROM 7位寻址方式位寻址方式 MCS-51有位处理功能,可以对数据位进行操作,例如:有位处理功能,可以对数据位进行操作,例如:MOV C,40H 是把位是把位40H的值送到进位标志位的值送到进位标志位C。目标地址目标地址PC当前值当前值指令字节数相对偏移量指令字节数相对偏移量relrel是是8位带符号数,正数则程位带符号数,正数则程序向下,负数向上转移,在程序向下,负数向上转移,在程序中一般用标号代替。序中一般用标号代替。128B12
34、7BRn工作寄存器工作寄存器R0R7Ri间接寻址寄存器间接寻址寄存器R0、R1direct直接地址,包括内部直接地址,包括内部128BRAM单元地址、单元地址、21个个SFR地址。地址。#data8位常数;位常数;#data1616位常数位常数addr1111位目的地址;位目的地址;addr1616位目的地址位目的地址rel8位带符号的偏移地址位带符号的偏移地址DPTR16位外部数据指针寄存器位外部数据指针寄存器bit可直接位寻址的位;可直接位寻址的位;/bit指定位求反指定位求反(x)x中的内容中的内容(x)x中的地址中的内容中的地址中的内容$当前指令存放的地址当前指令存放的地址 3.1.5
35、指令系统标识符指令系统标识符下列各条指令其源操作数的寻址方式是什么?下列各条指令其源操作数的寻址方式是什么?(1)MOV A,#48H(2)ADD A,60H(3)ANL A,R0(4)XCHD A,R0(5)MOVX A,DPTR(6)MOV A,R0(7)MOVC A,A+DPTR(8)PUSH DPH3.2 数据传送类指令数据传送类指令使用最频繁的一类指令,通用格式:使用最频繁的一类指令,通用格式:MOV ,属属“复制复制”性质,而不是性质,而不是“剪切剪切”此类指令此类指令不影响标志位不影响标志位,Cy、Ac和和OV,只影响奇偶标志位,只影响奇偶标志位P。1以累加器为目的操作数的指令以
36、累加器为目的操作数的指令 MOV A,Rn ;A(Rn),n=07 MOV A,Ri ;A (Ri),i=0,1 MOV A,direct ;A (direct)MOV A,#data ;A#data3.2.1 内部内部RAM单元之间的数据传送单元之间的数据传送27H38H33HROME6HFFHFFHFFHASFRFFHR038H27HRAM MOV A,R0 (E6H )27H40H33HROME5H40HFFHSFRFFHARAMFFHR540H27H MOV A,40H;(E5H 40H)例例3-1:假设(:假设(R0)30H,内,内RAM中中(30H)=0F7H,(,(68H)=66
37、H,给出执,给出执行每条指令后行每条指令后A的内容。的内容。MOVA,R0MOVA,R0MOVA,68HMOVA,#18;(A)=30H;(A)=0F7H;(A)=66H;(A)=182.以以Rn为目的操作数的指令为目的操作数的指令MOVRn,A;Rn(A),n=07MOVRn,direct;Rn(direct),n=07MOVRn,#data;Rn#data,n=07功能:是把源操作数的内容送入当前一组工作寄存器区的功能:是把源操作数的内容送入当前一组工作寄存器区的R0R7中的某一个寄存器。中的某一个寄存器。例例3-2:假设(:假设(A)2FH,内,内RAM(36H)0E6H,给出执,给出执
38、行每条指令后的行每条指令后的Rn的内容。的内容。MOVR1,AMOVR7,36HMOVR4,#96H3.以寄存器间接地址为目的操作数的指令以寄存器间接地址为目的操作数的指令MOVRi,A;(Ri)(A)MOVRi,direct;(Ri)(direct)MOVRi,#data;(Ri)#data功能:把源操作数所指定的数据送入功能:把源操作数所指定的数据送入R0或或R1所指向的内所指向的内RAM单元。单元。;(R1)=2FH;(R7)=0E6H;(R4)=96H例例3-3:假设:假设(A)2FH,内内RAM(36H)0E6H,外外RAM(36H)78H,(R0)30H,(R1)32H,给出执行每
39、条指令后的结果。给出执行每条指令后的结果。MOVR1,AMOVR1,36HMOVR0,#564.以直接地址以直接地址direct为目的操作数的指令为目的操作数的指令MOVdirect,A;direct(A)MOVdirect,Rn;direct(Rn),n=07MOVdirect1,direct2;MOVdirect,Ri;direct(Ri)MOVdirect,#data;direct#data功能:功能:把源操作数送入直接地址指出的存储单元。把源操作数送入直接地址指出的存储单元。direct指的指的是内部是内部RAM或或SFR的地址。的地址。;(32H)=2FH;(32H)=0E6H;(3
40、0H)=38H例例3-4:用用3种方法将内种方法将内RAM中中30H单元的内容传送到单元的内容传送到40H单元。单元。MOV 40H,30H MOV R0,#30H MOV 40H,R0 MOV R0,#40H MOV R0,30H5.以以DPTR为目的操作数的传送指令为目的操作数的传送指令MOVDPTR,#data16;DPTR#data16 唯一的唯一的16位数据的传送指令位数据的传送指令,立即数的高立即数的高8位送入位送入DPH,立即,立即数的低数的低8位送入位送入DPL。40H33HROM87H45HFFH33HROMC0H40HFFHSFRFFHSPRAMFFH40H50H51H3.
41、2.2 堆栈操作指令堆栈操作指令1)PUSHdirect2)POPdirect1、在、在MCS-51单片机的内部单片机的内部RAM中中,可以设定一个先进后出的区域可以设定一个先进后出的区域,称其为称其为堆栈堆栈。2、在特殊功能寄存器中有一个堆、在特殊功能寄存器中有一个堆栈指针栈指针SP,它指出栈顶的位置。它指出栈顶的位置。3、执行操作:执行操作:SP(SP)1 (SP)direct例例PUSH40H(C0H)51H50H33HFFH40HROM87H45HFFHFFHROMD0H40HFFHSFRFFHSPRAM40H50H51H出栈指令的功能是出栈指令的功能是:将将SP所指出的所指出的内部内
42、部RAM单元的内容送入由直接单元的内容送入由直接地址所指出的字节单元地址所指出的字节单元,接着将堆接着将堆栈指针栈指针SP的内容减的内容减1。执行操作:执行操作:direct(SP)SP(SP)1例例POP40H(D0H)51H50H3.2.2 堆栈操作指令堆栈操作指令1)PUSHdirect2)POPdirect3.2.3 数据交换指令数据交换指令1.字节交换指令字节交换指令 XCH A,Rn (A)(Rn)XCH A,direct (A)(direct)XCH A,Ri (A)(Ri)2.半字节交换指令半字节交换指令 XCHD A,Ri (A)03 (Ri)033.累加器半字节交换指令累加
43、器半字节交换指令 SWAP A (A)03 (A)47例例3-6:假设:假设(A)=12H,(R0)=34H,内,内RAM(34H)=56H,分析每条指令执行结果。分析每条指令执行结果。XCH A,R0 XCHD A,R0 SWAP A;(A)=56H;(A)=16H;(A)=21H51H33HFFH40HROM87H45HFFHFFHROMCFHFFHFFHSFRFFHARAMR750H51H51H33H XCH A,R7(CFH)F2HCDHFFH40HROM87H45HFFHFFHROMC5H32HFFHSFRFFHARAM32H50H51HCDHF2H XCH A,32H(C5H 32
44、H)B6HCDH44H40HROM87H45HFFHROMC7HFFHFFHSFRFFHARAMR144H45HCDHB6H XCH A,R1(C7H)3.2.4累加器累加器A与外部数据存储器传送指令与外部数据存储器传送指令ROM93HFFH01HSFRDPH20HDPL33HA89HFFH2001H89H外RAM1、读外部、读外部RAM或外部或外部I/O口的指令口的指令MOVXA,DPTR;A(DPTR),读外部读外部RAM/IOMOVXA,Ri;A(Ri),读外部读外部RAM/IO2、写外部、写外部RAM或外部或外部I/O口的指令口的指令MOVXDPTR,A;(DPTR)(A),写外部写外
45、部RAM/IOMOVXRi,A;(Ri)(A),写外部写外部RAM/IO注意:注意:RD或或WR信号有效。信号有效。(1)采用)采用DPTR间接寻址,高间接寻址,高8位地址(位地址(DPH)由)由P2口输出,口输出,低低8位地址(位地址(DPL)由)由P0口输出。口输出。(2)采用)采用Ri(i=0,1)间接寻址,可寻址片外)间接寻址,可寻址片外256个单元的数据个单元的数据存储器。存储器。Ri内容由内容由P0口输出。口输出。3.2.5 累加器累加器A与与ROM的数据传送指令(查表指令)的数据传送指令(查表指令)汇编指令格式汇编指令格式 机器指令格式机器指令格式 操操 作作MOVC A,A+D
46、PTR 93H PC (PC)+1,A (A)+(DPTR)MOVC A,A+PC 83H PC (PC)+1,A (A)+(PC)注意:注意:前一条指令只能前一条指令只能查找指令所在位置查找指令所在位置256B范围内的代码或常数,范围内的代码或常数,后一条指令查表范围可后一条指令查表范围可达整个程序存储器的达整个程序存储器的64KB空间。空间。例例3.7 在程序存储器中有一平方表,从在程序存储器中有一平方表,从2000H单元开始存放,单元开始存放,如图所示,试通过查表指令查找出如图所示,试通过查表指令查找出6的平方。的平方。812009H642008H492007H362006H252005
47、H162004H92003H42002H12001H02000H解:采用解:采用DPTR作为基址寄存器的查表程序比较简作为基址寄存器的查表程序比较简单,查表范围大,也容易理解。只要预先使用一条单,查表范围大,也容易理解。只要预先使用一条16位数据传送指令,把表的首地址位数据传送指令,把表的首地址2000H送入送入DPTR,然后进行查表就可以了。,然后进行查表就可以了。相应的程序如下:相应的程序如下:MOV A,#6 ;设定备查的表项设定备查的表项MOV DPTR,#2000H ;设置设置DPTR为表始址为表始址MOVC A,A+DPTR ;将将A的平方值查表后送的平方值查表后送A 如果需要查找
48、其他数的平方,只需要将累加器如果需要查找其他数的平方,只需要将累加器A的内容的内容(变址变址)改一下即可。改一下即可。上述指令不影响任何标志位,但上述指令不影响任何标志位,但PSW的的P位除外。位除外。注意:注意:MOVRn,RnMOVRi,RiMOVRn,RiMOV#data,A等等等指令是非法指令。等指令是非法指令。哇!好容易出错啊!练习:写出完成下列功能的程序段练习:写出完成下列功能的程序段(1)将)将R0的内容送的内容送R6中中MOVA,R0MOVR6,A(2)将片内)将片内RAM30H单元的内容送片外单元的内容送片外60H单元中单元中MOVA,30HMOVR0,#60HMOVXR0,
49、A(3)将片处)将片处RAM1000H单元的内容送片内单元的内容送片内20H单元中单元中MOVDPTR,#1000HMOVXA,DPTRMOV20H,A(4)将)将ROM2000H单元的内容送片内单元的内容送片内RAM的的30H单元中单元中MOVA,#0MOVDPTR,#2000HMOVCA,A+DPTRMOV30H,A考试例题已知(A)=83H,(R0)=17H,(17H)=34H,试写出80C51执行下列程序段后,A的内容(要求写出分析过程)。ANLA,#17HORL17H,AXOLA,R0CPLA第第4章章 汇编语言程序设计基础汇编语言程序设计基础能够根据任务要求,灵活使用顺序结构、能够
50、根据任务要求,灵活使用顺序结构、分支结构、循环结构、子程序实现工作目分支结构、循环结构、子程序实现工作目标。标。语句语句3语句语句2顺序结构顺序结构入口入口语句语句1出口出口分支结构分支结构入口入口条件满足否?条件满足否?分支分支1出口出口YN 分支分支2循环结构循环结构入口入口 处理处理 修改条件修改条件条件满足否?条件满足否?Y出口出口N4.2.4子程序设计子程序设计对那些具有独立功能的、或通用的、或需要多次重复使用的程对那些具有独立功能的、或通用的、或需要多次重复使用的程序段,常编写成序段,常编写成子程序子程序。在子程序调用过程中需要解决两个问题:在子程序调用过程中需要解决两个问题:1