1、2.1 80C51系列概述系列概述2.1.1 MCS-512.1.1 MCS-51系列系列 8051/8751/80318051/8751/8031 8052/8752/8032 8052/8752/8032 80 80C C51/8751/87C C51/8051/80C C3131 80 80C C52/8752/87C C52/8052/80C C3232等等 MCS-51MCS-51是是IntelIntel公司生产的一个单片机系公司生产的一个单片机系列名称。这一系列的单片机有多种,如:列名称。这一系列的单片机有多种,如:2022-10-261 生产工艺有两种:生产工艺有两种:8787C
2、 C5151。一是一是HMOSHMOS工艺(高密度短沟道工艺(高密度短沟道MOSMOS工艺)。工艺)。二是二是C CHMOSHMOS工艺(互补金属氧化物的工艺(互补金属氧化物的HMOSHMOS工艺)。工艺)。2022-10-262 功能上,有基本型和增强型功能上,有基本型和增强型2 2大类:大类:增强型增强型:8052/8752/80328052/8752/803280C52/87C52/80C3280C52/87C52/80C32基本型基本型:8051/8751/80318051/8751/803180C51/87C51/80C3180C51/87C51/80C312022-10-263 增
3、强型与基本型的几点不同:增强型与基本型的几点不同:片内片内ROMROM:从:从4K4K增加到增加到8K8K 片内片内RAMRAM:从:从128128增加到增加到256256 定时定时/计数器:从计数器:从2 2个增加到个增加到3 3个个 中断源:从中断源:从5 5个增加到个增加到6 6个。个。2022-10-264 在片内程序存储器配置上,有在片内程序存储器配置上,有3 3种形式,种形式,即即掩膜掩膜ROMROM、EPROMEPROM和和ROMLessROMLess、FlashFlash如:如:80C80C5 51 1有有4K4K字节的字节的ROMROM2022-10-265无无ROM型,要在
4、片外扩展程序存储器;型,要在片外扩展程序存储器;掩膜掩膜ROM型,程序由芯片生产厂写入;型,程序由芯片生产厂写入;EPROM型,程序通过写入装置写入;型,程序通过写入装置写入;FlashROM型,程序可电写入(常用)。型,程序可电写入(常用)。片内片内ROMROM的配置形式:的配置形式:。2022-10-2662.2 80C51的的基本结构与应用模式基本结构与应用模式2.2.1 80C512.2.1 80C51的基本结构的基本结构2022-10-2672.3.2 80C512.3.2 80C51的引脚封装的引脚封装2022-10-2682.4.1 CPU2.4.1 CPU的功能单元的功能单元
5、运算器运算器 累加器累加器ACC ACC 寄存器寄存器B B PSW PSW 控制器控制器 程序计数器程序计数器PC PC 指令寄存器指令寄存器IR IR 定时与控制逻辑定时与控制逻辑 其他寄存器其他寄存器 程序计数器程序计数器PC PC 数据指针数据指针DPTRDPTR 堆栈指针堆栈指针SPSP 工作寄存器工作寄存器R0R0R7R72022-10-269寄存器及其存储器映射如下图:寄存器及其存储器映射如下图:2022-10-26102.4.2 80C512.4.2 80C51的时钟与时序的时钟与时序 时钟产生方式时钟产生方式内部时钟方式内部时钟方式 外部时钟方式外部时钟方式 2022-10-
6、2611 80C5180C51的时钟信号的时钟信号2022-10-2612 80C51 80C51的典型时序的典型时序 单字节指令单字节指令 双字节指令双字节指令 单周期指令单周期指令2022-10-2613双周期指令双周期指令2022-10-2614访问外部访问外部RAM的双周期指令时序的双周期指令时序 2022-10-26152.4.3 80C512.4.3 80C51单片机的复位单片机的复位复位复位可使单片机可使单片机或或系统部件处于确定的系统部件处于确定的初始状态初始状态。复位电路复位电路 上电复位电路上电复位电路 按键与上电复位按键与上电复位 2022-10-2616 单片机复位后的
7、状态单片机复位后的状态 PC PC=00000000H H RAMRAM:随机值随机值(运行中复位不改变(运行中复位不改变RAMRAM内容内容 )SFRSFR:P0P0P3=P3=FFFFH H SP=SP=0707H H IP IP、IEIE和和PCONPCON:有效位为:有效位为0 0 PSW=PSW=0000H H2022-10-26172.5 80C51的存储器组织的存储器组织80C5180C51存储器可以分成两大类:存储器可以分成两大类:RAMRAM,CPUCPU在运行时能随时进行数据的写入和读出,在运行时能随时进行数据的写入和读出,但在关闭电源时,其所存储的信息将丢失。但在关闭电源
8、时,其所存储的信息将丢失。用来存用来存放暂时性的输入输出数据、运算的放暂时性的输入输出数据、运算的中间结果中间结果或用作或用作堆栈堆栈。ROMROM,写入信息后不易改写的存储器。断电后,写入信息后不易改写的存储器。断电后,其中的信息保留不变。其中的信息保留不变。用来存放用来存放固定的程序或数据固定的程序或数据,如系统监控程序、常数表格等。如系统监控程序、常数表格等。2022-10-26182.5.1 80C512.5.1 80C51单片机的程序存储器配置单片机的程序存储器配置片片内内与片与片外外程序存储器的选择程序存储器的选择 EAEA引脚接高电平引脚接高电平-片内片内2022-10-2619
9、v1.EA引脚接高电平引脚接高电平v当当EA引脚接高电平时,对于基本型单片机,首先引脚接高电平时,对于基本型单片机,首先在片内程序存储器中取指令,当在片内程序存储器中取指令,当PC的内容超过的内容超过FFFH时系统会自动转到片外程序存储器中取指时系统会自动转到片外程序存储器中取指令。外部程序存储器的地址从令。外部程序存储器的地址从1000H开始编址,开始编址,如图如图2.13所示。所示。v对于增强型单片机,首先在片内程序存储器中取对于增强型单片机,首先在片内程序存储器中取指令,当指令,当PC的内容超过的内容超过1FFFH时系统才转到片时系统才转到片外程序存储器中取指令。外程序存储器中取指令。2
10、022-10-2620 EAEA引脚接地引脚接地-片外片外2022-10-2621v2.EA引脚接低电平引脚接低电平v当当EA引脚接低电平时,单片机自动转引脚接低电平时,单片机自动转到片外程序存储器中取指令(无论片到片外程序存储器中取指令(无论片内是否有程序存储器)。外部程序存内是否有程序存储器)。外部程序存储器的地址从储器的地址从0000H开始编址,如图开始编址,如图2.14所示。所示。2022-10-2622 程序存储器低端的几个特殊单元程序存储器低端的几个特殊单元 2022-10-26232.5.2 80C512.5.2 80C51单片机数据存储器配置单片机数据存储器配置片片内、内、片片
11、外外数据存储器概况数据存储器概况 片内片内RAMRAM及及SFR SFR 片外片外RAM RAM 2022-10-2624片内片内RAMRAM详图详图 2022-10-2625工作寄存器区(含寄存器组工作寄存器区(含寄存器组0 0 3 3)寄存器组寄存器组0 0:地址:地址00H00H07H07H 寄存器组寄存器组1 1:地址:地址08H08H0FH0FH 寄存器组寄存器组2 2:地址:地址10H10H17H17H 寄存器组寄存器组3 3:地址:地址18H18H1FH1FH当前工作寄存器组当前工作寄存器组选择选择 PSWPSW寄存器中:寄存器中:2022-10-2626位寻址区位寻址区 字节字
12、节地址地址位地址位地址D7D6D5D4D3D2D1D020H07H06H05H04H03H02H01H00H21H0FH0EH0DH0CH0BH0AH09H08H22H17H16H15H14H13H12H11H10H23H1FH1EH1DH1CH1BH1AH19H18H24H27H26H25H24H23H22H21H20H25H2FH2EH2DH2CH2BH2AH29H28H26H37H36H35H34H33H32H31H30H27H3FH3EH3DH3CH3BH3AH39H38H28H47H46H45H44H43H42H41H40H29H4FH4EH4DH4CH4BH4AH49H48H2AH
13、57H56H55H54H53H52H51H50H2BH5FH5EH5DH5CH5BH5AH59H58H2CH67H66H65H64H63H62H61H60H2DH6FH6EH6DH6CH6BH6AH69H68H2EH77H76H75H74H73H72H71H70H2FH7FH7EH7DH7CH7BH7AH79H78H2022-10-2627通用通用RAMRAM区区 30H30H7FH7FH,共,共8080字节字节 数据缓冲数据缓冲 堆栈堆栈 SPSP指示栈顶指示栈顶 复位时复位时SPSP=0707H H 系统初始化通常系统初始化通常重新设置重新设置2022-10-26282.5.3 80C51
14、2.5.3 80C51单片机的特殊功能寄存器(单片机的特殊功能寄存器(SFRSFR)基本型单片机有基本型单片机有2121个个SFRSFR离散地分布在离散地分布在80H80HFFHFFH空间。空间。与运算器相关与运算器相关3 3个个 ACCACC B B PSWPSW与定时与定时/计数器相关计数器相关6 6个个 TH0,TL0TH0,TL0 TH1,TL1TH1,TL1 TMODTMOD TCON TCON指针类指针类3 3个个 SPSP DPH,DPLDPH,DPL与口相关与口相关7 7个个 P0,P1,P2,P3P0,P1,P2,P3 SBUFSBUF SCON SCON PCONPCON与
15、中断相关与中断相关2 2个个 IEIE IPIP2022-10-26292.6 80C51的并行口结构与操作的并行口结构与操作P0P0口结构口结构 P0P0作通用作通用I/OI/O口口(当(当EA=1EA=1或或“MOV”MOV”传送时传送时C=0C=0)输输出出时时2.6.1 P02.6.1 P0、P2P2口的结构口的结构2022-10-2630P2P2口结构口结构 P2P2作通用作通用I/OI/O口口(未扩片外存储器,或虽扩(未扩片外存储器,或虽扩RAMRAM但采用但采用“MOVX MOVX RiRi”传送时传送时C=0C=0)P2P2作通用作通用I/OI/O时为:时为:准双向口准双向口!
16、P2P2作地作地址总线高址总线高8 8位位(C=1C=1)2022-10-2631P1P1口结构口结构 P1P1仅能为通用的仅能为通用的准双向口准双向口!2.6.2 P12.6.2 P1、P3P3口的结构口的结构2022-10-2632P3P3口结构口结构 第一功能:第一功能:通用通用I/OI/O口(对口寻址时)口(对口寻址时)2022-10-2633 第二功能第二功能(不对口寻址时)(不对口寻址时)P3.0 P3.0:RXDRXD(串行口输入)(串行口输入)P3.1 P3.1:TXDTXD(串行口输出)(串行口输出)P3.2 P3.2:INT0INT0(外部中断(外部中断0 0输入)输入)P
17、3.3 P3.3:INT1INT1(外部中断(外部中断1 1输入)输入)P3.4 P3.4:T0T0(定时器(定时器0 0的外部输入)的外部输入)P3.5 P3.5:T1T1(定时器(定时器1 1的外部输入)的外部输入)P3.6 P3.6:WRWR(片外数据存储器(片外数据存储器“写写”选通控制输出)选通控制输出)P3.7 P3.7:RDRD(片外数据存储器(片外数据存储器“读读”选通控制输出)选通控制输出)2022-10-26342.6.3 2.6.3 并行口驱动简单外设并行口驱动简单外设 并行口的负载能力(并行口的负载能力(AT89S52AT89S52)每根口线最大可吸收每根口线最大可吸收
18、10mA10mA的(灌)电流的(灌)电流 P0P0口吸收电流的总和不能超过口吸收电流的总和不能超过26mA26mA P1P1、P2P2和和P3P3每个口吸收电流的总和限制在每个口吸收电流的总和限制在15mA15mA 4 4个口所有口线的吸收电流总和限制在个口所有口线的吸收电流总和限制在71mA71mA 2022-10-2635 驱动简单的输出设备驱动简单的输出设备 驱动驱动LED(LED(发光二极管)发光二极管)LEDLED典型工作点:典型工作点:1.75V1.75V,10mA10mA。单个单个LEDLED驱动特性如下图:驱动特性如下图:2022-10-2636多个多个LEDLED驱动如下图:
19、驱动如下图:并口直接驱动并口直接驱动 经缓冲器驱动经缓冲器驱动 (亮度不理想)(亮度不理想)(245(245:单根线:单根线25mA,25mA,总和总和75mA)75mA)2022-10-2637 驱动驱动LEDLED数码管数码管公共电阻限流公共电阻限流 各路分别限流各路分别限流2022-10-2638 驱动蜂鸣器驱动蜂鸣器有源有源蜂鸣器:接额定电压就可连续发声蜂鸣器:接额定电压就可连续发声 无源无源蜂鸣器:接入变频方波,可得到不同音调的声音蜂鸣器:接入变频方波,可得到不同音调的声音 两种蜂鸣器驱动电路相同,仅程序不同两种蜂鸣器驱动电路相同,仅程序不同 2022-10-2639 驱动简单的输入
20、设备驱动简单的输入设备 简单开关及输入接口简单开关及输入接口2022-10-2640 开关闭合与断开时的抖动及去抖电路开关闭合与断开时的抖动及去抖电路 按键较少时:去抖电路按键较少时:去抖电路 按键较多时:软件延时按键较多时:软件延时,通常为通常为10ms10ms2022-10-26413.1 指令格式及常用符号指令格式及常用符号3.1.1 3.1.1 机器指令的字节编码形式机器指令的字节编码形式 8 8位编码仅为操作码位编码仅为操作码 单字节指令(单字节指令(4949条)条)机器指令机器指令:计算机能直接识别和执行的指令。:计算机能直接识别和执行的指令。位号位号7 6 5 4 3 2 1 0
21、字节字节opcode如:如:INC A INC A 编码为:编码为:0 0 0 0 0 1 0 0即:即:04H04H 8 8位编码含操作码和寄存器编码位编码含操作码和寄存器编码位号位号7 6 5 4 3 2 1 0 字节字节opcoder r r如:如:MOV AMOV A,R0 R0 编码为编码为:1 1 1 0 1 0 0 0即:即:E8HE8H2022-10-2642 双字节指令(双字节指令(4545条)条)位号位号7 6 5 4 3 2 1 0字节字节opcodedata或或direct 三字节指令(三字节指令(1717条)条)位号位号7 6 5 4 3 2 1 0字节字节opcod
22、edata或或directdata或或direct如:如:MOV AMOV A,#50H#50H 编码为编码为:0 1 1 1 0 1 0 00 1 0 1 0 0 0 0即:即:74H74H 50H 50H如:如:MOV 20HMOV 20H,#50H#50H 编码为编码为:0 1 1 1 0 1 0 10 1 0 0 0 0 0 00 1 0 1 0 0 0 0即:即:75H75H 20H 20H 50H 50H2022-10-2643 书写格式书写格式注意:注意:操作助记符不能缺少操作助记符不能缺少操作数个数可为:操作数个数可为:1 1、2 2、3 3个个2 2个操作数的指令,目的操作数
23、在左边个操作数的指令,目的操作数在左边一般格式一般格式操作助记符操作助记符 目的操作数目的操作数,源操作数,源操作数;注释;注释 3.1.2 3.1.2 符号指令的书写格式符号指令的书写格式2022-10-2644 描述符号描述符号RnRn(n=0n=07 7)-当前工作寄存器组中的寄存器当前工作寄存器组中的寄存器R0R0R7R7之一之一RiRi(i=0,1i=0,1)-当前工作寄存器组中的寄存器当前工作寄存器组中的寄存器R0R0或或R1R1-间址寄存器前缀间址寄存器前缀#data-8#data-8位立即数位立即数/#data16-16#data16-16位立即数位立即数direct-dire
24、ct-片内低片内低128128个个RAMRAM单元地址及单元地址及SFRSFR地址地址addr11-11addr11-11位目的地址位目的地址addr16-16addr16-16位目的地址位目的地址rel-8rel-8位地址偏移量,范围:位地址偏移量,范围:128128127127bit-bit-片内片内RAMRAM位地址、位地址、SFRSFR的位地址的位地址()-表示表示 地址单元或寄存器中的内容地址单元或寄存器中的内容/-/-位操作数的取反操作前缀位操作数的取反操作前缀2022-10-264580C5180C51单片机有单片机有7 7种寻址方式种寻址方式v1 1 寄存器寻址寄存器寻址 MO
25、V A,R0后v2 2 直接寻址直接寻址 MOV A,50Hv3 3 寄存器间接寻址寄存器间接寻址 MOV A,R0v4 4 立即寻址立即寻址 MOV A,#50H v5 5 变址寻址变址寻址 MOV A,A+DPTRv6 6 相对寻址相对寻址 JC relv7 7 位寻址位寻址 MOV C,00H2022-10-26463.2.3 3.2.3 寄存器间接寻址寄存器间接寻址寄存器中的内容是操作数的地址寄存器中的内容是操作数的地址寻址空间:寻址空间:片内片内RAMRAM(RiRi、SPSP)片外片外RAMRAM(RiRi、DPTRDPTR)【例例】若(若(R0)=30H,(30H)=5AH 执行
26、MOV A,R0后,(A)=5AH 片内:片内:MOVMOV片外:片外:MOVXMOVX2022-10-26473.2.4 3.2.4 立即寻址立即寻址操作数在指令编码中操作数在指令编码中寻址空间:寻址空间:ROMROM对于对于MOV DPTRMOV DPTR,#2100H#2100H指令,立即数高指令,立即数高8 8位位“21H”21H”装入装入DPH DPH 【例例】执行执行MOV AMOV A,#50H#50H 结果:(结果:(A A)=50H =50H 2022-10-26483.2.5 3.2.5 变址寻址变址寻址操作数地址:基地址操作数地址:基地址+偏移量偏移量寻址空间:寻址空间:
27、ROMROM变址寻址变址寻址还用于跳转指令,如还用于跳转指令,如JMP A+DPTR JMP A+DPTR 【例例】(A A)0FH 0FH (DPTRDPTR)=2400H=2400H 执行执行MOV A,A+DPTR”MOV A,A+DPTR”后后结果:(结果:(A A)=88H =88H 2022-10-26493.2.6 3.2.6 相对寻址相对寻址用于跳转指令,实现程序分支用于跳转指令,实现程序分支RelRel常用符号地址表示,离源地址不要超过(常用符号地址表示,离源地址不要超过(128128127 127)【例例】若若rel为75H,PSW.7为1,JC rel存于1000H开始的
28、单元。执行JC rel指令后,程序将跳转到1077H单元取指令并执行。2022-10-26503.2.7 3.2.7 位寻址位寻址寻址位数据寻址位数据寻址空间寻址空间片内片内RAMRAM位空间位空间SFRSFR位空间位空间【例例】位地址位地址00H00H内容为内容为1 1,MOV CMOV C,00H00H执行后,位地址执行后,位地址PSW.7PSW.7的内容为的内容为1 1。位寻址方式实位寻址方式实质属于质属于位的直位的直接寻址接寻址。2022-10-26513.3 数据传送类指令(数据传送类指令(29条)条)一般不影响标志寄存器一般不影响标志寄存器PSWPSW的状态。的状态。传送类指令有两
29、大类传送类指令有两大类 一般传送(一般传送(MOVMOV )特殊传送,如:特殊传送,如:MOVC MOVC MOVX MOVX PUSH PUSH、POPPOP XCH XCH、XCHDXCHD SWAP SWAP 2022-10-26523.3.2 3.3.2 特殊传送指令特殊传送指令 以以DPTRDPTR内容为基址内容为基址读读ROMROM中常数表项指令中常数表项指令MOVCMOVCROMROM中可以存放程序中可以存放程序代码代码,还经常存放,还经常存放常数表常数表 MOVC AMOVC A,A+DPTRA+DPTR;A A(A A)+(DPTRDPTR)以以PCPC内容为基址内容为基址M
30、OVC AMOVC A,A+PC A+PC ;A A(A A)+(PCPC)常数表存放约束小,称为常数表存放约束小,称为远远程查表指令。程查表指令。占用占用DPTRDPTR 常数表存放约束大,称为常数表存放约束大,称为近近程查表指令。程查表指令。不占用不占用DPTRDPTR 2022-10-2653 读读片外片外RAMRAM读片外读片外RAMRAM及接口单元数据的指令及接口单元数据的指令MOVXMOVX片外片外RAMRAM中经常存放数据采集与处理的中间数据中经常存放数据采集与处理的中间数据 MOVX AMOVX A,DPTR DPTR;A A(DPTRDPTR)MOVX AMOVX A,RiR
31、i ;A A(RiRi)写写片外片外RAMRAMMOVX DPTRMOVX DPTR,A A;(;(DPTRDPTR)AAMOVX MOVX RiRi,A A ;(;(RiRi)AA注意:用注意:用 RiRi寻址时,寻址时,高高8 8位地址位地址由由P2P2口提供口提供 2022-10-2654 入入栈指令栈指令PUSHPUSH堆栈操作指令堆栈操作指令PUSHPUSH和和POPPOP堆栈堆栈是一片存储区,遵循是一片存储区,遵循“后进先出后进先出”原则,栈顶由原则,栈顶由SPSP指示。指示。80C5180C51的堆栈的堆栈设在设在片内片内RAMRAM低端的低端的128128个单元,向个单元,向上
32、上生长。生长。PUSH direct PUSH direct;SPSP(SPSP)1 1,(,(SPSP)(directdirect)出出栈指令栈指令POPPOPPOP direct POP direct;(;(directdirect)(SPSP),),SP SP(SPSP)1 1 注:堆栈用于子程序调用时注:堆栈用于子程序调用时保护返回地址保护返回地址,或者用于保护,或者用于保护子程序调子程序调用之前的某些重要数据用之前的某些重要数据(即保护现场),还可以用于(即保护现场),还可以用于数据交换数据交换。2022-10-2655 字节字节交换指令交换指令XCHXCH数据交换指令数据交换指令X
33、CHXCH、XCHDXCHD和和SWAPSWAP数据交换属于同时进行的双向传送数据交换属于同时进行的双向传送 )(;)(;)(;,RiA RidirectA direct RnA Rn A XCH【例例3-203-20】若(若(R0)=80H,(A)=20H。执行指令 XCH A,R0 后,(A)=80H,(R0)=20H。2022-10-2656 半字节半字节交换指令交换指令XCHDXCHD【例例3-213-21】若(若(R0R0)30H30H,(,(30H30H)67H67H,(A A)20H20H。执行指令。执行指令 XCHD AXCHD A,R0 R0 指令后,(指令后,(A A)27
34、H27H,(,(30H30H)60H60H。)();()()();(,ACC.0ACC.3ACC.4ACC.7 A SWAPACC.0ACC.30.Ri3.Ri Ri A XCHDXCHDXCHD是是间址间址操作数的低半字节与操作数的低半字节与A A的低半字节互换。的低半字节互换。SWAPSWAP是是累加器累加器的高低的高低4 4位互换位互换【例例3-223-22】若(若(A A)30H30H,执行指令,执行指令SWAP ASWAP A后,(后,(A A)03H 03H。2022-10-26573.4 算数运算类指令(算数运算类指令(24条)条)算数算数运算结果运算结果要要影响影响PSWPSW
35、中标志位中标志位 CYCY为为1 1,无符号数无符号数(字节)加减发生(字节)加减发生进位进位或或借位借位 OV OV为为1 1,有符号数有符号数(字节)加减发生(字节)加减发生溢出溢出错误错误 ACAC为为1 1,十进制数十进制数(BCDBCD码)加法的结果应码)加法的结果应调整调整 P P为为1 1,存于累加器,存于累加器A A中操作结果的中操作结果的“1”1”的个数的个数为为奇数奇数 标志位意义标志位意义标志位与相关指令影响标志位与相关指令影响 指令指令标志标志ADD、ADDC、SUBBDAMULDIV CYCY0 00 0ACACOVOVP P2022-10-26583.4.3 3.4
36、.3 乘法乘法仅有一条乘法指令仅有一条乘法指令 MUL AB MUL AB;A A与与B B相乘相乘 无符号无符号 结果:结果:B B中为积的中为积的高高8 8位位,A A中为积的中为积的低低8 8位位。CYCY总是被清总是被清0 0;OV=1OV=1表示积大于表示积大于FFHFFH 3.4.4 3.4.4 除法除法仅有一条除法指令仅有一条除法指令 DIV AB DIV AB;A A除以除以B B 无符号无符号 结果:结果:A A中为商的中为商的整数整数部分,部分,B B中为中为余数余数 CYCY总是被清总是被清0 0;OV=1OV=1表示除数为表示除数为0 0 2022-10-26593.5
37、 逻辑运算与循环类指令(逻辑运算与循环类指令(24条)条)3.5.1 3.5.1 逻辑与逻辑与 逻辑:与、或、异或、清逻辑:与、或、异或、清0 0和取反(均为位运算)和取反(均为位运算)循环:左、右移,带进位位左、右移循环:左、右移,带进位位左、右移datadirectA data#RndirectA A direct ANL)(;)()(;,dataAA data#RiAA RidirectAA direct RnAA Rn A ANL)(;)()(;)()(;)()(;,【例例】(A A)=C3H=C3H,(,(R0R0)=AAH=AAH,执行指令,执行指令 ANL AANL A,R0R0
38、 后,(后,(A A)=82H=82H 与与操作常用于对某些操作常用于对某些不关心位不关心位进行进行“清清0 0”,”,同时同时“保留保留”另一些关心位。另一些关心位。另外也可以实现对于某些另外也可以实现对于某些特定位特定位的清零操作)的清零操作)2022-10-26603.5.2 3.5.2 逻辑或逻辑或datadirectA data#RndirectA A direct ORL)(;)()(;,dataAA data#RiAA RidirectAA direct RnAA Rn A ORL)(;)()(;)()(;)()(;,【例例】(A A)=C3H=C3H,(,(R0R0)=55H=
39、55H,执行指令,执行指令 ORL AORL A,R0R0 后,(后,(A A)=D7H=D7H 或或操作常用于对某些操作常用于对某些关心位关心位进行进行“置置1 1”,”,不关心位保持不变不关心位保持不变 2022-10-26613.5.3 3.5.3 逻辑异或逻辑异或datadirectA data#RndirectA A direct XRL)(;)()(;,dataAA data#RiAA RidirectAA direct RnAA Rn A XRL)(;)()(;)()(;)()(;,【例例】(A A)=C3H=C3H,(,(R0R0)=AAH=AAH,执行指令,执行指令 XRL
40、AXRL A,R0R0 后,(后,(A A)=69H=69H 异或异或操作常用于对某些操作常用于对某些关心位关心位进行进行“取反取反”,”,不关心位保持不变不关心位保持不变 2022-10-26623.5.4 3.5.4 累加器清累加器清0 0和取反和取反这两条指令的功能是把累加器这两条指令的功能是把累加器A A的内容清的内容清0 0和取反,结果和取反,结果仍在仍在A A中。中。v【例例3-36】若若(A)=A5H,执行指令执行指令CLR A之之后后,(A)=00H.v 也可以利用也可以利用MOV A,#00H完成清完成清0,但需要多占,但需要多占用一个字节空间。用一个字节空间。0AAAA C
41、PLCLR2022-10-26633.5.4 3.5.4 逻辑清逻辑清0 0和取反和取反A0A;A;A CPLCLR;A RLCRLRRCRR3.5.5 3.5.5 累加器循环移位累加器循环移位2022-10-26643.6 控制转移类指令(控制转移类指令(17条)条)3.6.1 3.6.1 无条件转移无条件转移短跳转短跳转AJMP addr11 AJMP addr11;PC PC(PCPC)+2+2,PC10PC10 0 addr11 0 addr11 2022-10-2665长跳转长跳转LJMP addr16 LJMP addr16 ;PC addr16 PC addr16 相对转移相对转
42、移SJMP SJMP relrel ;PC PC(PCPC)+2+2,PC PC(PCPC)+relrel 目标地址目标地址relrel 对应范围为对应范围为 127 127 128128。2022-10-26663.6.2 3.6.2 条件转移条件转移累加器判累加器判0 0转移转移 relPC)(PC0A)(relPC)(PC0A)(rel JNZJZ,则;若,则;若比较不等转移比较不等转移 rel3PC)(PCdata)(Ri(rel3PC)(PCdata)Rn(rel3PC)(PCdata)A(reldata,#RiRnA CJNZ rel3PC)(PC(direct)A(reldere
43、ctA CJNE,则;若,则;若,则;若,则;若,2022-10-2667减减1 1不为不为0 0转移转移 0)Rn(rel,PC)(PC0)Rn(1-(Rn)Rn2,PC)(PC relRn DJNZ下执行,则结束循环,程序往;若继续循环,则;若;,0)direct(rel,PC)(PC0)direct(1-(direct)direct3,PC)(PC reldirect DJNZ下执行,则结束循环,程序往;若继续循环,则;若;,2022-10-26683.6.3 3.6.3 调用与返回调用与返回调用调用 11addr010PC),815PC(SP)1,(SP)SP )07PC(SP)1,(
44、SP)SP2,PC)(PC addr11 ACALL;16addrPC),815PC(SP)1,(SP)SP )07PC(SP)1,(SP)SP3,PC)(PC addr16 LCALL;指令执行时将返回地址入栈指令执行时将返回地址入栈 SPSP应设为合适值(默认值应设为合适值(默认值07H07H)2022-10-2669返回返回 1)SP(SP(SP),PC1-(SP)SPSP),(PC RET07815;1)SP(SP(SP),PC1-(SP)SPSP),(PC RETI07815;RETIRETI专用于中断服务程序返回,它具有清除内部相应专用于中断服务程序返回,它具有清除内部相应的中断状
45、态触发器(以保证正确的中断逻辑)的功能。的中断状态触发器(以保证正确的中断逻辑)的功能。3.6.4 3.6.4 空操作空操作NOP NOP ;PC PC(PCPC)+1+1,占占1 1个周期个周期、一个字节一个字节 2022-10-2670 无条件转移指令有多种形式,有些汇编无条件转移指令有多种形式,有些汇编器(如器(如uVision3,伟福汇编器等)支持通,伟福汇编器等)支持通用的用的“JMP 符号地址符号地址”形式来代替形式来代替SJMP、AJMP、和、和LJMP指令三种指令,汇编器能指令三种指令,汇编器能依实际目标地址范围自动汇编成这依实际目标地址范围自动汇编成这3种指令种指令之一相应的
46、编码。与此类似,调用的通用之一相应的编码。与此类似,调用的通用形式是形式是“CALL 符号地址符号地址”以替代以替代ACALL或LCALL。2022-10-26713.7 位操作类指令(位操作类指令(17条)条)位操作是以位为单位进行的各种操作。位操作指位操作是以位为单位进行的各种操作。位操作指令中的位地址有令中的位地址有4 4 种表示形式:种表示形式:直接地址直接地址 (如,(如,0D5H0D5H););点操作符点操作符 (如,(如,0D0H.50D0H.5、PSW.5PSW.5等);等);位名称位名称 (如,(如,F0F0););伪指令定义(如,伪指令定义(如,MYFLAG BIT F0M
47、YFLAG BIT F0)。)。以上几种形式表示的都是以上几种形式表示的都是PSWPSW中的中的位位5 5。位操作指令中,位累加器要用位操作指令中,位累加器要用“C”C”表示表示(注:而(注:而CYCY与具体的直接位地址与具体的直接位地址D7HD7H对应)。对应)。试比较:试比较:A A与与ACCACC的关系?的关系?2022-10-26723.7.1 3.7.1 位传送位传送MOV bitMOV bit,C C ;bitbit(CYCY)MOV C MOV C,bit bit ;CY CY (bitbit)3.7.2 3.7.2 位状态设置位状态设置位清位清0 0 0bit bit 0CY
48、C CLR;位置位位置位 1bit bit 1CY C SETB;2022-10-26733.7.3 3.7.3 位逻辑运算位逻辑运算位逻辑与位逻辑与位逻辑或位逻辑或 bitCYCY /bit bitCYCY bit C ANL)()(;)()(;,bitCYCY /bit bitCYCY bit C ORL)()(;)()(;,位取反位取反 bitbit bit CYCY C CPL)(;)(;2022-10-2674判判CYCY转移转移判判bitbit转移转移3.7.4 3.7.4 位判跳(条件转移)位判跳(条件转移)rel JNCJC;若(若(CYCY)=1,PC=1,PC(PCPC)+
49、2+rel,+2+rel,否则顺次执行。否则顺次执行。;若(若(CYCY)=0;PC=0;PC(PCPC)+2+rel;+2+rel;否则顺次执行。否则顺次执行。rel bit JNBJBCJB,;(bitbit)=1,PC=1,PC(PCPC)+3+rel,+3+rel,否则顺次执行。否则顺次执行。;(bitbit)=1,PC=1,PC(PCPC)+3+rel,bit 0,+3+rel,bit 0,否则顺次执行否则顺次执行;(bitbit)=0,PC=0,PC(PCPC)+3+rel,+3+rel,否则顺次执行否则顺次执行 2022-10-2675第第5 5章章 80C5180C51的中断系
50、统及定时的中断系统及定时/计数器计数器80C51单片机的单片机的中断系统中断系统5.180C5180C51单片机的单片机的中断处理过程中断处理过程5.280C5180C51单片机的单片机的定时定时/计数器计数器5.380C5280C52的定时的定时/计数器计数器2 25.42022-10-26765.1 80C51单片机的中断系统单片机的中断系统5.1.1 80C515.1.1 80C51中断系统的结构中断系统的结构 CPUCPU进行工作进行工作A A时发生了事件时发生了事件B B,请求,请求CPUCPU马上处理马上处理 CPUCPU暂时中断当前工作暂时中断当前工作A A,转去处理事件,转去处