AT89C51单片机学习课件

上传人:博****1 文档编号:569128281 上传时间:2024-07-27 格式:PPT 页数:139 大小:1.12MB
返回 下载 相关 举报
AT89C51单片机学习课件_第1页
第1页 / 共139页
AT89C51单片机学习课件_第2页
第2页 / 共139页
AT89C51单片机学习课件_第3页
第3页 / 共139页
AT89C51单片机学习课件_第4页
第4页 / 共139页
AT89C51单片机学习课件_第5页
第5页 / 共139页
点击查看更多>>
资源描述

《AT89C51单片机学习课件》由会员分享,可在线阅读,更多相关《AT89C51单片机学习课件(139页珍藏版)》请在金锄头文库上搜索。

1、单片机原理与接口技术嵌入式微控制器的开发入门参考资料1 1, 单片机原理及其接口技术单片机原理及其接口技术 -胡汉才胡汉才 清华大学出版社(清华大学出版社(3232元)元)2 2,MCS-51/96MCS-51/96系列单片机原理及应用系列单片机原理及应用 -孙涵芳孙涵芳 徐爱卿徐爱卿 北京航空航天大学出版社(北京航空航天大学出版社(3535元)元)3 3,MCS-51MCS-51系列单片机实用接口技术系列单片机实用接口技术 - - 李华李华北京航空航天大学出版社(北京航空航天大学出版社(4040元)元)4 4,电子世界电子世界 - -中国电子学会主办(期刊中国电子学会主办(期刊 6.00 6

2、.00元元/ /期)期)本课主要内容及课时安排本课主要内容及课时安排 总讲课课时总讲课课时2424学时学时n n第一章:第一章:MCS-51MCS-51系列单片机的基本硬件结构系列单片机的基本硬件结构 (8 8课时)课时)介绍介绍5151单片机内部硬件结构(数据寄存器、程序存储器、输单片机内部硬件结构(数据寄存器、程序存储器、输入输出端口、定时计数器、串行口及中断等)入输出端口、定时计数器、串行口及中断等)n n第二章:第二章:MCS-51MCS-51单片机的指令系统单片机的指令系统 (4 4课时)课时)5151单片机的单片机的111111条指令的分类、寻址方式、伪指令及使用中的注条指令的分类

3、、寻址方式、伪指令及使用中的注意事项意事项n n第三章:第三章:MCS-51MCS-51单片机的系统扩展及应用单片机的系统扩展及应用 (1212课时)课时)程序与数据存储器的扩展、定时程序与数据存储器的扩展、定时/ /计数器的应用、串行口的应计数器的应用、串行口的应用及用及A/DA/D、D/AD/A转换器与单片机的接口和键盘扫描转换器与单片机的接口和键盘扫描/ /动态显示接口电路。动态显示接口电路。如何学习本门课程第一章是基第一章是基础础,只有熟知,只有熟知单单片机的硬件片机的硬件结结构构和特点才能正确的使用和特点才能正确的使用单单片机片机进进行各种行各种编编程、程、应应用和开用和开发发。第二

4、章的关第二章的关键键是要正确的理解和掌握指令的是要正确的理解和掌握指令的寻寻址方式址方式。MCS-51MCS-51单单片机的片机的111111条指令,要正确理解和运用。条指令,要正确理解和运用。第三章要求要运用第三章要求要运用许许多基多基础础知知识识,将各种外,将各种外围电围电路与路与单单片机之片机之间实现间实现接口,接口,因此要掌握外因此要掌握外围电围电路的原理、特性和使用方法。路的原理、特性和使用方法。这这是是进进行系行系统设计统设计的基的基础础。参加参加实验实验前前认认真做好真做好预习预习。实验实验中独立地中独立地进进行行编编程、程、调试调试。完整的掌握。完整的掌握单单片机的片机的编编程

5、、程、调试过调试过程是每一个从事程是每一个从事单单片机开片机开发发的工程的工程师师所必所必须须跨出的第跨出的第一步。一步。好的参考好的参考书书。无。无论论是初学入是初学入门门,还还是将来开是将来开发发,它都是很好的,它都是很好的“工具工具”和和“钥钥匙匙”。硬件基本概念:微型计算机微型计算机单片机单片机嵌入式微嵌入式微控制器控制器嵌入式计算机嵌入式计算机系统系统继续微型计算机:l l由由CPUCPU、存储器、定时、存储器、定时/ /计数器、并行输入计数器、并行输入/ /输输出接口电路、中断控制器等大规模出接口电路、中断控制器等大规模ICIC芯片安置芯片安置在一个电路板上,加上键盘、显示器等构成

6、了在一个电路板上,加上键盘、显示器等构成了微型计算机的硬体部分。微型计算机的硬体部分。返回单片机将微型计算机系统所用的大多数将微型计算机系统所用的大多数ICIC芯片集成到一芯片集成到一个芯片中。可以认为,单片机就是将微型计算机个芯片中。可以认为,单片机就是将微型计算机的的CPUCPU、存储器、存储器、I/OI/O端口、中断控制器等全部端口、中断控制器等全部做在一个芯片中去。做在一个芯片中去。美国美国INTELINTEL公司生产的公司生产的MCS-51MCS-51单片机就是一种单片机就是一种典型的、典型的、按照微型计算机的框架,采用大规模按照微型计算机的框架,采用大规模ICIC工艺制造工艺制造的

7、单片机,也是目前世界上使用量最大的单片机,也是目前世界上使用量最大的一种较典型的产品。的一种较典型的产品。返回嵌入式微控制器是单片机发展的一个高级形式,也是单片机发展的必然是单片机发展的一个高级形式,也是单片机发展的必然趋势。它的设计理念不再停留在模仿微型计算机的结构,趋势。它的设计理念不再停留在模仿微型计算机的结构,而是而是面向应用、加大功能、减少功耗、精简指令系统提面向应用、加大功能、减少功耗、精简指令系统提高运行速度高运行速度为出发点来设计单片机的框架。这种处理器为出发点来设计单片机的框架。这种处理器的最大特征是不仅包含了一般单片机的所有硬件电路,的最大特征是不仅包含了一般单片机的所有硬

8、件电路,还集成了放大器、比较器、还集成了放大器、比较器、A/DA/D转换器和转换器和PWMPWM电路等等。电路等等。用它来设计一个智能化的产品,可以进一步简化外围电用它来设计一个智能化的产品,可以进一步简化外围电路,降低开发成本,甚至完成一般的单片机所不能完成路,降低开发成本,甚至完成一般的单片机所不能完成的任务。的任务。美国美国MicrochipMicrochip公司生产的公司生产的PICPIC单片机等产品就是这类产品单片机等产品就是这类产品的代表,实际上的代表,实际上PICPIC单片机也称为单片机也称为“ “嵌入式微控制器嵌入式微控制器” ”,如如PIC16F877PIC16F877等。等

9、。返回嵌入式计算机系统人们在工业控制、家电产品、智能仪表、汽车电子等领域人们在工业控制、家电产品、智能仪表、汽车电子等领域进行智能化设计时,将嵌入到被控制对象(如:家电、汽进行智能化设计时,将嵌入到被控制对象(如:家电、汽车、机床等)中的、已经失去了原有的计算机车、机床等)中的、已经失去了原有的计算机形态形态及及功能功能的专用的专用计算机计算机称之为称之为“ “嵌入式计算机系统嵌入式计算机系统” ”。在这些被控制对象中,往往要求嵌入式计算机系统要有在这些被控制对象中,往往要求嵌入式计算机系统要有极极小的体积和极低的成本,要有极小的功耗和较高的可靠性小的体积和极低的成本,要有极小的功耗和较高的可

10、靠性。而这些又恰恰是通用计算机无法作到的。因此以单片机为而这些又恰恰是通用计算机无法作到的。因此以单片机为代表的嵌入式计算机系统(也称嵌入式微控制器)极大的代表的嵌入式计算机系统(也称嵌入式微控制器)极大的满足了这种市场的需求。反过来,市场的需要也迫使单片满足了这种市场的需求。反过来,市场的需要也迫使单片机去不断完善、发展,使其分类越来越细,品种越来越多。机去不断完善、发展,使其分类越来越细,品种越来越多。微型计算机与单片机在硬件结构上的比较 微型计算机微型计算机 单片机单片机数据RAMCPU并行I/O程序ROM定时/计数器串型端口中断控制器扩展I/O端口系统总线(DB、AB、CB)微型计算机

11、的组成框图(由多个IC芯片组装在一个主电路板上)MCS-51单片机所有单元都组装在一个IC芯片上返回第一章:MCS-51系列单片机的基本硬件结构 MCS-51 MCS-51单片机的主要性能和特点单片机的主要性能和特点 MCS-51 MCS-51单片机单片机内部方框图内部方框图1.3 1.3 MCS-51MCS-51单片机的引脚定义单片机的引脚定义 MCS-51 MCS-51单片机的单片机的存储器存储器的配置的配置 输入输出输入输出端口端口 震荡震荡器、时钟电路和器、时钟电路和CPUCPU的时序的时序 MCS-51MCS-51单片机的定时单片机的定时/ /计数器计数器 MCS-51单片机的串行接

12、口1.9 1.9 MCS-51MCS-51的中断系统的中断系统 1.1 MCS-51单片机的主要性能和特点内部程序存储器内部程序存储器内部程序存储器内部程序存储器ROM ROM ( ( 以以以以89C5189C51为例为例为例为例 ) ):4K4K的存的存储储容量;容量;内部数据存储器内部数据存储器内部数据存储器内部数据存储器RAMRAM:256B(256B(128B128B的的RAM+21BRAM+21B的的SFR) SFR) ;寄存器区:寄存器区:寄存器区:寄存器区:设设有有4 4个寄存器区,每一个区有个寄存器区,每一个区有R0-R7R0-R7八个工作寄存器;八个工作寄存器;8 8位并行输

13、入输出端口:位并行输入输出端口:位并行输入输出端口:位并行输入输出端口:P0P0、P1P1、P2P2和和P3P3;定时定时定时定时/ /计数器:计数器:计数器:计数器:2 2个个1616位的定位的定时时/ /计计数器;数器;串型口:串型口:串型口:串型口:全双工的端口(全双工的端口(RXDRXD:接收端,:接收端,TXDTXD发发送端)送端);中断系统:中断系统:中断系统:中断系统:设设有有5 5个中断源;个中断源;系统扩展能力:系统扩展能力:系统扩展能力:系统扩展能力:可外接可外接64K64K的的 ROM ROM 和和64K64K的的 RAM RAM;堆栈:堆栈:堆栈:堆栈:设设在在RAMR

14、AM单单元中,可以浮元中,可以浮动动既通既通过过堆堆栈栈指指针针SPSP来确定堆来确定堆栈栈的位置的位置布尔处理机:布尔处理机:布尔处理机:布尔处理机:配合布配合布尔尔运算的指令运算的指令进进行各种行各种逻辑逻辑运算;运算;指令系统:指令系统:指令系统:指令系统:111111条指令。按功能可分条指令。按功能可分为为数据数据传传送、算送、算术术运算、运算、逻辑逻辑运算、运算、控制控制转转移和布移和布尔尔操作操作5 5大大类类。返回1.2 : MCS-51单片机内部方框图 时钟电路4KROM程序存储器256BRAM数据存储器2X16位定时/计数器CPU处理器64KB总线扩展控制器可编程I/O端口P

15、0-3可编程串行口MCS-51系列芯片及制造工艺型号型号 片内片内ROMROM片内片内RAMRAMI/OI/O口线口线备备 注注80318031无无128B+SFR128B+SFR8 844DIP 40DIP 40脚脚80518051掩膜掩膜4KB4KB128B+SFR128B+SFR8 844DIP 40DIP 40脚脚87518751EPROM 4KBEPROM 4KB128B+SFR128B+SFR8 844DIP 40DIP 40脚脚89C5189C51FLASH 4KBFLASH 4KB128B+SFR128B+SFR8 844DIP 40DIP 40脚脚89C205189C2051

16、FLASH 2KBFLASH 2KB128B+SFR128B+SFR1515简化简化DIP 20DIP 20脚脚8XC5528XC5528K8K256B+SFR256B+SFR8 866增强多功能型增强多功能型返回1.3:MCS-51单片机的引脚定义MCS-51MCS-51单片机有两种封装形式:单片机有两种封装形式:。1 1,主电源引脚主电源引脚 : :Vcc(+5V- 40Vcc(+5V- 40脚脚) )和和Vss(GND 20Vss(GND 20脚脚); );2 2,外接晶体引脚:外接晶体引脚:XTAL1XTAL1(1919脚)、脚)、XTAL2XTAL2(1818脚)脚),只要在只要在这

17、两脚之间接入一个晶体震荡器,单片机就可以以此晶体的频这两脚之间接入一个晶体震荡器,单片机就可以以此晶体的频率开始工作。常用的晶体频率有率开始工作。常用的晶体频率有0-24M0-24M,频率越高,单片机的频率越高,单片机的工作速度就越快,但单片机的功耗就要增加。工作速度就越快,但单片机的功耗就要增加。3 3,控制或与电源复用引脚:控制或与电源复用引脚:RST/VpdRST/Vpd、ALE/PROGALE/PROG、/PSEN/PSEN和和VddVdd RST/VpdRST/Vpd(9 9脚):脚):在系统上电震荡器开始工作时,在系统上电震荡器开始工作时, 在内部在内部加在此引脚上有一个两个时钟周

18、期的高电平使单片机复位。但加在此引脚上有一个两个时钟周期的高电平使单片机复位。但为了使系统复位可靠,建议外加为了使系统复位可靠,建议外加 一个上电复位电路,延长复一个上电复位电路,延长复位的时间。位的时间。当单片机掉点时,此引脚可以接入备用电源向单片当单片机掉点时,此引脚可以接入备用电源向单片机内部的机内部的RAMRAM供电,以防止供电,以防止RAMRAM中的数据丢失。中的数据丢失。 引脚图在复位状态下:所有在复位状态下:所有SFRSFR的内容全变为的内容全变为“0”“0”, 端口输出端口输出“1”“1”。RAMRAM内容不变。内容不变。MCS-51RSTVccMCS-51RSTVcc1K10

19、tVT延长上电复位时间的电路和RST端上电电压曲线具有手动复位功能 的复位电路RC87 486 39 5102 1 VoVcc触发触发信号VoVc87 486 39 5102 1 VoRSTVccVccVoV备用使用555电路构成的掉电保护电路由555构成的单稳态电路、波形 单稳态单路构成的掉电保护电路、波形掉电保护原理及过程电源监控电路对电源电源监控电路对电源VCCVCC进行监控,当进行监控,当VCCVCC的电源开始下降的电源开始下降时向单片机的时向单片机的/INT0/INT0或或/INT1/INT1发一个中断申请信号。发一个中断申请信号。单片机收到中断信号单片机收到中断信号, ,立即进入中

20、断程序。在电源消失前:立即进入中断程序。在电源消失前: 1 1,迅速将一些重要的信息送,迅速将一些重要的信息送RAMRAM保存;保存; 2 2,从,从P1.0P1.0引脚输出负脉冲引脚输出负脉冲, ,触发单稳进行电源切换。触发单稳进行电源切换。外部单稳电路进入但稳态后,由于外部单稳电路进入但稳态后,由于VCCVCC的消失,使电路无法的消失,使电路无法对单稳电容充电,所以单稳电路一直处于对单稳电容充电,所以单稳电路一直处于“ “休眠状态休眠状态” ”。当当VCCVCC电源恢复后电源恢复后,VCC,VCC对电容充电,经对电容充电,经后脱离单稳态。后脱离单稳态。电源监测电路/INT0 RSTMCS-

21、51Vo Vdd 555触发输入 Vcc备用电源 ALE/PROGALE/PROG(3030脚):脚):以一个不变的频率(系统时钟以一个不变的频率(系统时钟 fosc/6 ) fosc/6 )周期性输出正脉。周期性输出正脉。 当单片机使用外部存储器时,此信号可当单片机使用外部存储器时,此信号可作为低八位地址的锁存信。作为低八位地址的锁存信。 对于对于EPROMEPROM型的单片机型的单片机, ,此脚此脚还是用于写程序时,输入编程脉冲。还是用于写程序时,输入编程脉冲。/PSEN/PSEN(2929脚):脚):外部程序程序存储器的选通信号。当单片机外部程序程序存储器的选通信号。当单片机使用外部程序

22、存储器时,此脚在一个机器周期内产生两次负使用外部程序存储器时,此脚在一个机器周期内产生两次负脉冲。注意,访问外部数据存储器时,此信号无效。脉冲。注意,访问外部数据存储器时,此信号无效。/EA / Vdd /EA / Vdd (3131脚):脚):外部程序存储器的选择端控制端:当此外部程序存储器的选择端控制端:当此脚加入脚加入“1”“1”电平是,单片机使用内部的程序存储器;当电平是,单片机使用内部的程序存储器;当EAEA加入低电平时,系统只使用外部的程序存储器。加入低电平时,系统只使用外部的程序存储器。 但要特别注意:如果但要特别注意:如果EA=1EA=1既使用单片机内部的程序存既使用单片机内部

23、的程序存储器时,如果程序计数器储器时,如果程序计数器PCPC的值超过的值超过0FFFH0FFFH时,单片机将时,单片机将自动转向外部程序存储器自动转向外部程序存储器1000H1000H开始的单元。开始的单元。 对于对于EPROMEPROM型的单片机,此脚还是用于写程序时,加入型的单片机,此脚还是用于写程序时,加入2121伏的编程电压。伏的编程电压。时序图引脚图4 4,并行输入输出端口引脚(并行输入输出端口引脚(P0-P3P0-P3)P0.0 - P0.7 P0P0.0 - P0.7 P0端口线端口线(39-32(39-32脚脚) ):输出能力最强的端口,输出能力最强的端口,可以带动可以带动8

24、8个个TTLTTL负载。驱动一个负载。驱动一个MOSMOS负载时,应接一个负载时,应接一个10K10K左右的上拉电阻。如果系统使用外接存储器时,该口还作为地左右的上拉电阻。如果系统使用外接存储器时,该口还作为地址(低八位)总线和数据总线,注意在这种情况下,址(低八位)总线和数据总线,注意在这种情况下,P0P0口就口就不能通用的不能通用的I/OI/O端口。端口。P1.0 - P1.7 P1P1.0 - P1.7 P1端口线端口线(1 8(1 8脚脚) ):负载能力为负载能力为4 4个个TTLTTL负载。负载。P2.0 P2.7 P2P2.0 P2.7 P2端口线端口线(21 28(21 28脚脚

25、) ):通用通用I/OI/O端口。端口。 除了做通用除了做通用I/OI/O端口外,当系统使用外接存储器时,该口还作端口外,当系统使用外接存储器时,该口还作为地址(高八位)总线,在这种情况下,为地址(高八位)总线,在这种情况下,P0P0口就不能通用的口就不能通用的I/OI/O端口。负载能力为端口。负载能力为4 4个个TTLTTL。引脚图l lP3.0 P3.7 P3P3.0 P3.7 P3端口线端口线 (10 1710 17脚):脚): P3 P3口除了做通用的口除了做通用的I/OI/O端口外,同时它还有第二功端口外,同时它还有第二功能),负载能力为能),负载能力为4 4个个TTLTTL。口线口

26、线口线口线定义定义定义定义说明说明说明说明口线口线口线口线定义定义定义定义说明说明说明说明P3.0P3.0RXDRXD串行数据输入口串行数据输入口P3.4P3.4T0T0计数器外部输入信号计数器外部输入信号P3.1P3.1TXDTXD串行数据输出口串行数据输出口P3.5P3.5T1T1计数器外部输入信号计数器外部输入信号P3.2P3.2INT0INT0外部中断输入口外部中断输入口P3.6P3.6/ / WRWR外部数据存储器写信号外部数据存储器写信号P3.3P3.3INT1INT1外部中断输入口外部中断输入口P3.7P3.7/ RD/ RD外部数据存储器读信号外部数据存储器读信号P3口第二功能

27、表引脚图 MCS-51MCS-51单片机外型图(单片机外型图(DIPDIP封装)封装) MCS-51 MCS-51单片机的逻辑符号图单片机的逻辑符号图VCCRSTXTAL1 P0口XTAL2/EA/PSENALE P1口P3口RXDTXD/INT0/INT1 P2口T0T1/WR/RDGND87C51EPROM型AT89C51ATMELFLASH型返回返回上一次1.4 MCS-51单片机的存储器的配置 MCS-51 MCS-51单片机单片机的存储器的配置特点的存储器的配置特点MCS-51MCS-51单片机片内、外单片机片内、外程序程序存储器的使用示意图存储器的使用示意图1.4.1 1.4.1

28、程序程序存储器存储器( (片内与片外片内与片外) )1.4.2 1.4.2 内部数据内部数据存储器存储器RAMRAMMCS-51 MCS-51 片内片内 、片外、片外 数据存储器数据存储器示意图示意图MCS-51MCS-51单片机片单片机片内存储器内存储器低低 128B 128B 字节功能分配图字节功能分配图片内片内 RAM RAM(20H-2FH20H-2FH)中的位寻址区)中的位寻址区结构图结构图特殊功能寄存器特殊功能寄存器 SFRSFR1.4.3 1.4.3 外部数据存储器外部数据存储器第一章第四节内容小结第一章第四节内容小结程序存储器六个特殊的程序存储器六个特殊的单元单元返回第1章主菜

29、单1.4.0 MCS-51单片机的存储器的配置特点(89C51)在在MCS-51MCS-51单片机的内部集成了单片机的内部集成了4K4K的程序存储器和的程序存储器和256B256B的数据存储器,同时还可以使用片外的程序的数据存储器,同时还可以使用片外的程序存储器和数据存储器,其扩展能力都是存储器和数据存储器,其扩展能力都是64K64K。从物理结构的角度讲,从物理结构的角度讲,5151单片机的存储系统可以单片机的存储系统可以分为四个存储空间:既片内分为四个存储空间:既片内ROMROM,RAMRAM和片外和片外ROMROM、RAMRAM。从逻辑上讲(既用户编程的角度讲)从逻辑上讲(既用户编程的角度

30、讲)5151单片机的单片机的存储系统又可分为三个存储空间。既片内存储系统又可分为三个存储空间。既片内RAMRAM,片外片外RAMRAM和片内、外的程序存储器和片内、外的程序存储器ROMROM。从物理结构上单片机系统的存储器结构图(四个部分) MCS-51单片机片内ROM4K片内RAM256B片外RAM64K片外ROM64K返回返回上一次1.4.1 程序存储器(片内与片外)1.1.程序存储器是用来存放编好的程序、常数和表程序存储器是用来存放编好的程序、常数和表格的。格的。2.2.在在MCS-51MCS-51单片机中,当引脚单片机中,当引脚EA=1EA=1时,系统使时,系统使用片内的用片内的4KR

31、OM4KROM来存储程序。来存储程序。EA=0EA=0时,系统时,系统使用片外的使用片外的ROMROM。3.3.无论是使用片内还是使用片外的无论是使用片内还是使用片外的ROMROM(既既 EA=1EA=1或或EA=0EA=0),),其起始地址都是从其起始地址都是从0000H0000H单元单元开始。开始。4.4.如果如果EA=1EA=1(使用片内的程序存储器时):(使用片内的程序存储器时):5.5. 程序从程序从0000H0000H开始执行。开始执行。6.6. 注意:在这种情况下,注意:在这种情况下,如果程序计数器如果程序计数器的指针的指针PCPC值超过值超过0FFFH0FFFH(4K4K)时,

32、)时,单片机就要自单片机就要自动的转向片外的动的转向片外的ROMROM存储器(尽管存储器(尽管EA=1EA=1),且从),且从片外片外ROMROM的的1000H1000H单元开始执行程序。但单片机单元开始执行程序。但单片机是无法使用片外是无法使用片外ROMROM的的0000H-0FFFH0000H-0FFFH这这4K4K单元。单元。返回MCS-51单片机片内、外程序存储器的使用示意图 0FFFH0000H0FFFH0000HFFFFH1000HEA=1时,ROM的使用EA=0时ROM的使用片外程序存储器(最大64K)单片机内部程序存储器(4K)返回程序存储器六个特殊的单元在程序存储器中,在程序

33、存储器中,有六个单元有六个单元是具有特定功能。是具有特定功能。编程者是不能随便使用的。编程者是不能随便使用的。0000H0000H单元:单元:上电时,程序计数器上电时,程序计数器PCPC所指向的单元所指向的单元0003H0003H单元:单元:外部中断外部中断/INT0/INT0的入口地址;的入口地址;000BH000BH单元单元:定时器定时器T0T0的溢出中断入口地址;的溢出中断入口地址;0013H0013H单元:单元:外部中断外部中断/INT1/INT1的入口地址;的入口地址;001BH001BH单元:单元:定时器定时器T1T1的溢出中断入口地址;的溢出中断入口地址;0023H0023H单元

34、:单元:串行口接收、传送的中断入口地址。串行口接收、传送的中断入口地址。返回1.4.2 内部数据存储器RAM数据存储器无论在物理上还是逻辑上都分为两个地址空间,数据存储器无论在物理上还是逻辑上都分为两个地址空间,既一个内部和一个外部的数据存储空间。既一个内部和一个外部的数据存储空间。访问访问内部数据存储单元内部数据存储单元时,使用时,使用 MOV MOV 指令;指令; 而访问而访问外部数据存储器外部数据存储器时,使用时,使用 MOVX MOVX 指令。指令。内部数据存储器从功能上又将内部数据存储器从功能上又将256B256B空间分为二个不同的空间分为二个不同的块:块: 1,1,低低128B12

35、8B的的RAMRAM块;块; 2, 2,高高128B128B的的SFR (Special Function RegisterSFR (Special Function Register)块。)块。在低在低128B128B的的RAMRAM存储单元中又可划分为:存储单元中又可划分为:工作寄存器区工作寄存器区、可位寻址区可位寻址区、通用存储数据的便签区通用存储数据的便签区。高高128B128B的的专用寄存器区专用寄存器区中仅仅使用了中仅仅使用了2121寄存器(寄存器(5151系列)系列),其它单元未定义不能使用。,其它单元未定义不能使用。存储结构图MCS-51 片内 、片外 数据存储器示意图 特殊功

36、能寄存器SFR通用数据存储器80H7FH00HFFH片内数据存储器 片外数据存储器256B个字节 64KB个字节片外数据存储器64KB0000HFFFFH注意:1,访问片内RAM20H存储单元;MOV A,20H2,访问片外RAM存储单元; MOV R0,#20hMOVX A,R03,尽管片内与片外的RAM单元 的00H-FFH地址相重叠但由于指令的不同不会发生地址混乱。片内RAM低 128B 字节功能分配图 位寻址区3区2区1区0区便笺区08H07H00H7FH30H2FH20H1FH18H17H10H0FH四个工作寄存器区每个区中有R0-R7八个工作寄存器位寻址区16个单元20H-2FH,

37、共有128 可寻址位个位。位地址:00H-7FH注意:位地址与字节地址的区别通用的RAM区地址:30H-7FH继续返回上一次片内 RAM(20H-2FH)中的位寻址区结构图7F7F7E7E7D7D7C7C7B7B7A7A79797878777776767575747473737272717170706F6F6E6E6D6D6C6C6B6B6A6A69696868676766666565646463636262616160605F5F5E5E5D5D5C5C5B5B5A5A59595858575756565555545453535252515150504F4F4E4E4D4D4C4C4B4B4A

38、4A49494848474746464545444443434242414140403F3F3E3E3D3D3C3C3B3B3A3A39393838373726262525242423232222212120202F2F2E2E2D2D2C2C2B2B2A2A29292828272726262525242423232222212120201F1F1E1E1D1D1C1C1B1B1A1A19191818171716161515141413131212111110100F0F0E0E0D0D0C0C0B0B0A0A09090808070706060505040403030202010100002F

39、H20H字节地址位寻址区内的地址是位寻址区内的地址是位地址。位地址。共有共有00-7FH00-7FH(共(共128128个位);个位);要区分字节地址和位地址这两个不同的地址概念:要区分字节地址和位地址这两个不同的地址概念: 从物理的角度,每一个字节地址内包含了从物理的角度,每一个字节地址内包含了8 8个位,既:个位,既: D7D7,D6D6,D5D5,D4D4,D3D3,D2D2,D1D1,D0D0 在一般情况,我们提到的在一般情况,我们提到的RAMRAM地址都是字节地址。地址都是字节地址。 从逻辑的角度讲,字节地址和位地址是靠不同类型的指令来区从逻辑的角度讲,字节地址和位地址是靠不同类型的

40、指令来区分的。如:分的。如: MOV AMOV A, 20h 20h ;将;将RAMRAM的的2020单元内容送累加器单元内容送累加器A A; MOV C MOV C ,20h 20h ;将;将RAMRAM位寻址区中位寻址区中20H20H位送位送CYCY中。中。 在这二个例子中,第一条指令为在这二个例子中,第一条指令为字节传送指令字节传送指令,所以,所以20H20H为为字节地址;第二个例子中的指令为字节地址;第二个例子中的指令为位操作指令位操作指令,所以,所以20H20H为为位地址。有关详细内容将在第二章中描述。位地址。有关详细内容将在第二章中描述。返回0区工作寄存器区结构图R7R7R6R6R

41、5R5R4R4R3R3R2R2R1R1R0R0RAM地址07H06H05H04H03H02H01H00H返回上一次特殊功能寄存器SFR特殊功能寄存器特殊功能寄存器SFR SFR (Special Function RegisterSpecial Function Register) 特殊用途寄存器的集合。用来设定单片机内部各个部特殊用途寄存器的集合。用来设定单片机内部各个部件的工作方式,存放相关部件的状态,定时器初值寄存器,件的工作方式,存放相关部件的状态,定时器初值寄存器,并行端口的锁存器等等。并行端口的锁存器等等。 尽管特殊功能寄存器与尽管特殊功能寄存器与RAMRAM在同一个单元中,但不在

42、同一个单元中,但不能作为普通的能作为普通的RAMRAM存储单元来使用。只有在编程中根据需存储单元来使用。只有在编程中根据需要,进行一些特定功能的设定,或者是从中查寻相关部件要,进行一些特定功能的设定,或者是从中查寻相关部件的状态时,才能进行读、写操作。如中断方式的设定、定的状态时,才能进行读、写操作。如中断方式的设定、定时器工作模式的设定,查询串行口发送或接收是否结束等时器工作模式的设定,查询串行口发送或接收是否结束等等。等。 标识符标识符名名 称称地地 址址ACCACCB BPSWPSWSPSPDPTRDPTRP0P0P1P1P2P2P3P3IPIPIEIETMODTMODTCONTCON累

43、加器累加器B B寄存器寄存器程序状态字程序状态字堆栈指针堆栈指针数据指针数据指针( (包括包括DPH,DPL)DPH,DPL)口口0 0口口1 1口口2 2口口3 3中断优先级控制寄存器中断优先级控制寄存器中断允许控制寄存器中断允许控制寄存器定时定时/ /计数器方式控制寄存器计数器方式控制寄存器定时定时/ /计数器控制寄存器计数器控制寄存器0E0H0E0H0F0H0F0H0D0H0D0H81H81H83H,82H83H,82H80H80H90H90H0A0H0A0H0B0H0B0H0B8H0B8H0A8H0A8H89H89H88H88H特殊功能寄存器特殊功能寄存器 SFR( SFR(表一表一)

44、 )SFR(表二) 标识符标识符名名 称称地地 址址TH0TH0TL0TL0TH1TH1TL1TL1SCONSCONSBUFSBUFPCONPCON定时定时/ /计数器计数器0 0初值寄存器高初值寄存器高8 8位位定时定时/ /计数器计数器0 0初值寄存器低初值寄存器低8 8位位定时定时/ /计数器计数器1 1初值寄存器高初值寄存器高8 8位位定时定时/ /计数器计数器1 1初值寄存器低初值寄存器低8 8位位串行口控制寄存器串行口控制寄存器串行口数据缓冲器串行口数据缓冲器( (接收接收, ,发送发送) )电源控制寄存器电源控制寄存器8CH8CH8AH8AH8DH8DH8BH8BH98H98H9

45、9H99H97H97HSFR高128B低128B0FFH80H7FH00H特殊功能寄存器SFR在片内RAM中的位置注:表中黄色的单元为可按位寻址的字节特殊功能寄存器SFR说明程序计数器程序计数器PC: PC: 用来存放下一条要执行的指令地址用来存放下一条要执行的指令地址, ,长度为长度为1616位位, ,所以寻址范围为所以寻址范围为0-65535(64K).0-65535(64K).在物理上是独立于在物理上是独立于SFR.SFR.累加器累加器A A: : 最常用的专用寄存器最常用的专用寄存器, , 大多数的指令操作数都来大多数的指令操作数都来自累加器自累加器A.A.所有的算术运算指令的运算结果

46、都存放在所有的算术运算指令的运算结果都存放在A A中中. .B B寄存器寄存器: :乘除法指令使用的寄存器乘除法指令使用的寄存器. .数据指针数据指针DPTR: DPTR: 一个一个1616位的寄存器位的寄存器. .由高八位由高八位DPHDPH和低八和低八位位DPLDPL构成构成.DPTR.DPTR主要用来存放片内主要用来存放片内ROMROM的地址和片外的地址和片外RAM,ROMRAM,ROM的地址的地址. .这样单片机可以通过间址的方式来访问片这样单片机可以通过间址的方式来访问片内内ROMROM或片外的或片外的RAM,ROMRAM,ROM。 例如例如: :片外片外RAMRAM的的2000H2

47、000H单单元中有一个数元中有一个数x,x,试试将其送到累加器将其送到累加器A A中中. . MOV DPTR,#2000h MOV DPTR,#2000h ; DPTR ; DPTR 2000H 2000H MOVX A,DPTR MOVX A,DPTR ; A ; A x xl l程序状态字程序状态字PSW: PSW: 8 8位寄存器位寄存器. . 表征程序执行的状态信息。表征程序执行的状态信息。CY (PSW.7)CY (PSW.7)进位标志进位标志: : 在加减法运算中在加减法运算中, ,累加器累加器A A的最高位的最高位A7A7有进位有进位, ,则则CY=1,CY=1,否则否则CY=

48、0.CY=0.同理同理, ,在减法运算中在减法运算中, ,如果如果A7A7有借有借位位, ,则则CY=1.CY=1.因此因此CYCY往往作为无符号数运算是否有溢出的标往往作为无符号数运算是否有溢出的标志。志。AC(PSW.6):AC(PSW.6):辅助进位位辅助进位位: : 用来判断加减法运算时用来判断加减法运算时, ,低四位是否低四位是否向高四位进位或借位向高四位进位或借位( (既既A3A3的进位或借位的进位或借位). ).往往用来判断压往往用来判断压缩的缩的BCDBCD码的运算处理码的运算处理. .F0(PSW.5) F0(PSW.5) 用户标志位用户标志位: : 完全由用户来定义和使用。

49、完全由用户来定义和使用。RS1,RS0RS1,RS0工作寄存器区选择位工作寄存器区选择位: :确定工作寄存器确定工作寄存器R0-R7R0-R7在哪个区在哪个区中中. . 单片机在上电或复位后单片机在上电或复位后RS1RS1、RS0=00RS0=00。当需要人为的修。当需要人为的修改改RS1,RS0RS1,RS0的值来改变工作寄存器区的位置。的值来改变工作寄存器区的位置。CYCYACACF0F0RS1RS1RS0RS0OVOV- -P PRAM分配图OV(PSW.2) OV(PSW.2) 溢出标志位溢出标志位: : 判断符号数加减法运算时是否有溢出判断符号数加减法运算时是否有溢出. . OV O

50、V的结果可以用一个算法来表示的结果可以用一个算法来表示: : OV=CPOV=CP异或异或CSCS 其中其中:CP:CP为为A7A7的进位的进位,CS,CS为为A6A6的进位的进位OV=1OV=1表明有溢出。表明有溢出。P(PSW.0)P(PSW.0)奇偶标志位奇偶标志位: : 用来标志累加器用来标志累加器A A中运算后中运算后1 1的个数。的个数。 当当P=1P=1时时, ,表明表明A A中中1 1的个数为奇数个的个数为奇数个, ,反之为偶数个。反之为偶数个。 【举例举例】:有两个数:有两个数0FH0FH和和F8HF8H,试将两数相加,试将两数相加 MOV A MOV A,#0FH #0FH

51、 ;将立即数;将立即数0f h 0f h 送累加器送累加器A A ADD A ADD A,#0F 8H #0F 8H ;A A的内容与立即数的内容与立即数0f8h0f8h相加,结果送相加,结果送A A 0000 1111 0000 1111 运算结果:运算结果:A=07HA=07H,CY=1CY=1(既(既CP=1CP=1),), + 1111 1000+ 1111 1000 CS=1 CS=1,OV=0OV=0(因为(因为CP=1CP=1,CS=1CS=1) Cy Cy1 0000 0111 AC=11 0000 0111 AC=1,P=1P=1如何根据如何根据PSWPSW来分析运算结果是否

52、正确?是否有溢出?来分析运算结果是否正确?是否有溢出?1 1,若数据为无符号数。既,若数据为无符号数。既15+248=263=107H 15+248=263=107H 既既CY=1CY=1,A=07HA=07H。2 2,若数据为有符号数。既,若数据为有符号数。既+15+15加加-8=+7=07H-8=+7=07H,OV=0OV=0表明无溢出。表明无溢出。l lSP SP 堆栈指针堆栈指针:8 8位寄存器,用来指位寄存器,用来指示堆栈的位置示堆栈的位置, ,可由软件修改。在可由软件修改。在MCS-51MCS-51单片机的设计中,片内单片机的设计中,片内RAMRAM区为堆栈的可用空间。上电或区为堆

53、栈的可用空间。上电或复位时,复位时,SPSP被初始化为被初始化为07H07H,既堆,既堆栈底部被确定在栈底部被确定在RAMRAM的的07H07H单元。单元。 堆栈操作过程:堆栈操作过程: 进栈进栈: : PUSH ACC PUSH ACC指令指令 (设(设 SP=07H SP=07H),), 1 1,SP+1SP+1送送SPSP,此时,此时SP=08HSP=08H; 2 2,ACCACC送送RAMRAM的的08H08H单元;单元;出栈出栈: : POP ACC POP ACC (设(设SP=08HSP=08H); 1 1,将,将RAM RAM 中中08H08H单元内容送单元内容送A A; 2

54、2,SP-1SP-1送送SP SP ,此时,此时SP=07HSP=07H。07HSP08H07HRAMx累加器A堆栈操作示意图并行端口并行端口P0-P3P0-P3:SFRSFR中的中的P0-P3P0-P3实际上就是实际上就是I/OI/O端口的数端口的数据锁存器。与据锁存器。与RAMRAM中的任意一个单元一样,中的任意一个单元一样,P0-P3P0-P3都有自都有自己的己的RAMRAM地址:地址:80H80H、90H90H、A0HA0H、B0HB0H。所以,在。所以,在5151单单片机中的输入、输出操作实际上就是个普通的片机中的输入、输出操作实际上就是个普通的RAMRAM单元操单元操作一样:如作一

55、样:如输出指令输出指令 MOV 80H,A MOV 80H,A ;将累加器中的数据送到;将累加器中的数据送到P0P0口输出口输出输入指令输入指令 MOV A,90H MOV A,90H ;将;将P1P1口的数据输入到累加器口的数据输入到累加器A A中中 既既MCS-51MCS-51的指令系统中没有专用的输入、输出(的指令系统中没有专用的输入、输出(ININ、OUTOUT)指令,而是把)指令,而是把P0-P3P0-P3作为普通的内存单元来使用。作为普通的内存单元来使用。上面的第一个例子实际上就是上面的第一个例子实际上就是MCS-51MCS-51的输出指令的输出指令;同理;同理后者是后者是MCS-

56、51MCS-51的输入指令的输入指令。串行数据缓冲器串行数据缓冲器SBUFSBUF:它是专门用来存放发送或接收的它是专门用来存放发送或接收的数据,实际上它是两个独立的寄存器。尽管在数据,实际上它是两个独立的寄存器。尽管在SFRSFR中的中的RAMRAM地址只是地址只是99H,99H,但根据指令但根据指令“ “发送发送” ”或或“ “接收接收” ”两种两种不同的操作不同的操作, ,硬件会自动的区分硬件会自动的区分, ,将数据送如对应的缓冲单将数据送如对应的缓冲单元。元。定时定时/ /计数器计数器T0T0、T1T1:无论是定时还是计数,对于无论是定时还是计数,对于MCS-MCS-5151单片机的定

57、时单片机的定时/ /计数器来说,计数器来说,都是一个都是一个“ “计数器计数器” ”在计在计数。数。这个这个“ “计数器计数器” ”是由两个是由两个8 8位寄存器(高位和低位)位寄存器(高位和低位)构成的构成的1616位计数器,分别是位计数器,分别是TH0TH0、TL0TL0(T0T0);TH1TH1、TL1TL1(T1T1)。THTH和和TLTL中的数据直接与中的数据直接与“ “定时操作定时操作” ”或或“ “计数操作计数操作” ”有关,因此在使用定时有关,因此在使用定时/ /计数器之前,要对它计数器之前,要对它进行初始化,其中就要对进行初始化,其中就要对THTH、TLTL赋初值。如:赋初值

58、。如: MOV 8CH,#01HMOV 8CH,#01H MOV 8AH,#20H MOV 8AH,#20H 大家试分析上面两条指令的作用。大家试分析上面两条指令的作用。 有关有关SFRSFR中其它寄存器的说明将相关的章节中作介绍。中其它寄存器的说明将相关的章节中作介绍。TH0TL0返回1.4.3 外部数据存储器在片内在片内RAMRAM不能满足需要时,就要外接不能满足需要时,就要外接RAMRAM。P0P0、P1P1作为作为外部外部RAMRAM的地址和数据总线。的地址和数据总线。MCS-51MCS-51对外部数据存储器的扩展能力为对外部数据存储器的扩展能力为64KB64KB。除了硬。除了硬件电路

59、外,系统主要是靠专门的指令来访问外部数据存储器。件电路外,系统主要是靠专门的指令来访问外部数据存储器。 如:如: MOV MOV R0 R0,#20H#20H ;将外部将外部RAMRAM单单元地址元地址20H20H送送R0R0寄存器寄存器 MOVX AMOVX A,R0R0 ;从外部从外部RAM20HRAM20H单单元取数据到累加器元取数据到累加器A A 这里使用了这里使用了R0R0做间址寄存器做间址寄存器, ,所以寻址范围为所以寻址范围为256KB256KB。 同理同理: : MOV DPTR,#2000H MOV DPTR,#2000H ;将外部将外部 RAM RAM 单单元的地址的元的地

60、址的20002000送送DPTRDPTR MOVX A MOVX A ,DPTR DPTR ;从外部从外部 RAM 2000H RAM 2000H单单元中取数据到元中取数据到 A A 这里使用了这里使用了1616位的寄存器位的寄存器DPTRDPTR,所以寻址范围为,所以寻址范围为64KB64KB。 返回第一章第四节内容小结1.4 MCS-511.4 MCS-51单单片机的存片机的存储储器的配置器的配置 片内片内4K4K的程序存的程序存储储器器ROMROM和和256B256B的数据存的数据存储储器器RAM;RAM;片外可以片外可以扩扩展展64K64K的的ROMROM和和RAM.RAM.从用从用户

61、编户编程的角度可以将它程的角度可以将它们们分分为为3 3个存个存储储空空间间: : 1, 1,片内片内RAM; 2,RAM; 2,片外片外RAM; 3,RAM; 3,片内片内+ +片外的片外的ROM.ROM.1.4.1 1.4.1 程序存程序存储储器器( (片内与片外片内与片外) ) 当引脚当引脚EA=1EA=1时时, ,单单片机上片机上电电复位后从片内复位后从片内ROMROM的的0000H0000H单单元运行程序元运行程序; ; 若引脚若引脚EA=0EA=0时时, ,单单片机上片机上电电复位后从片外复位后从片外ROMROM的的0000H0000H单单元运行程序元运行程序. . 当引脚当引脚E

62、A=1EA=1, ,且且PCPC值值大于大于1FFFH1FFFH时时, ,单单片机就自片机就自动转动转到片外到片外ROMROM的的2000H2000H单单元元继续继续运行程序运行程序. . 无无论论是使用片内是使用片内还还是片外的是片外的ROM,ROM,有六个有六个单单元是有特定意元是有特定意义义的的: : 1,0000H1,0000H单单元元: :上上电电, ,复位后的启复位后的启动动地址地址; ; 2,0003H2,0003H单单元元: :外部中断外部中断INT0INT0的入口地址的入口地址; ; 3,000BH3,000BH单单元元: :定定时时器器T0T0的中断入口地址的中断入口地址;

63、 ; 4,0013H4,0013H单单元元: :外部中断外部中断INT1INT1的入口地址的入口地址; ; 5,001BH5,001BH单单元元: :定定时时器器T1T1的中断入口地址的中断入口地址; ; 6,0023H6,0023H单单元元: :串行口中断的入口地址串行口中断的入口地址. . 1.4.2 1.4.2 内部数据存内部数据存储储器器RAMRAM 内部内部RAMRAM的的256B256B分分为为低低128B128B和高和高128B.128B. 其中低其中低128B128B中有中有 1, 1,工作寄存器区工作寄存器区;2,;2,位位寻寻址区址区;3,;3,便便笺笺区区. . 高高12

64、8B128B中中仅仅仅仅使用了小部分做特殊功能寄存器使用了小部分做特殊功能寄存器SFRSFR用用. . 注意注意: : 1,1,SFRSFR不同于一般的数据不同于一般的数据RAM,RAM,它不是用于存它不是用于存储储数据数据, ,而是用来存而是用来存储储和表和表 征征单单片机内部几个片机内部几个逻辑逻辑部件的特征部件的特征, ,状状态态等重要信息等重要信息. . 2, 2,在使用在使用RAMRAM时时, ,要注意字要注意字节节地址和位地址的概念地址和位地址的概念. . 3, 3,访问访问内部内部RAMRAM的指令的指令为为 MOV MOV 指令指令. .1.4.3 1.4.3 外部数据存外部数

65、据存储储器器 在硬件具在硬件具备备的条件下的条件下,MCS-51,MCS-51单单片机可以使用片机可以使用64KB64KB的外部数据存的外部数据存储储器器. .如果要如果要访问访问外部数据存外部数据存储储器器RAMRAM时时, ,只能使用只能使用间间址的址的寻寻址方式址方式. . 间间址寄存器有址寄存器有R0,R1R0,R1或或DPTR.DPTR.前者前者寻寻址范址范围为围为256KB(00H-FFH);256KB(00H-FFH);后后者者为为64KB(0000H-FFFFH).64KB(0000H-FFFFH).使用的指令是使用的指令是 MOVX.MOVX.返回第1章主菜单1.5 震荡器、

66、时钟电路和CPU的时序1.5.1 1.5.1 震荡器、与时钟电路震荡器、与时钟电路 MCS-51 MCS-51单片机的时序单片机的时序1.5.3 1.5.3 访问访问外部程序存储器外部程序存储器ROMROM的时序的时序1.5.4 1.5.4 访问访问外部数据存储器外部数据存储器RAMRAM的指令时序的指令时序单字节单字节单周期指令的时序单周期指令的时序双字节双字节单周期指令时序单周期指令时序单字节双周期单字节双周期指令的时序指令的时序继续l lMCS-51MCS-51内部有一个用于构成震内部有一个用于构成震荡器的高增益反相放大器荡器的高增益反相放大器. .在单在单片机引脚的片机引脚的XTAL1

67、XTAL1和和XTAL2XTAL2分分别是此放大器的输入和输出端别是此放大器的输入和输出端. .与作为反馈元件的晶体或陶瓷与作为反馈元件的晶体或陶瓷谐振器一起构成了一个自激震谐振器一起构成了一个自激震荡器荡器( (见右上图见右上图). ). 如果使用外部震荡器信号如果使用外部震荡器信号, ,其外来的信号加在其外来的信号加在XTAL1XTAL1的引的引脚上脚上( (见右下图见右下图). ).XTAL1XTAL2XTAL2XTAL1NC外时钟使用外时钟时的电路连接1.5.1 震荡器、与时钟电路:返回20P20P1.5.2 MCS-51单片机的时序时钟周期时钟周期 ,T: ,T:时序中最小的时间单位

68、时序中最小的时间单位. .其值由外接晶体或外其值由外接晶体或外输入时钟来决定,其值为石英振荡器频率的倒数。输入时钟来决定,其值为石英振荡器频率的倒数。 例如例如: :在单片机外接在单片机外接1MH1MH的晶体的晶体, ,则单片机的系统时钟则单片机的系统时钟的频率为的频率为1M, 1M, 时钟周期为时钟周期为1us.1us.机器周期机器周期: :完成特定功能所需要的时间完成特定功能所需要的时间, ,在在MCS-51MCS-51单片机中单片机中机器周期由机器周期由1212个时钟周期构成个时钟周期构成, ,并分为并分为6 6个状态个状态(S1-S6),(S1-S6),每每个状态又分为个状态又分为P1

69、P1和和P2P2两拍两拍. .这样一个机器周期的这样一个机器周期的1212个震荡个震荡周期可以表示为周期可以表示为: : S1P1,S1P2,S2P1,S2P2,S3P1,S3P2 S6P1,S6P2S1P1,S1P2,S2P1,S2P2,S3P1,S3P2 S6P1,S6P2 将将1212个震荡周期用个震荡周期用6 6个状态和个状态和2 2拍来替代。拍来替代。TS1S1S6S5S4S3机器周期指令周期指令周期: :这是时序图中最大的时间单位这是时序图中最大的时间单位, ,既执行一条指令既执行一条指令所需要的时间所需要的时间. .在在MCS-51MCS-51系统中系统中, ,不同的指令它所包含

70、的机不同的指令它所包含的机器周期数不同器周期数不同. .它们分别是它们分别是: : 1, 1,单机器周期指令单机器周期指令; 2,; 2,双机器周期指令双机器周期指令; 3,; 3,四机器周期指令四机器周期指令 12M12M的晶体震荡器的晶体震荡器, ,那么那么: : 一个机器周期为一个机器周期为1us,1us, 两个机器周期为两个机器周期为2us,2us, 四个机器周期为四个机器周期为4us.4us. 可见一条可见一条指令的运算速度指令的运算速度与它所包含的与它所包含的机器周期数机器周期数有有关关. .机器周期数越少机器周期数越少, ,执行的速度就越快执行的速度就越快. .在在MCS-51M

71、CS-51单片机单片机的指令系统中的指令系统中, ,除了乘、除法指令为四个机器周期外除了乘、除法指令为四个机器周期外, ,其余其余都是单周期和双周期指令都是单周期和双周期指令. . 返回指令的字节数与指令周期之间的关系:指令的字节数与指令周期之间的关系:在在MCS-51MCS-51单片机的指令系统中有:单片机的指令系统中有:单字节;单字节;双字节;双字节;三字节指令。三字节指令。 在在MCS-51MCS-51的的111111条指令中条指令中, ,可以分为六种基本的时序可以分为六种基本的时序: : 1,1,单字节单周期指令单字节单周期指令; 4,; 4,双字节单周期指令双字节单周期指令; ; 2

72、, 2,单字节双周期指令单字节双周期指令; 5,; 5,双字节双周期指令双字节双周期指令; ; 3, 3,单字节四周期指令单字节四周期指令; 6,; 6,三字节双周期指令三字节双周期指令. . 指令特点指令特点: :在程序存储器在程序存储器ROMROM中仅占一个存储单元。中仅占一个存储单元。 在在ALEALE第一次有效第一次有效(S2P1)(S2P1)时时, ,从从ROMROM中读取指令的操作码中读取指令的操作码, ,送入指令寄存器送入指令寄存器IRIR中中. .并译码执行并译码执行, ,在在ALEALE第二次有效时第二次有效时, ,封锁封锁PCPC加一加一, ,使第二次读数无效使第二次读数无

73、效. .可见可见: : 1, ALE 1, ALE信号对应这从信号对应这从ROMROM中读指令中读指令, ,所以在一个机器周期所以在一个机器周期中中CPUCPU可以读两次指令可以读两次指令; ; 2, 2,对于单字节单周期的指令对于单字节单周期的指令,CPU,CPU通过译码后封死通过译码后封死PC,PC,实际实际上指令的后半部不做任何工作上指令的后半部不做任何工作. .单字节单周期指令的时序:机器周期读操作码一读操作无效ALE返回S1S2S6S5S4S3 指令特点指令特点: :一条指令长度为两个字节,并存储在一条指令长度为两个字节,并存储在ROMROM相邻的相邻的两个单元中。要想完整的将这样的

74、指令执行完两个单元中。要想完整的将这样的指令执行完, ,必须从必须从ROMROM中读两次操作码中读两次操作码. . 在在ALEALE第一次有效时第一次有效时,CPU ,CPU 从从ROMROM的的n n单元中取出指令的单元中取出指令的第一个字节第一个字节OP1-1,OP1-1,并送入并送入IRIR译码译码, ,通过译码通过译码CPUCPU知道这是一知道这是一条双字节指令条双字节指令, ,所以使所以使PCPC加一加一, ,并在并在ALEALE第二次有效时第二次有效时, ,从从ROMROM的的n+1n+1单元取出指令的第二个字节单元取出指令的第二个字节OP1-2OP1-2送入送入IRIR进行译进行

75、译码码, ,并产生对应的操作并产生对应的操作. .最后在最后在S6P2S6P2时完成本条指令的运行时完成本条指令的运行. .S1S2S6S5S4S3机器周期读操作码一读操作码二OP1-2OP1-1n+1n程序ROMPC双字节单周期指令时序ALE返回指令特点指令特点: :单字节单字节, , 需要两个机器周期运行需要两个机器周期运行. .如如: : INC DPTRINC DPTR DPLDPL加一加一, ,如果如果DPLDPL加一有进位则还要进行第二步对加一有进位则还要进行第二步对DPHDPH加一加一. . 在指令周期的第一个在指令周期的第一个ALEALE时时, ,将将ROMROM中的操作码中的

76、操作码OPOP取出取出, ,经经IRIR译码后得知为单字节双周期指令译码后得知为单字节双周期指令, ,所以一面执行该指令所以一面执行该指令, ,同时封锁后面三次同时封锁后面三次ALEALE有效时的有效时的PC+1,PC+1,在第二个机器周期的在第二个机器周期的S6P2S6P2时时, ,完成操作完成操作. .S1S2S6S5S4S3机器周期1读操作码读无效S1S2S6S5S4S3读无效读无效机器周期2单字节双周期指令的时序ALE返回设设: :单片机使用片外单片机使用片外ROM,ROM,且要执行的是一条且要执行的是一条 : : movc a,a+dptrmovc a,a+dptr指令指令. .(设

77、(设a+dptr=2000Ha+dptr=2000H) /PSEN P2口口MCS- 51 P0口口 ALED7D0CP/CSA15A8 64K ROMA7A0 D0D7 A15-A8(PC)A7-A0OPA7-A0常数/PsenP2口P0 口1.5.3 访问外部程序存储器ROM的时序:S1S2S6S5S4S3ALE A15-A8 (DPTR+A)返回前一次74LS3731,1,在在S2P1S2P1时刻时刻, ,P2P2口口输出外部输出外部ROMROM的高八位地址的高八位地址A15-A8,A15-A8,P0P0口口输出低八位地址输出低八位地址A7-A0, A7-A0, 这时地址是由程序计数器这

78、时地址是由程序计数器PCPC提提供的供的ROMROM中的指令地址中的指令地址; ;2,2,在在ALEALE的下降沿的下降沿,P0,P0口的数据口的数据( (低八位地址低八位地址) )被锁存到被锁存到74LS37374LS373中中. .3,3,在在S3P2S3P2到到S4P1S4P1期间期间,/psen,/psen变低电平时变低电平时, ,外部程序外部程序ROMROM被被选中选中, , 数据输出端的三态门被打开数据输出端的三态门被打开, ,被选中单元中的指令被选中单元中的指令movcmovc送到送到P0P0口上口上, ,且在且在S4P2S4P2时指令经时指令经P0P0口送至口送至CPUCPU的

79、的IRIR中中. .4,CPU4,CPU对指令译码后对指令译码后, ,在在S4P2S4P2时进行常数地址计算并由时进行常数地址计算并由P0P0、P2P2口输出口输出. .5,5,在在S5P2S5P2时时,ALE,ALE将常数地址的低八位锁存将常数地址的低八位锁存6,6,在在S6P1S6P1时时, ,外部外部ROMROM被再次选种打开被再次选种打开, ,按照单片机所提供按照单片机所提供的的1616位常数地址位常数地址, ,将外部将外部ROMROM中的常数经中的常数经P0P0口在口在S6P2S6P2时时刻送入累加器刻送入累加器A.A.返回上一页返回设外部设外部RAM2000HRAM2000H单元中

80、有一个数单元中有一个数x x, ,且且DPTRDPTR中已存有该数地址中已存有该数地址2000H.2000H.则则CPUCPU 执行外部执行外部ROMROM中的指令中的指令: :MOVX A,DPTR ;MOVX A,DPTR ;将外将外RAMRAM的的x x送送A A /WR /RD P2口MCS-51 P1口 ALED7D0/CP/WR/RDA15A8 A7A064KRAMD0D7S1S2S6S5S4S3S1S2S6S5S4S3ALEPsenA15-A8(PC)A15-A8(DPH)A7-A0指令A7-A0数据RDP2口P0口选中外部RAM1.5.4 1.5.4 读外部数据存储器读外部数据

81、存储器RAMRAM的的指令时序指令时序返回前一次1, 1, 在在S2P2S2P2时时, ,ALEALE的第一个下降沿将的第一个下降沿将P0P0口输出的外程序口输出的外程序ROMROM的低八位地址锁存到的低八位地址锁存到74LS37374LS373锁存器中;锁存器中;2, 2, 在在S3P2S3P2的的PsenPsen为低电平时为低电平时, ,选中外选中外ROM,ROM,并根据单片机并根据单片机P0P0、P2P2口输出的口输出的1616位地址选中位地址选中movxmovx指令指令( (单字节单字节), ),通过通过P0P0口送至单片机内部口送至单片机内部IRIR中译码中译码. .经译码后产生下列

82、的一系经译码后产生下列的一系列操作;列操作;3, CPU3, CPU将将DPTRDPTR中的高中的高8 8位位(20H)(20H)送送P2P2口输出口输出, ,低八位低八位(00H)(00H)经经P0P0口输出口输出, ,节在节在S5P1S5P1时时ALEALE第二次下降沿时第二次下降沿时, ,将将P0P0口的低八位地址锁存;口的低八位地址锁存;4, 4, 在第二个机器周期的在第二个机器周期的S1-S3S1-S3中单片机输出中单片机输出/RD/RD信号(低信号(低电平)电平), ,选中外部选中外部RAM,RAM,并根据单片机提供的并根据单片机提供的2000H 2000H 这这1616位地址中取

83、出数据位地址中取出数据x.x.5, CPU5, CPU在在S2-S3S2-S3期间期间, ,将外部将外部RAM2000HRAM2000H单元送到单元送到P0P0口上口上的数据送入累加器的数据送入累加器A A中中. . 上一页上述过程可以分成两个指行的阶段上述过程可以分成两个指行的阶段: : 1, 1, 根据根据PCPC所指定的程序存储器的地址所指定的程序存储器的地址, ,将将movxmovx指令从片指令从片 外外ROMROM中取出中取出; ;2, 2, 经译码后将经译码后将DPTRDPTR提供的外数据存储器提供的外数据存储器RAMRAM中的数据中的数据 地址取出数据地址取出数据, ,经经P0P

84、0口送累加器口送累加器A.A. 在第一阶段在第一阶段CPUCPU产生产生/Psen/Psen信号用来选通信号用来选通外部程序存外部程序存储器储器ROMROM; ;在第二阶段在第二阶段CPUCPU输出输出/RD/RD信号信号( (低电平低电平), ),用来选通并读用来选通并读取外部取外部数据存储器数据存储器RAMRAM的数据的数据. .返回1.6 输入输出端口 在在MCS-51MCS-51单片机的四个端口都是具有输出锁存功单片机的四个端口都是具有输出锁存功能的双向端口能的双向端口, ,这些锁存器的位置都在这些锁存器的位置都在SFRSFR中中, ,其地址分其地址分别为别为:80H:80H、90H9

85、0H、A0H A0H 、B0H.B0H.出于系统的考虑出于系统的考虑, ,在硬件在硬件设计上对每一个端口都有不同的要求设计上对每一个端口都有不同的要求, ,所以每一个端口所以每一个端口又具有不同的特点又具有不同的特点. .1.6.1 1.6.1 P0P0口口P0P0口的口的位结构图位结构图P0P0口的口的工作原理工作原理1.6.2 1.6.2 P1P1口口1.6.3 1.6.3 P2P2口口1.6.4 1.6.4 P3P3口口1.6.5 1.6.5 并行端口在使用时应并行端口在使用时应 注意的几个问题注意的几个问题单片机与继电器等单片机与继电器等大电流负载大电流负载的接口的接口继续MCS-51

86、逻辑图1.6.1 P0口:特点特点:“ :“通用数据通用数据I/OI/O端口端口” ”和和“ “地址地址、数据复用总线、数据复用总线” ”端口端口. . 1 1,在作为通用数据,在作为通用数据I/OI/O端口时端口时, ,具有较强的驱动具有较强的驱动能力能力(8(8个个TTLTTL负载负载),),与与MOSMOS负载连接时负载连接时, ,需要外接一需要外接一个上拉电阻。个上拉电阻。 2 2,作为,作为“地址、地址、数据复用总线数据复用总线”使用时使用时,P0,P0口口首先输出外部存储器的低八位地址首先输出外部存储器的低八位地址, ,然后再变为数然后再变为数据总线进行数据的输入或输出据总线进行数

87、据的输入或输出. .此时,此时,P0P0口不能再口不能再作为通用作为通用I/OI/O口。口。返回P0P0口的位结构图口的位结构图D Q 锁存器CL /Q引脚Vcc地址/数据1/0控制(=0时)读锁存器读锁存器读引脚内部总线写锁存器MUX (控制=0时)硬件组成:1,一个输出锁存器(D型触发器);2 2,二个,二个三态门(控制读引脚或读锁存器)三态门(控制读引脚或读锁存器);3 3,与门和,与门和MUXMUX等元件组成的等元件组成的输出控制电路;输出控制电路;4 4,一对场效应晶体管一对场效应晶体管FETFET构成的输出电路构成的输出电路. .Vcc返回返回前一次1,P0口的I/O操作;2,P0

88、口的总线方式1,P0口的I/O操作(通用I/O端口)在在P0P0口作为通用口作为通用I/OI/O端口时端口时, ,控制电路中的控制电路中的“ “控制控制” ”为为“0”“0”电平电平, ,多路开关多路开关MUXMUX接入下方的锁存器的接入下方的锁存器的/Q/Q端。端。 由于与门的一个输入端为由于与门的一个输入端为“0”,“0”,所以它使上端的所以它使上端的FETFET截止截止. .这就是这就是P0P0口在做口在做I/OI/O口时输出为口时输出为“ “漏极开路漏极开路” ”的结构的结构原因原因. .输出操作输出操作: :在执行以口为目标的指令时在执行以口为目标的指令时, ,数据送到锁存器的数据送

89、到锁存器的“D”“D”端端, ,经经“/Q”“/Q”端送场效管应输出极端送场效管应输出极. .如如: :送送“1”“1”时时,/Q=“0”,/Q=“0”,使下端的使下端的FETFET截止截止. .这样出现输出极的两个这样出现输出极的两个FETFET全部截止全部截止. .在这种情况下必须在端口线上外加上拉电阻在这种情况下必须在端口线上外加上拉电阻. .这这样在上拉电阻的作用下样在上拉电阻的作用下, ,使端口为高电平使端口为高电平. .同理同理, ,若总线向若总线向口送口送“0”“0”时时, ,锁存器的锁存器的/Q=1,/Q=1,使下端的使下端的FETFET导通导通( (上面的上面的FETFET仍

90、然截止仍然截止), ),这样端口呈现这样端口呈现“0”“0”电平电平. .返回结构图输入操作(读引脚,读锁存,输入前写一)输入操作(读引脚,读锁存,输入前写一)a,a,读引脚读引脚: :读外部送到端口引脚的电平读外部送到端口引脚的电平, ,即即通常所说的输入操作通常所说的输入操作(如:(如:MOV A,P0MOV A,P0). .此时此时, ,单片机控制单片机控制“ “读引脚读引脚” ”的三态门的三态门, ,使引脚处的外部电平经三态门送入内部总线使引脚处的外部电平经三态门送入内部总线. .b,b,读锁存器读锁存器: :将进行将进行读锁存器并进行处理,最后再写回锁存器读锁存器并进行处理,最后再写

91、回锁存器的操作称之为:的操作称之为: “ “读读修改修改写写”操作。操作。在这种情况下在这种情况下, , 读入的数据不是来自引脚,而是端口内部的锁存器的内容。读入的数据不是来自引脚,而是端口内部的锁存器的内容。 当前面完成一次端口的输出后,要再将前面输入的状态当前面完成一次端口的输出后,要再将前面输入的状态取回来,进行再处理,然后重新输出,在取回来,进行再处理,然后重新输出,在MCS-51MCS-51的指令系的指令系统中这种统中这种“ “读读修改修改写写” ”的操作有的操作有: : ORL ORL 、XRL XRL 、JBC JBC 、CPL CPL 、INC INC 、DEC DEC 、DJ

92、NZ DJNZ 、MOV Px,y MOV Px,y 、 CLR Px,y CLR Px,y和和SET Px,ySET Px,y。 如:如: ORL P0,A ;ORL P0,A ;P0 A P0P0 A P0 返回结构图P0. Xc c,输入时应先写,输入时应先写“1”“1”:解决的方法就是让下端的解决的方法就是让下端的FETFET截止截止, ,既事先向端口写一个既事先向端口写一个“1”.“1”.请注意下面的一段程序:请注意下面的一段程序: MOV AMOV A,#0FFH#0FFH;0FFH0FFH送累加器送累加器A A MOV P0 MOV P0,A A ;向向P0P0口口“ “写写1”

93、1” MOV A,P0 MOV A,P0 ;从从P0P0口输入数据到口输入数据到A A你能正确的分析出指令的操作吗?你能正确的分析出指令的操作吗?返回结构图2,P0口的总线方式(系统使用外存储器时)控制电路的控制电路的“ “控制控制”=1,”=1,此时与门打开此时与门打开,MUX,MUX接向接向“ “地址地址/ /数数据据” ”信号信号. .在这种情况下在这种情况下, ,输出极的两个输出极的两个FETFET都处于正常的都处于正常的工作状态工作状态 。访问外部存储器的指令访问外部存储器的指令movxmovx、movcmovc ,就是使用,就是使用P0P0口来输口来输出外部存储器的低八位地址和输入

94、、输出存储器的数据。出外部存储器的低八位地址和输入、输出存储器的数据。可以从:可以从:访问外部程序存储器访问外部程序存储器ROMROM的时序的时序; 读外部数据存储器读外部数据存储器RAMRAM的指令时序的指令时序中来清楚的观察中来清楚的观察P0P0口作口作为为“地址地址/ /数据复用数据复用”总线的工作特点。总线的工作特点。在进行单片机的硬件系统的设计中,如果使用了外部存储在进行单片机的硬件系统的设计中,如果使用了外部存储器(或使用器(或使用movxmovx指令来访问外部接口电路)时,指令来访问外部接口电路)时,P0P0口成为口成为整个系统的地址整个系统的地址/ /数据复用总线。换句话,数据

95、复用总线。换句话,P0P0口不能再作口不能再作为通用的为通用的I/OI/O端口的形式直接与外部连接。端口的形式直接与外部连接。返回结构图1,1, 做通用数据做通用数据I/OI/O端口时端口时, ,输出级上端的输出级上端的FETFET处于截止状态处于截止状态, ,所所以与以与MOSMOS器件连接时器件连接时, ,必须接必须接“ “上拉电阻上拉电阻”, ”,否则不能正确否则不能正确的输出高电平的输出高电平; ;2,2,在输入操作前在输入操作前, ,为了保证输入正确,必须先向端口为了保证输入正确,必须先向端口“ “写写1”;1”;3,3,“ “读引脚读引脚” ”与与“ “读锁存器读锁存器” ”是不同

96、的两个数据通道。凡是是不同的两个数据通道。凡是“ “读读修改修改写写” ” 的操作的操作,CPU,CPU读的都是端口锁存器中的数据。读的都是端口锁存器中的数据。4,4,为了提高电路的可靠性为了提高电路的可靠性, ,端口引脚不要直接与三极管一类的端口引脚不要直接与三极管一类的器件直接连接器件直接连接, ,应加隔离电路或与三极管之间加一个电阻应加隔离电路或与三极管之间加一个电阻. .5,5,在总线方式时在总线方式时,P0,P0口不能再做通用的口不能再做通用的I/OI/O端口。它分时输出端口。它分时输出地址地址、数据总线的信息(此时引脚不用外接上拉电阻)。数据总线的信息(此时引脚不用外接上拉电阻)。

97、返回返回结构图P0口特点小结:特点:特点:单纯的通用单纯的通用I/OI/O端口端口, ,负载能力为负载能力为3 3个个TTLTTL输入。与输入。与P0P0口的口的区别在于内部具有上拉电阻,所以输出时不用外接上拉电阻。区别在于内部具有上拉电阻,所以输出时不用外接上拉电阻。1.6.2 P1口的位结构图D Q 锁存器CL /Q引脚Vcc读锁存器读引脚内部总线写锁存器内部上拉电阻返回返回前一次1.6.3 P21.6.3 P2口口 特点:特点: “ “通用数据通用数据I/OI/O端口端口” ”和和“ “高八位地址高八位地址总线总线” ”端口端口D Q 锁存器CL /Q引脚Vcc地址/数据1/0控制读锁存

98、器读引脚内部总线写锁存器MUX (地址/数据=0)内部上拉电阻返回上一次与与P0P0口一样,口一样,P2P2口在系统使用外部存储器时,做高八位口在系统使用外部存储器时,做高八位的地址总线。的地址总线。应当注意的是:应当注意的是:仅使用仅使用外部数据存储器外部数据存储器时,时,P2P2口分两种情口分两种情况:况: 1 1,仅仅使用,仅仅使用256B256B的外部的外部RAMRAM时,既使用时,既使用movx a,r0movx a,r0指指令访问外部令访问外部RAMRAM,此时用,此时用8 8位的寄存器位的寄存器R0R0或或R1R1作间址寄作间址寄存器,这时存器,这时P2P2口无用,所以在这种情况

99、下,口无用,所以在这种情况下,P2P2口仍然可口仍然可以做通用以做通用I/OI/O端口。端口。 2 2,如果访问外部,如果访问外部ROMROM或使用大于或使用大于256B256BRAMRAM时,时,P2P2口必口必须作为外存储器的高八位地址总线。须作为外存储器的高八位地址总线。 如:如:movx amovx a,dptr dptr ;访问外部数据存储器;访问外部数据存储器 movc a movc a,a+dptr a+dptr ;访问外部程序存储器;访问外部程序存储器 这里使用了这里使用了1616位的寄存器位的寄存器DPTRDPTR上一页返回1.6.4 P31.6.4 P3口口 特点:特点:通

100、用通用I/OI/O端口端口、多用途端口、多用途端口在多用途情况下,在多用途情况下,P3P3口分别作为串行口口分别作为串行口、外中断输入、外部计数输入、外中断输入、外部计数输入和系统扩展时使用的和系统扩展时使用的WRWR和和RDRD信号的端口。在这种情况下,锁存器信号的端口。在这种情况下,锁存器QQ端为端为“1”“1”电平以保证与门是打开的。电平以保证与门是打开的。在通用在通用I/OI/O模式下,模式下,“ “替代输出功能替代输出功能” ”端为端为“1”“1”电平,以保证与门打电平,以保证与门打开。开。D Q 锁存器CL /Q引脚替代输出功能读锁存器读引脚内部总线写锁存器MUX (地址/数据=0

101、)Vcc返回1.6.5 1.6.5 并行端口在使用时应注意的几个问题并行端口在使用时应注意的几个问题l l“ “拉电流拉电流” ”还是还是“ “灌电流灌电流”-”-与大电流负载与大电流负载的连接的连接 ( (我们以美国我们以美国ATMELATMEL公司生产的公司生产的AT8951AT8951为例为例) ) 1,1, 使用灌电流的方式使用灌电流的方式与电流较大的负载直与电流较大的负载直接连接时接连接时, , 端口可以吸收约端口可以吸收约20mA20mA的电流而保证的电流而保证端口电平不高于端口电平不高于0.45V0.45V(见右上图)。(见右上图)。 2, 2,采用拉电流方式采用拉电流方式连接负

102、载时,连接负载时,AT89C51AT89C51所所能提供能提供“ “拉电流拉电流” ”仅仅为仅仅为8080AA,否则输出的高,否则输出的高电平会急剧下降电平会急剧下降. .如果我们采用右下图的方式,如果我们采用右下图的方式,向端口输出一个高电平去点亮向端口输出一个高电平去点亮LEDLED,会发现,会发现,端口输出的电平不是端口输出的电平不是“1”“1”而是而是“0”“0”! 当然,不是所有的单片机都是这样,当然,不是所有的单片机都是这样,PICPIC单单片机就可以提供片机就可以提供30mA30mA的拉电流和灌电流。单对的拉电流和灌电流。单对于大多数于大多数ICIC电路,最好还是使用电路,最好还

103、是使用“ “灌电流灌电流” ”去去推动负载。推动负载。VddVddVdd灌电流方式输出”0”点亮LED拉电流方式输出高电平点亮LED返回单片机与继电器等大电流负载的接口单片机与继电器等大电流负载的接口我们知道我们知道:AT89C51:AT89C51的端口可以吸的端口可以吸收约收约20mA20mA的电流的电流. .对于继电器等对于继电器等大于大于20mA20mA的负载的负载, ,单片机可以采单片机可以采用右图的接法用右图的接法, ,用一个三极管来承用一个三极管来承担负载所需的大电流担负载所需的大电流. .若于负载电流易造成干扰单片机若于负载电流易造成干扰单片机的环境的环境, ,应采用右下图应采用

104、右下图” ”光电隔离光电隔离” ”的方式的方式. .其中其中: : A A 、 B B两处没有两处没有 任何电的联系任何电的联系. .JVccVdd负载VccAB返回1.7 MCS-51单片机的定时/计数器定时定时/ /计数器计数器工作方式与原理工作方式与原理: :1.7.1 1.7.1 定时定时/ /计数器的计数器的四种工作模式四种工作模式1.7.2 MCS-511.7.2 MCS-51定时定时/ /计数器的计数器的控制和状态寄存器控制和状态寄存器1,1,模式模式0 0: :既既1313位计数器模式位计数器模式2,2,模式一模式一 : :既既1616位计数器模式位计数器模式3,3,模式二模式

105、二 : : 自动重装初值模式自动重装初值模式1,1,模式控制寄存器模式控制寄存器TMODTMOD (SFR (SFR的地址的地址:89H):89H)2,2,控制寄存器控制寄存器 TCON TCON (SFR(SFR地址地址:88H):88H)4,4,模式三模式三: 组合扩展模式组合扩展模式继续定时/计数器工作方式与原理: 定时/计数器是一种应用非常广泛的逻辑电路,它可以完成两种不同的方式工作-“定时”、“计数”。定时定时/ /计数器工作方式与原理计数器工作方式与原理: :1,1,定时定时: :产生一个标准的时间间隔产生一个标准的时间间隔; ;如如20mS,100mS20mS,100mS或或10

106、00mS1000mS等等. .单片机使用这种方式可以产生一个符合单片机使用这种方式可以产生一个符合某一要求的脉冲方波某一要求的脉冲方波( (如下图如下图) )。2,2,计数计数: :对外部的事件对外部的事件( (脉冲脉冲) )进行统计进行统计. .很明显外部很明显外部事件的发生是随机的事件的发生是随机的, ,单片机不可能预知外部事件单片机不可能预知外部事件何时发生何时发生, ,但可以进行统计但可以进行统计, ,当达到所要求的数值当达到所要求的数值时时, ,单片机进行相应的操作。单片机进行相应的操作。20mS40mS3 3,定时定时/ /计数器的工作原理:用一个简单的框图构造计数器的工作原理:用

107、一个简单的框图构造它的模型它的模型 :N N位计数器构成了电路的核心位计数器构成了电路的核心。定时。定时, ,计计数两种方式的区别在于计数器的脉冲来源数两种方式的区别在于计数器的脉冲来源. .初值寄存初值寄存器是用来设定器是用来设定“定时定时/ /计数的具体参数计数的具体参数” (1 1):何时控制启动计数?):何时控制启动计数? (2 2):如何控制定时还是计数?):如何控制定时还是计数? (3 3):如何控制定时):如何控制定时/ /计数的长短?计数的长短?N位+1计数器TFN位初值寄存器系统内部时钟fosc启动控制TR外部脉冲定时/计数控制C/T计数器溢出中断信号返回计数脉冲CP1.7.

108、1 定时/计数器的四种工作模式1,1,模式模式0:0:1313位计数器模式。位计数器模式。 当计数器计满为全当计数器计满为全”1”1”时时, ,再来一个计数脉再来一个计数脉冲时冲时, ,就产生一个就产生一个“溢出中断信号溢出中断信号”TF1=1.”TF1=1.TH1 TL1震荡器1/12(8位)(低5位)TF1中断启动控制T1 引脚TR1GATEINT1高三位弃用C/T=0C/T=1返回13位加1计数器GATE=0GATE=0时时, ,TR1=1TR1=1开始定时开始定时/ /计数计数; ; GATE=1GATE=1时时( (门控方式门控方式), TR=1), TR=1且且INT1=1INT1

109、=1时时, ,开始工作开始工作. .此种此种方式主要用于测量加在方式主要用于测量加在INT1INT1脚上一个正脉冲的脉宽脚上一个正脉冲的脉宽. . TL1TH1震荡器1/12(8位)(8位)TF1中断启动控制T1 引脚TR1GATEINT1C/T=0C/T=12,2,模式模式1 :1 :既既1616位计数器模式位计数器模式( (以以T1T1为例为例).).返回16位加1计数器返回上一次由由TL1TL1做计数器做计数器,TH1,TH1做初值寄存器做初值寄存器. . 工作前工作前TL1,TH1TL1,TH1分别分别预置相同的初值预置相同的初值. .计数器计数器TL1TL1工作时工作时, ,每当溢出

110、产生中断的每当溢出产生中断的同时同时, , 将将TH1TH1中的初值自动重装中的初值自动重装. .此模式主要用于做串行口此模式主要用于做串行口波特率发生器使用波特率发生器使用. .TL1(8位)TH1(8位)震荡器1/12TF1中断控制T1 引脚TR1GATEINT1C/T=1C/T=03,3,模式模式2 2 : : 自动重装初值模式自动重装初值模式返回8位加1计数器8位初值寄存器在这种模式中在这种模式中, ,单片机将单片机将T0T0和和T1T1重新进行重新进行“ “拆分、组合拆分、组合”. ”.将将T0T0变为由变为由TH0,TL0TH0,TL0组成的两个独立的组成的两个独立的8 8位定时位

111、定时/ /计数器计数器. .TL0震荡器1/12TF0中断控制T0 引脚TR0GATEINT0C/T=0C/T=1TH0TF1中断控制TR1Fosc/12在模式3时的模式中定时器T0的结构图4,4,模式模式3 3 组合扩展模式组合扩展模式注意注意: :模式模式3 3时时T0T0(TH0,TL0TH0,TL0)及)及T1T1的各自特点的各自特点: :1,1, TH0TH0计数脉冲来自内部计数脉冲来自内部fosc,fosc,所以它只能处于所以它只能处于” ”定时定时” ”方式方式; ;2, TH02, TH0分别借用了定时器分别借用了定时器T1T1的的TR1TR1和和TF1TF1来为自己工作来为自

112、己工作, ,使使TH0TH0能象能象TL0TL0那样用那样用TR1TR1启动定时启动定时, ,并用并用TF1TF1来作为来作为TH0TH0的的溢出中断的标志溢出中断的标志; ;3,3,由于由于T1T1缺少了启动控制信号缺少了启动控制信号TR1TR1和溢出中断标志和溢出中断标志TR1,TR1,那么那么在模式在模式3 3时时,T1,T1是如何工作?是如何工作? 没有溢出中断标志没有溢出中断标志TF1,TF1,则则T1T1就不用中断方式工作就不用中断方式工作( (实际上实际上连查询也不行连查询也不行); );没有启动控制信号没有启动控制信号TR1,TR1,可以让它在模式可以让它在模式3 3之前就开始

113、工作之前就开始工作, ,并且让它事先设定为自动重装模式并且让它事先设定为自动重装模式. .4, 4, 模式模式3 3就是将单片机原有的就是将单片机原有的T0,T1T0,T1两个计数器变成三个独立两个计数器变成三个独立的计数器的计数器, ,其中其中T1T1要事先设定为模式要事先设定为模式2(2(串行口的波特率发串行口的波特率发生器生器) )并启动起来。并启动起来。返回结构图返回在模式3时T0,T1的电路结构图TL0八位定时/计数器TH0八位定时器T1(TL1,TH1)自动重装模式TF0TF1将T0分解为两个计数器TL0和TH0,其中TH0借用了T1的TR1和TF1T1已无TR1,TF1功能,建议

114、T1做波特率发生器TH0,TL0和T1三个计数器返回结构图返回定时/计数器4种模式比较模模 式式计数模计数模M M 最大定时时间最大定时时间 TmaxTmax模式模式0 01313位位Tmax=8192Tmax=8192*1*1 =8.192ms=8.192ms模式模式1 11616位位Tmax=65536Tmax=65536* * 1 1 =65.536ms=65.536ms模式模式2 2,3 38 8位位Tmax=256Tmax=256*1*1 =0.256ms=0.256ms模模 式式计数模计数模M M 最大计数值最大计数值模式模式0 01313位位Tmax=8192Tmax=8192模

115、式模式1 11616位位Tmax=65536Tmax=65536模式模式2 2,3 38 8位位Tmax=256Tmax=256T=(M-TC)t 其中,T: 定时时间,M: 计数器的模,TC:计数初值,t:计数器计数脉冲的周期(t = fosc/12)。1.7.2 MCS-51定时/计数器的控制和状态寄存器GATE GATE 选通门选通门:GATE=0:GATE=0时时, ,只要只要TR=1,TR=1,计数器就开始工作计数器就开始工作. . GATE=1GATE=1时时, ,只有只有INTINT脚和脚和TRTR同时为同时为“1”“1”时时, ,计数器才开始计数器才开始工作工作. .主要用于测

116、量主要用于测量INTINT脚上高电平脉冲的宽度脚上高电平脉冲的宽度. .C/T C/T 计数计数、定时方式选择位定时方式选择位: :C/T=0C/T=0时时, ,计数方式计数方式. .既计数器既计数器的计数脉冲来自的计数脉冲来自T0T0或或T1T1引脚的外部事件引脚的外部事件.C/T=1.C/T=1时时: :定时方定时方式式, ,计数脉冲来自内部震荡频率计数脉冲来自内部震荡频率foscfosc的的1212分频分频. .M1 M1 、M0 M0 模式选择模式选择: :分别对应四种模式分别对应四种模式. .GATEGATEC/TC/TM1M1M0M0GATEGATEC/TC/TM1M1M0M0定时

117、/计数器1定时/计数器01,1,模式控制寄存器模式控制寄存器TMOD (SFRTMOD (SFR的地址的地址:89H):89H)返回结构图TF1,TF0 TF1,TF0 定时器定时器T1,T0T1,T0的溢出标志的溢出标志: :计数器溢出时硬件自动计数器溢出时硬件自动置位即置位即TF=1,TF=1,进入中断后再由硬件自动清除进入中断后再由硬件自动清除; ;TR1.TR0 TR1.TR0 计数器计数器T1,T0T1,T0的控制位的控制位: :由软件置位由软件置位( (计数器开始计数器开始工作工作) )或清零或清零( (计数器停止工作计数器停止工作). ).IE1,IE0 IE1,IE0 外部中断

118、外部中断INT1,INT0INT1,INT0的请求标志的请求标志: :当单片机检测到当单片机检测到INTINT引脚上有下降沿时引脚上有下降沿时,IE=1,IE=1申请中断申请中断. .进入中断服务程序进入中断服务程序时时, ,硬件自动清除硬件自动清除IEIE标志标志. .IT1,IT0 IT1,IT0 外中断触发类型控制外中断触发类型控制: :IT=1IT=1时时, ,外中断信号的下降外中断信号的下降沿出发沿出发IEIE标志标志,IT=0,IT=0时时, ,外中断信号的低电平引发外中断信号的低电平引发IEIE标志标志. . ( (关于中断部分将在后面相关章节中再做详细介绍关于中断部分将在后面相

119、关章节中再做详细介绍) )TF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT02,控制寄存器TCON (SFR地址:88H)返回返回前一次1.8 MCS-511.8 MCS-51单片机的串行接口单片机的串行接口单片机系统中的串行接口及特点串行通讯应用示意图关于串行通讯中的基本概念1.8.1 1.8.1 数据缓冲寄存器数据缓冲寄存器 SBUFSBUF1.8.2 1.8.2 串行口控制寄存器串行口控制寄存器SCONSCON1.8.3 1.8.3 串行口的串行口的模式模式0 0模式模式0 0 电路框图电路框图模式模式0 0的的工作原理工作原理(发送)(发送

120、)串行口模式串行口模式0 0的的时序信号时序信号(发送)(发送)模式模式0 0的工作原理的工作原理(接收)(接收)模式模式0 0的的时序信号(接收)时序信号(接收)1.8.5 1.8.5 串行口串行口模式模式2 2、3 31.8.5.1 1.8.5.1 模式模式2 2、3 3的应用之一:的应用之一:带奇偶校验位的数据传送带奇偶校验位的数据传送1.8.5.2 1.8.5.2 模式模式2 2、3 3的应用之二:的应用之二:多机通讯多机通讯1.8.5.3 1.8.5.3 模式模式2 2、3 3使用时使用时要注意的问题要注意的问题 波特率及定时器波特率及定时器T1T1的设定的设定串行口模式串行口模式1

121、 1时时数据帧格式数据帧格式及接收采样示意图及接收采样示意图串行口串行口模式模式1 1第八节目录二第八节目录二返回上一页继续单片机系统中的串行接口既特点l l串行口的设计使串行口的设计使MCS-51MCS-51单片机的功能单片机的功能 大大增加大大增加. .可以用串行通讯的方式实可以用串行通讯的方式实现单片机与单片机或者是单片机与微现单片机与单片机或者是单片机与微机等设备之间的数据交换机等设备之间的数据交换. .l l串行通讯电路简单串行通讯电路简单, ,成本低成本低, ,可以实现可以实现远距离的数据传输。缺点是传输速度远距离的数据传输。缺点是传输速度低于并行数据传输。低于并行数据传输。l l

122、在一个嵌入式系统中在一个嵌入式系统中, ,往往采用多单往往采用多单片机构成一个完整的控制系统片机构成一个完整的控制系统, ,它们它们之间以串行通信的方式进行数据交换之间以串行通信的方式进行数据交换-多机通讯多机通讯( (如图如图).).从机从机从机从机主机串行通讯应用示意图TXDRXDRXDTXDTXDRXDRXDTXDRS-232或485RS-232或485TXDRXDRS-232PC机COM1,COM2单片机甲、乙之间近距离通讯单片机甲乙两地之间远距离通讯单片机与PC机之间的数据通讯返回前一次关于串行通讯中的基本概念:l l字符帧字符帧: :也称数据帧也称数据帧, ,它是由它是由“起始位起

123、始位”“”“数据位数据位” 和和“停止位停止位”构成构成( (如下图所示如下图所示) )。l l波特率波特率: : 使用的单位是使用的单位是: :bpsbps(bit per scond),(bit per scond),既既 位位/ /秒。秒。l l异步通讯异步通讯: :数据是以数据是以字符字符或或字节字节为单位组成为单位组成字符帧字符帧传送的传送的. .数据是从发送端一帧一帧的发送数据是从发送端一帧一帧的发送, ,通过传输线为接收端一通过传输线为接收端一帧一帧的接收帧一帧的接收. .发送与接收相互独立发送与接收相互独立, ,互不同步。互不同步。D0D0D1D1D2D2D3D3D4D4D5D

124、5D6D6D7D7起始位停止位01一个字符帧的格式1.8.1 数据缓冲寄存器 SBUFl lSBUFSBUF是用来存放串行口发送和接收数据的寄存器是用来存放串行口发送和接收数据的寄存器, ,在在SFRSFR的地址为的地址为99H.99H.在物理上它对应两个不同的单元在物理上它对应两个不同的单元: :发送发送寄存器和接收寄存器。寄存器和接收寄存器。l lCPUCPU写写SBUFSBUF就是就是开始发送数据开始发送数据(MOV SBUF,AMOV SBUF,A); ; CPU CPU读读SBUFSBUF就是就是接收数据到接收数据到A A (MOV A,SBUFMOV A,SBUF)。)。l l由于

125、发送由于发送SBUFSBUF与接收的与接收的SBUFSBUF是两个不同的逻辑部件是两个不同的逻辑部件, ,所以在硬件设计上保证了所以在硬件设计上保证了5151单片机串行口是一个可以同单片机串行口是一个可以同时发送与接收的时发送与接收的” ”全双工全双工” ”接口。接口。1.8.2 串行口控制寄存器SCON 地址:98Hl lSM0 SM1SM0 SM1: : 串行口操作模式选择位串行口操作模式选择位. .可以确定串行口的可以确定串行口的四种模式之一四种模式之一( (如下表如下表); );SM0SM0SM1SM1SM2SM2RENRENTB8TB8RB8RB8TITIRIRISM0 SM1SM0

126、 SM1模式模式功功 能能波特率波特率 0 0 0 00 0同步移位寄存器模式同步移位寄存器模式Fosc/12Fosc/12 0 1 0 11 18 8位异步通信位异步通信UARTUART可变可变 1 0 1 02 29 9位异步通信位异步通信UARTUARTFosc/64Fosc/64或或/32/32 1 1 1 13 39 9位异步通信位异步通信UARTUART可变可变返回前一次SM2SM2l lRIRI : :完成一帧数据接收的完成一帧数据接收的标志标志, ,原始应清零原始应清零,接收完成接收完成RI=1RI=1并申请中断并申请中断; ;l lTITI : :完成一帧数据发送的完成一帧数

127、据发送的标志标志, ,原始应清零原始应清零,发送完成发送完成TI=1TI=1同时申请中断同时申请中断; ;l lRB8RB8: :在在9 9位数据传送的模式位数据传送的模式2 2、3 3时时, ,接收到的接收到的第第9 9位数据位数据; ;l lTB8TB8: :在在9 9位数据传送的模式位数据传送的模式2 2、3 3时时, ,将要发送的将要发送的第第9 9位数据位数据; ;l lRENREN: :允许接收位允许接收位,REN=1,REN=1时允许接收时允许接收. .由软件置位或清零由软件置位或清零; ;返回前一次SM0SM0SM1SM1SM2SM2RENRENTB8TB8RB8RB8TITI

128、RIRIl lSM2SM2 : :多机通信使能位多机通信使能位. . 1 1,模式模式0 0、1 1时时: : SM2SM2不用,应设为不用,应设为0 0。时。时RIRI才能被正常激活并引发中断才能被正常激活并引发中断; ; 2 2,模式模式2 2、3 3时时: :若若SM2=0SM2=0时,无论时,无论RB8RB8如何,如何,RIRI都能被激活(都能被激活(RI=1RI=1)。)。 但是但是RI=1RI=1并不能引发中断!所以只能用查询的方式接收并不能引发中断!所以只能用查询的方式接收 数据。数据。 若若SM2=1SM2=1, ,收到的第收到的第9 9位位(RB8)=0(RB8)=0时时,

129、,则则RIRI不会被激活;不会被激活;若若SM2=1SM2=1且且RB8=1RB8=1时时,RI,RI才能被激活才能被激活=1=1并引发中断。并引发中断。SM0SM0SM1SM1SM2SM2RENRENTB8TB8RB8RB8TITIRIRI返回上一页如何使用RI,TI标志(中断和查询) CPUCPU与串行口之间不是同步工作的,两者之间的数据交换与串行口之间不是同步工作的,两者之间的数据交换通过通过SBUFSBUF, ,何时交换必须借助于标志信号进行。何时交换必须借助于标志信号进行。n nRIRI(SCON.0)SCON.0):接收完一帧数据的标志。:接收完一帧数据的标志。如果系统中断是开放的

130、,则如果系统中断是开放的,则RI=1RI=1时会自动引发中断。用时会自动引发中断。用户可以通过中断服务程序将户可以通过中断服务程序将SBUFSBUF中的数据取出送累加器中的数据取出送累加器A A。 MOV A,SBUFMOV A,SBUF 。也可以使用查询的方式对。也可以使用查询的方式对RIRI进行检测,进行检测,如果如果RI=1RI=1则执行:则执行: MOV A,SBUFMOV A,SBUF 。n nTI TI (SCON.1):SCON.1):发送完一帧数据标志。发送完一帧数据标志。如果系统中断是开放的,则如果系统中断是开放的,则TITI会自动引发中断。用户可会自动引发中断。用户可以通过

131、中断服务程序向以通过中断服务程序向SBUFSBUF输送下一个数据:输送下一个数据:MOVSBUF, AMOVSBUF, A 。也可以使用查询的方式对也可以使用查询的方式对TITI进行检测,如进行检测,如果果TI=1TI=1则执行则执行: MOV SBUF , AMOV SBUF , A 。使用查询使用查询RIRI、TITI标志方式进行发送与接收标志方式进行发送与接收N N个数据个数据CLR SCON .TI数据送累加器A修改数据区指针mov sbuf,aTI=1?N个数据发送完?YESNOYESNO发送数据的程序框图SETB SCON .RENmov a,sbufRI=1? N个数据接收完?Y

132、ESNOYESNOCLR SCON .RI A送数据区修改数据指针返回本节目录一接收数据程序框图1.8.3 串行口的模式0l l特点特点: :串行口做同步移位寄存器用串行口做同步移位寄存器用, ,其波特率为其波特率为 fosc/12.fosc/12.在这种模式下在这种模式下RXD(P3.0)RXD(P3.0)做数据口做数据口;TXD(P3.1);TXD(P3.1)做移位脉冲输出端做移位脉冲输出端. .在移位过程中在移位过程中, ,先移数据的低位先移数据的低位. .注注意意: :移位脉冲的频率就是模式移位脉冲的频率就是模式0 0的波特率的波特率. .l l模式模式0 0的主要功能是的主要功能是:

133、 :可以使用一个串行口来扩展出可以使用一个串行口来扩展出8 8位、位、1616位等并行口位等并行口, ,且理论上可以扩展且理论上可以扩展n*8n*8位的并行口位的并行口. .MCS-51RXDTXDData 外部移位寄存器cp移位脉冲串行数据并行的数据(8位)模式模式0 0 电路框图电路框图51内部总线SBUF零检测器移位时钟START SHIFT 发送控制器TXCLOCK TI SENDD S QCLSTART RI RECEIVERX 接收控制器 SHIFTCLOCK 1 1 1 1 1 1 1 0输入移位寄存器SBUF51内部总线读SBUF写SBUFS6串行口中断RXDTXD装载SBUF

134、REN/RI返回前一次RXDMOV SBUF,A1S6P2串行口模式0的时序信号(发送)S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6写SBUFSENDD1D0D2D3D4D5D6D7RXD端数据SHIFTTXD端同步脉冲TI中断标志mov sbuf,a指令送发送到结束的10个机器周期返回电路图模式0的工作原理(发送)l l单片机执行单片机执行mov sbuf,amov sbuf,a指令的指令的S6P2S6P2时时, ,出现出现“ “写写sbufsbuf ” ”信号

135、:信号:1 1,打开总线三态门使累加器中的数据送到,打开总线三态门使累加器中的数据送到SBUFSBUF中;中;2 2,使,使D D型触发器置一型触发器置一, , 触发器的输出构成了触发器的输出构成了SBUFSBUF的第的第9 9位;位;3 3,启动,启动“ “发送控制器发送控制器” ”开始发送。开始发送。l l在在“ “写写SBUFSBUF信号信号” ”有效相隔一个机器周期后有效相隔一个机器周期后,“ ,“发送控制器发送控制器” ”的的SEND=1SEND=1使使RXDRXD, ,TXDTXD端的与门打开端的与门打开, ,使数据和移位脉冲输使数据和移位脉冲输出。在出。在TXDTXD端,每一个机

136、器周期中发出一个同步脉冲端,每一个机器周期中发出一个同步脉冲, ,同时在同时在SEND=1SEND=1期间期间, ,每一个每一个S6P2S6P2时控制器发出一个时控制器发出一个SHIFTSHIFT移位信号移位信号将将SBUFSBUF中的数据右移一次中的数据右移一次( (同时同时D D型触发器清零型触发器清零) )。这样。这样: :每每当当SBUFSBUF中的数据右移中的数据右移( (发送发送) )一位时一位时,SBUF,SBUF的左端便移入的左端便移入1 1个个“0”“0”。l l当当SBIUFSBIUF中的数据右移中的数据右移7 7次后,检零器的次后,检零器的7 7个输入端全为个输入端全为“

137、0”“0”,向控制器发出一个信号:通知控制器作最后一次移位,然,向控制器发出一个信号:通知控制器作最后一次移位,然后控制器的后控制器的SEND=0SEND=0停止发送数据和同步信号,停止发送数据和同步信号,TITI被置位。被置位。返回电路图模式0的工作原理(接收)l l在满足在满足REN=1REN=1且且RI=0RI=0的条件下的条件下(实际上是一条写(实际上是一条写SCONSCON指令)指令),就会引发一次接收过程。在下一个机器周期的,就会引发一次接收过程。在下一个机器周期的S6P2S6P2时刻,时刻,接收控制器将接收控制器将1111111011111110写入移位寄存器。在下一个周期的写入

138、移位寄存器。在下一个周期的S1P1S1P1使使RECEIVE=1RECEIVE=1从而使从而使TXDTXD端的与门打开。端的与门打开。l l同发送的过程类似:在后面的每一个机器周期从同发送的过程类似:在后面的每一个机器周期从TXDTXD端发端发出同步移位脉冲,在每一个出同步移位脉冲,在每一个S5P2S5P2时刻对时刻对RXDRXD线进行采样。线进行采样。在在S6P2S6P2时刻,控制器对寄存器进行移位,每左移一次右端时刻,控制器对寄存器进行移位,每左移一次右端就补进一位由就补进一位由RXDRXD端输入的数据。端输入的数据。l l当从当从RXDRXD端输入端输入7 7位数据时,开始最右端的位数据

139、时,开始最右端的“0”“0”被移到寄被移到寄存器的最左端,寄存器向控制器发信号,通知控制器做最存器的最左端,寄存器向控制器发信号,通知控制器做最后一次接收,并将完整的后一次接收,并将完整的8 8位数据装入位数据装入SBUFSBUF中。最后清中。最后清RECEIVERECEIVE,SCONSCON中的中的RIRI置位,向置位,向CPUCPU发中断申请。发中断申请。返回电路图模式模式0 0的时序信号(接收)的时序信号(接收)S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6S1S6

140、写SCON(RI=0)RECEIVESHIFTRI对RXD采样TXD同步脉冲RI中断标志返回电路图l l特点特点:10:10位传输格式位传输格式 (1 (1个起始位个起始位+8+8个数据位个数据位+1+1个停止位个停止位); ); 波特率波特率波特率波特率: :可变波特率可变波特率, ,由定时器由定时器T1T1的溢出率来确定的溢出率来确定, ,所以在此所以在此种模式下种模式下, ,首先要对首先要对T1T1进行初始化以确定串行口的波特率;进行初始化以确定串行口的波特率;l l发送操作:在发送操作:在TI=0TI=0,执行,执行mov sbuf,a mov sbuf,a 指令后从指令后从TXDTX

141、D端开始发端开始发送数据。当发送完送数据。当发送完8 8位数据后自动的添加一个高电平的停止位数据后自动的添加一个高电平的停止位,并将位,并将TITI置位。置位。l l接收操作:在接收操作:在REN=1REN=1且且RI=0RI=0的条件下进行。串行口的接收控的条件下进行。串行口的接收控制器对制器对RXDRXD线进行采样,其采样频率是接收时钟的线进行采样,其采样频率是接收时钟的1616倍。当倍。当连续连续8 8次采集到次采集到RXDRXD线上为低电平时,检测电路便认定线上为低电平时,检测电路便认定RXDRXD线上有了线上有了“ “起始位起始位” ”,在此后,便开始在每次第,在此后,便开始在每次第

142、7 7 、 8 8 、9 9三个脉冲时进行三个脉冲时进行RXDRXD采样,采取采样,采取“ “三中取二三中取二” ”的原则来确定的原则来确定接收的数据(如图所示)。接收的数据(如图所示)。l l当接收到停止位时,必须满足:当接收到停止位时,必须满足:RI=0RI=0且且SM2=0SM2=0,才能把接收,才能把接收的数据送到的数据送到SBUFSBUF中(停止位送中(停止位送SCONSCON的的RB8RB8中,并使中,并使RI=1RI=1),否则数据丢失。),否则数据丢失。串行口模式串行口模式1 1时数据帧格式及接收采样示意图时数据帧格式及接收采样示意图D0D0D1D1D2D2D3D3D4D4D5

143、D5D6D6D7D7起始位8位数据停止位对RXD线的数据以16倍速度采样当连续8次采集到低电平时,便确认起始位到来在每个第7,8,9个脉冲对RXD采样并采用“以三取二”来确定采集的数据返回本节目录二1.8.5 串行口模式2、3特点特点: :模式模式2 2、3 3都是都是1111位传输格式位传输格式 ( (1 1个起始位个起始位+9+9个数据位个数据位+1+1个停止位个停止位) ),不同处是波特率,不同处是波特率; ; 波特率波特率波特率波特率: : : : 模式模式2 2:固定为:固定为fosc/64fosc/64或或fosc/32(fosc/32(具体由具体由PCONPCON中的中的 SMO

144、DSMOD位来确定)。位来确定)。 模式模式3 3:由定时器:由定时器T1T1的溢出波特率来确定。的溢出波特率来确定。模式模式2 2、3 3的的发送过程发送过程类似于模式类似于模式1 1,唯一的区别在于,唯一的区别在于数据帧中数据帧中数据是数据是9 9位。这样,在发送位。这样,在发送一帧数据一帧数据 或:或:clr scon.tb8 clr scon.tb8 但注意要先设定好但注意要先设定好scon.tb8scon.tb8,然后再向,然后再向SBUFSBUF送数,因为送数,因为mov sbuf,amov sbuf,a指令一执行,串行口就开始发送。指令一执行,串行口就开始发送。 例如:例如: s

145、et scon.tb8 set scon.tb8 或:或: clr scon.tb8 clr scon.tb8 mov sbuf,a mov sbuf,a mov sbuf,a mov sbuf,a 模式模式2 2、3 3的接收过程类似于模式的接收过程类似于模式1 1,不同的是:模式,不同的是:模式1 1时,时,SCONSCON中的中的RB8RB8是接收到的停止位(是接收到的停止位(“1”“1”);而模式);而模式2 2、3 3时,时,RB8RB8是接收到的第是接收到的第9 9位。位。 在模式在模式1 1,接收操作只有在,接收操作只有在RI=0,RI=0,且且REN=1REN=1时数据才能接收

146、。时数据才能接收。而模式而模式2 2、3 3的接收条件是:的接收条件是: a a,RI=0RI=0且且SM2=0SM2=0 或或 b, b, RI=0RI=0且且RB8=1RB8=1。 只有满足只有满足a a或满足或满足b b的条件时的条件时, ,接收到的数据才能送到接收到的数据才能送到SBUFSBUF,并使并使RI=1RI=1激活,否则接收无效且激活,否则接收无效且RIRI不能置位。不能置位。RI=0RI=0是保证是保证SBUFSBUF空空(每次取走数据时通过软件复位(每次取走数据时通过软件复位RIRI,如,如果没有取走数据则果没有取走数据则RI=1RI=1),以保证接收到的数据不丢失。后)

147、,以保证接收到的数据不丢失。后一个条件是由一个条件是由SM2SM2和和RB8RB8共同来控制接收。共同来控制接收。 令令SM2=0SM2=0可以保证可以保证RB8RB8正确的接收正确的接收奇偶校验位奇偶校验位; 令令SM2=1SM2=1可以利用接收到的可以利用接收到的RB8RB8控制接收是否有效。控制接收是否有效。 即即 RB8=1 RB8=1时,接收有效。时,接收有效。RB8=0RB8=0时,接收无效。时,接收无效。返回本节目录二返回上一页串行口模式2、3时数据帧格式发送时:发送时:将将SCONSCON中的中的TB8TB8作为第作为第9 9位数据发送;位数据发送;接收时:接收时:将接收来的第

148、将接收来的第9 9位送到位送到SCONSCON中的中的RB8RB8中。中。D0D0D1D1D2D2D3D3D4D4D5D5D6D6D7D7D8D8起始位9位数据停止位SM0SM0SM1SM1SM2SM2RENRENTB8TB8RB8RB8TITIRIRI返回1.8.5.1 模式2、3的应用之一带奇偶校验位的数据传送奇偶校验:奇偶校验:接收到的第接收到的第9 9位数据是发送方送来的奇位数据是发送方送来的奇偶校验位。偶校验位。 在这种情况下,必须令在这种情况下,必须令SM2=0SM2=0,否则接收的校验否则接收的校验位位RB8=0RB8=0时,将影响数据的接收(因为时,将影响数据的接收(因为RB8

149、RB8是根据是根据8 8位数据进行奇偶校验的结果来设定,有时为位数据进行奇偶校验的结果来设定,有时为“1”“1”,而有时为,而有时为“0”“0”)。)。当接收到数据后,用指令对当接收到数据后,用指令对 PSW.P PSW.P位进行判断。将位进行判断。将此结果与此结果与RB8RB8中的数据进行中的数据进行“异或异或”,看结果是否,看结果是否与约定的相符合。与约定的相符合。 例如:例如:发送、接收双方约定为发送、接收双方约定为奇校验奇校验: 若发送的若发送的数据数据和和第第9 9位位分别是:分别是:00011010 00011010 、0 0 ( (第第9 9位数据是发送方用根据位数据是发送方用根

150、据奇校验奇校验自动生成的自动生成的) )若接收后若接收后SBUFSBUF送送A A的数据是:的数据是:0001101000011010,这时,这时,PSW.P=1PSW.P=1,且,且 RB8=0 RB8=0 。则进行:。则进行: P P异或异或RB8=1RB8=1, 满足约定条件既接收正确。满足约定条件既接收正确。反之若反之若SBUFSBUF送送A=00011011,A=00011011,使使PSW.P=0,PSW.P=0,且且RB8=0 RB8=0 。 P P异或异或RB8=0 RB8=0 表明不符合约定条件,接收出错。表明不符合约定条件,接收出错。 总之总之, ,使用模式使用模式2 2、

151、3 3发送带发送带“奇偶校验奇偶校验”位的数据时:位的数据时: 1 1,一定要使,一定要使SM2=0SM2=0。 2 2,又因为,又因为SM2=0SM2=0,所以尽管,所以尽管RIRI能够激活,但不会引能够激活,但不会引发中断,所以只能采用发中断,所以只能采用“查询查询”的方式接收数据。的方式接收数据。利用模式利用模式2,32,3进行带奇校验的串行通讯程序流程图进行带奇校验的串行通讯程序流程图数据送累加器APSW.P=1 ?MOV SBUF,ATI=1 ?YESNONOYES发送端程序(原始TI=0)使用“查询法”编制的发送、接收程序返回本节目录二RI=1 ?MOV A,SBUFRB8=1?出

152、错处理YESNO接收端程序(原始RI=0)NY数据送内存1.8.5.2 1.8.5.2 模式模式2 2、3 3的应用之二:的应用之二:多机通讯多机通讯在在传统的多路数据采集系统传统的多路数据采集系统中,存在着许多缺点。使它在采中,存在着许多缺点。使它在采集的点数和引线长度都受到限制。集的点数和引线长度都受到限制。采用多采用多CPUCPU的方式可以构成一个的方式可以构成一个多机通讯系统多机通讯系统。如在一个生。如在一个生产线上要对许多参数(温度、压力、流量等)进行采集检测,产线上要对许多参数(温度、压力、流量等)进行采集检测,并且要对这些数据进行处理、显示、打印或保存。并且要对这些数据进行处理、

153、显示、打印或保存。我们可以将这些单片机进行分工:选一台单片机作为我们可以将这些单片机进行分工:选一台单片机作为主机主机,专门负责接收其他单片机传回的数据,并进行数据的后期处专门负责接收其他单片机传回的数据,并进行数据的后期处理如:保存、显示等。而其它的单片机则完成对传感器的信理如:保存、显示等。而其它的单片机则完成对传感器的信号检测、号检测、A/DA/D转换,最后将数据上传给主机。我们称这些单转换,最后将数据上传给主机。我们称这些单片机为片机为从机。从机。传统方式的多路数据采集系统单片机系统或微型计算机系统传感器 1传感器 2传感器 3传感器 4传感器 N接口电路引线(模拟信号) 机房 或 仪

154、表室检测现场返回前一次采用“智能传感器”组成的多路数据采集系统主机从机 N从机 4从机 3从机 2从机 1返回前一次串行数据线(2条)RXDTXDTXDRXD主从式多机通讯原理主从式多机通讯原理主机发送的数据可以传送到各个从机,从机发送的数据只能为主机接收,主机发送的数据可以传送到各个从机,从机发送的数据只能为主机接收,从机之间不能直接通讯;从机之间不能直接通讯;主机和从机的设置为模式主机和从机的设置为模式2 2或或3 3,其中主机的,其中主机的SM2=0SM2=0,从机的,从机的SM2=1SM2=1。主机首先通过发送主机首先通过发送地址码地址码来寻找从机(来寻找从机(地址码的特征是第地址码的

155、特征是第9 9位数据为位数据为“1”“1”,且,且被从机接收为被从机接收为RB8RB8),所以,所有的从机都能接收到主机发出),所以,所有的从机都能接收到主机发出的地址码(因为:的地址码(因为:RI=0RI=0,SM2=1,RB8=1SM2=1,RB8=1),并使),并使RI=1RI=1引发中断。从机在引发中断。从机在中断服务程序中,将接收到地址码与自己的地址进行比较,被选中的从中断服务程序中,将接收到地址码与自己的地址进行比较,被选中的从机将自己的机将自己的SM2=0SM2=0,而未被选中的从机仍保持,而未被选中的从机仍保持SM2=1SM2=1。当主机找到从机后,开始向从机发数据、命令,其特

156、征为第当主机找到从机后,开始向从机发数据、命令,其特征为第9 9位位=0=0。由于。由于从机从机SM2=0SM2=0,所以尽管接收到的,所以尽管接收到的RB8=0RB8=0,同样可以激活从机的,同样可以激活从机的RIRI,使其,使其以以查询的方式查询的方式接收主机发出的数据或命令。当主机与从机的通讯完成后,接收主机发出的数据或命令。当主机与从机的通讯完成后,从机再将其从机再将其SM2=1SM2=1,主机重新发出另一个从机的地址,所有从机可以马,主机重新发出另一个从机的地址,所有从机可以马上响应并接收地址信息。上响应并接收地址信息。返回多机图参见SM2位多机通讯原理在模式在模式2 2、3 3中,

157、中, 1 1,SM2=0SM2=0时时:RB8=1RB8=1或或RB8=0RB8=0 都可以激活都可以激活RIRI, 但不能引发中断。但不能引发中断。 2 2,SM2=1SM2=1时:时:RB8=1RB8=1才能激活才能激活RIRI并引发中断。并引发中断。 而而RB8=0RB8=0时,时,RIRI不能激活。不能激活。小 结1 1,主机的,主机的SM2=0SM2=0,从机的,从机的SM2=1SM2=1;2 2,主机向从机发送的,主机向从机发送的地址码地址码第第9 9位为位为“1”“1”;3 3,所有的从机,所有的从机SM2=1SM2=1、RB8=1RB8=1、RI=0RI=0,接收主机的地址,接

158、收主机的地址进入中断服务程序。在程序中比较、确认是否为被寻从机。进入中断服务程序。在程序中比较、确认是否为被寻从机。4 4,被寻从机将,被寻从机将SM2SM2清零,以保证能清零,以保证能以查询的方式以查询的方式接收主接收主机的数据、命令。同时向主机返回地址供主机核实。没有机的数据、命令。同时向主机返回地址供主机核实。没有被选种的从机保持被选种的从机保持SM2=1SM2=1并退出服务程序。并退出服务程序。5 5,被寻中的从机以被寻中的从机以查询查询RIRI的方式与主机之间进行数据交的方式与主机之间进行数据交换(注意:因为换(注意:因为SM2=0SM2=0时,时,RIRI虽然能被激活,但不能引发虽

159、然能被激活,但不能引发中断),完成后,重新将中断),完成后,重新将SM2SM2置置1 1。返回多机图返回本节目录二1.8.5.3 模式2、3使用时要注意的问题在模式在模式2 2、3 3中,可以实现较为特殊的通讯方式,如带校验中,可以实现较为特殊的通讯方式,如带校验位的位的9 9位传送、多机通讯。位传送、多机通讯。注意:当注意:当SM2=0SM2=0时,只能采用查时,只能采用查询方式。询方式。功能功能SM2SM2第第9 9位位 工作方式工作方式带校验位的带校验位的9 9位位数传送数传送SM2=0SM2=0校验位校验位以查询(以查询(RIRI)的方式)的方式接收数据接收数据多机多机通讯通讯主主机机

160、SM2=0SM2=0地址码:地址码:TB8=1TB8=1数据、命令时数据、命令时=0=0以查询的方式工作以查询的方式工作从从机机SM2=1SM2=1未选中时未选中时SM2SM2不变不变以中断的方式接收地址以中断的方式接收地址选中后选中后SM2=0SM2=0以查询的方式与主机通讯以查询的方式与主机通讯返回本节目录二1.8.6 1.8.6 波特率及定时器波特率及定时器T1T1的设定的设定l l在串行口的异步通讯中,发送方与接收方是两个互相独立在串行口的异步通讯中,发送方与接收方是两个互相独立的系统,它们的系统时钟可以各不相同(的系统,它们的系统时钟可以各不相同(如图所示如图所示)。在)。在这种条件

161、下使通讯正确的条件是:这种条件下使通讯正确的条件是:1 1,要有相同的字符帧格,要有相同的字符帧格式;式;2 2,要有相同的波特率。,要有相同的波特率。l lMCS-51MCS-51单片机的串行口四种模式其波特率各不相同。其中单片机的串行口四种模式其波特率各不相同。其中模式模式1 1、3 3的波特率就是由的波特率就是由定时器定时器T1T1的溢出率的溢出率来决定的(另来决定的(另外外PCONPCON中的中的SMODSMOD位起着波特率加倍的作用)。位起着波特率加倍的作用)。SM0 SM1SM0 SM1模式模式功功 能能波特率波特率 0 0 0 00 0同步移位寄存器模式同步移位寄存器模式Fosc

162、/12Fosc/12 0 1 0 11 11010位异步通信位异步通信UARTUART可变,由可变,由T1T1初值确定初值确定 1 0 1 02 21111位异步通信位异步通信UARTUARTFosc/64Fosc/64或或/32/32 1 1 1 13 31111位异步通信位异步通信UARTUART可变,由可变,由T1T1初值确定初值确定如何设定波特率?如何设定波特率?l l在编制串行口通讯(模式在编制串行口通讯(模式1 1、3 3)程序时,在程序的初始化)程序时,在程序的初始化中,必须进行波特率的设定,既对中,必须进行波特率的设定,既对T1T1进行初始化。进行初始化。l lT1T1初始化的

163、主要任务就是:初始化的主要任务就是: 1 1,设置,设置T1T1的的工作方式为定时(工作方式为定时(C/T=0C/T=0); 工作模式为模式工作模式为模式2 2 :自动重装。:自动重装。 2 2,计算定时常数并分别送给,计算定时常数并分别送给TH1TH1、TL1TL1。l l波特率计算公式:波特率计算公式:B =B =l lT1T1溢出率:溢出率:= =(计数速率)(计数速率)/ / 256- 256-(TH1TH1) = (fosc/12) / = (fosc/12) / 256- 256-(TH1TH1) 波特率、初值TC计算公式 B= fosc / B= fosc / 96 X 96 X

164、(256-TH256-TH) ; (SMOD=1SMOD=1时时)或或 B= fosc / 192 XB= fosc / 192 X(256-TH256-TH) ; (SMOD=0SMOD=0时时) 其中:其中:foscfosc为为系系统时钟频统时钟频率,率,THTH为为定定时时器器T1T1的初的初值值。所以可以推出:所以可以推出: TH=256- fosc/TH=256- fosc/(384XB384XB) ; (SMOD=0SMOD=0时时)或:或: TH=256- fosc/TH=256- fosc/(192XB192XB) ; (SMOD=1SMOD=1时时)【举举例例】设设系系统时钟

165、为统时钟为11.059MHz11.059MHz,要求波特率,要求波特率为为1200Hz1200Hz,求求THTH。【解解】用上述公式用上述公式TH=256-11.059MHz /TH=256-11.059MHz /(384X1200384X1200)=232=232 =0E8H =0E8H 设设:SMOD=0SMOD=0返回第一目录章返回本节目录二参考资料: PC机及单片机数据通信技术 李朝青1.9 MCS-51的中断系统MCS-51MCS-51的中断的中断系统结构图系统结构图IEIEIPIP1.9.3 1.9.3 优先级结构优先级结构1.9.4 1.9.4 中断查询与响应协议中断查询与响应协

166、议1.9.5 1.9.5 外部中断外部中断1.9.6 1.9.6 中断请求的撤除中断请求的撤除1.9.7 1.9.7 中断响应时间中断响应时间继续中断:CPUCPU中止正在运行的程序,转向为外部设备服务中止正在运行的程序,转向为外部设备服务的过程称为中断。当完成中断后,的过程称为中断。当完成中断后,CPUCPU再回到原再回到原来的来的“ “断点断点” ”继续原来的程序。继续原来的程序。中断源是由外部产生,具有随机性、不可知性。中断源是由外部产生,具有随机性、不可知性。主程序断点中断相应中断返回中断服务程序MCS-51MCS-51的中断系统结构图的中断系统结构图MCS-51MCS-51单片机共有

167、单片机共有5 5个中断源(如图所示)。个中断源(如图所示)。/ int0T0/ int1T1ES中断源标识符高优先级中断请求中断矢量中断源标识符低优先级中断请求中断矢量中断请求寄存器中断允许寄存器中断优先级寄存器源允许总允许EA返回前一次返回本节目录IE(0A8H)EAEA:总允许位。:总允许位。EA=0EA=0:禁止一切中断;:禁止一切中断;EA=1EA=1中断开放。中断开放。ESES:串行口中断允许位。:串行口中断允许位。ES=1ES=1:允许:允许RIRI、TITI引发中断;引发中断; ES=0 ES=0:禁止中断。:禁止中断。ET1ET1、ET0ET0:定时器:定时器T1T1、T0T0

168、允许位。允许位。ET=1ET=1允许,允许,=0=0禁止。禁止。EX1EX1、EX0EX0:外中断外中断 int1 int1、int0int0允许位。允许位。ET =1ET =1允许,允许,=0=0禁止。禁止。EAEAX XX XESESET1ET1 EX1EX1 ET0ET0 EX0EX0返回本节目录返回前一次1.9.2中断优先级寄存器IP(0B8H)l lPSPS:串行口中断优先级设定位;串行口中断优先级设定位;l lPT1PT1、PT0PT0:定时器定时器T1T1、T0T0中断优先级设定位;中断优先级设定位;l lPX1PX1、PX0PX0:外中断外中断 int1 int1、0 0中断优

169、先级设定位;中断优先级设定位;X XX XX XPSPSPT1PT1PX1PX1PT0PT0PX0PX0返回前一次返回本节目录1.9.3 优先级结构由于由于IPIP寄存器的设定,将寄存器的设定,将5 5个中断源分为两个级别。中断个中断源分为两个级别。中断的发生将遵循下面的的发生将遵循下面的3 3条基本原则:条基本原则:1 1,低级中断在响应执行中,可以被高级中断所中断,反之,低级中断在响应执行中,可以被高级中断所中断,反之则不能。则不能。2 2,一个中断(不论是什么优先级)一旦得到响应,与它同,一个中断(不论是什么优先级)一旦得到响应,与它同级的中断则不能在中断它。级的中断则不能在中断它。3

170、3,当,当CPUCPU同时收到几个同一级别的中断要求时,同时收到几个同一级别的中断要求时,CPUCPU响应哪响应哪个中断源取决于硬件的查询顺序(个中断源取决于硬件的查询顺序(见图见图)。)。 转IP寄存器如何改变中断源的优先级顺序l l从中断系统的从中断系统的硬件结构图硬件结构图可以清楚地看出同一级别中可以清楚地看出同一级别中5 5个个中断源的查询顺序。很明显,要改变这种顺序只能通过中断源的查询顺序。很明显,要改变这种顺序只能通过IPIP的设置。的设置。l l如:要想将串行口的级别设为最高时,将如:要想将串行口的级别设为最高时,将IPIP中的中的PSPS置一。置一。 既使用指令:既使用指令:

171、或或 mov 0b8h,#10h mov 0b8h,#10h 完成对完成对IPIP设置。设置。X XX XX XPSPSPT1PT1 PX1PX1 PT0PT0 PX0PX0IP寄存器返回本节目录返回前一次1.9.4 中断查询与响应协议在每一个机器周期中,所有的中断源都要按照其顺序检查在每一个机器周期中,所有的中断源都要按照其顺序检查一遍,到一遍,到S6S6状态时,就查找到所有被激活的中断申请并排状态时,就查找到所有被激活的中断申请并排好优先权。在下一个机器周期的好优先权。在下一个机器周期的S1S1状态,只要不受阻断,状态,只要不受阻断,就开始响应高级中断。就开始响应高级中断。如果发生下列情况

172、,中断将被阻止:如果发生下列情况,中断将被阻止: 1 1,同级或高级中断正在执行时;同级或高级中断正在执行时; 2 2,当前的机器周期不是指令的最后一个机器周期;当前的机器周期不是指令的最后一个机器周期; 3 3,CPUCPU正在执行的指令是正在执行的指令是RETIRETI或访问或访问IEIE、IPIP寄存器时,寄存器时,CPUCPU是不会响应中断,而且要等到是不会响应中断,而且要等到该指令的下一条指令该指令的下一条指令执执行完后中断才能响应。行完后中断才能响应。返回前一次CPUCPU查询到某一中断源后,使相应的查询到某一中断源后,使相应的“优先级激活优先级激活”触发器置位用以阻断触发器置位用

173、以阻断同级或低级中断。在硬件的控制下,同级或低级中断。在硬件的控制下,程序自动转向对应的矢量单元,执行程序自动转向对应的矢量单元,执行其服务程序。其服务程序。CPUCPU响应中断时响应中断时, ,将当时程序计数器将当时程序计数器PCPC的内容进栈的内容进栈, ,并将相应的中断矢量装并将相应的中断矢量装入入PCPC中中, ,使使CPUCPU转向对应的服务程序。转向对应的服务程序。中断服务程序的最后一条指令是中断服务程序的最后一条指令是RETIRETI,指令将清除,指令将清除“优先级激活触发器优先级激活触发器”,然后从堆栈中弹出断点地址并装入,然后从堆栈中弹出断点地址并装入到到PCPC中。中。矢量

174、入口的指令应当是转移指令。矢量入口的指令应当是转移指令。(上电启动地址)(上电启动地址)(上电启动地址)(上电启动地址)(INT0INT0中断入口)中断入口)中断入口)中断入口)(T0T0中断入口)中断入口)中断入口)中断入口)(INT1INT1中断入口)中断入口)中断入口)中断入口)(T1T1中断入口)中断入口)中断入口)中断入口)(串口中断入口)(串口中断入口)(串口中断入口)(串口中断入口)0000H0003H000BH0013H001BH0023H返回本节目录1.9.5 外部中断在在MCS-51MCS-51引脚上有:引脚上有:INT0INT0、INT1INT1两个外部的中断输入,两个外

175、部的中断输入,作为外部事件的触发信号。作为外部事件的触发信号。CPUCPU在每一个机器周期对它们在每一个机器周期对它们进行一次检测。系统设定了两种触发方式:边沿触发(下进行一次检测。系统设定了两种触发方式:边沿触发(下降沿)和电平触发(低电平)。具体由降沿)和电平触发(低电平)。具体由TCONTCON中的中的IT0IT0、IT1IT1来确定。来确定。 1 1,在边沿触发方式中,在相邻的两个机器周期,如果第,在边沿触发方式中,在相邻的两个机器周期,如果第一次采集是高电平,第二次采集是低电平时,则一次采集是高电平,第二次采集是低电平时,则TCONTCON中的中的标志标志IE0IE0或或IE1IE1

176、置位。所以,在边沿触发方式时:外部设备置位。所以,在边沿触发方式时:外部设备发出的边沿信号(高电平和低电平)的时间应大于一个机发出的边沿信号(高电平和低电平)的时间应大于一个机器周期,否则信号将可能漏检。器周期,否则信号将可能漏检。 2 2,如果采用,如果采用“电平电平”触发方式触发方式,CPUCPU采集到采集到INT0INT0或或INT1INT1的引脚为低电平时将激活标志的引脚为低电平时将激活标志IE0IE0或或IE1IE1。所以在这种触发。所以在这种触发方式中,外部的低电平至少应保留一个机器周期方式中,外部的低电平至少应保留一个机器周期。返回本节目录引脚图1.9.6 中断请求的撤除以外中断

177、电平触发为例:以外中断电平触发为例:当当CPUCPU响应该中断并进入响应该中断并进入到服务程序后,在执行到服务程序后,在执行RETIRETI返回主程序前,必须返回主程序前,必须将外部的低电平撤掉,否则,当将外部的低电平撤掉,否则,当CPUCPU返回主程序后,返回主程序后,会因为外部的低电平信号而再次进入中断,使程会因为外部的低电平信号而再次进入中断,使程序无法正常运行。序无法正常运行。同理,同理,其它中断源也存在类似的问题。所以在使其它中断源也存在类似的问题。所以在使用中断时必须清楚用中断时必须清楚在响应某一中断时,其中断请在响应某一中断时,其中断请求(标志)是否要撤除,如何撤除求(标志)是否

178、要撤除,如何撤除等问题。等问题。MCS-51的中断请求的撤除方法中断源中断源中断标志中断标志说说 明明撤除方法撤除方法INT0INT0、INT1INT1IE0IE0、IE1IE1外部边沿触发外部边沿触发无影响无影响INT0INT0、INT1INT1IE0IE0、IE1IE1外部电平触发外部电平触发电路、软件撤除电路、软件撤除T0T0、T1T1TF0TF0、TF1TF1定时计数器中断定时计数器中断自动清除标志自动清除标志ESESRIRI、TITI串行口中断串行口中断软件清除标志软件清除标志注:此表指使用中断服务程序来处理中断事件时的情况,如果采用查询标志的方法来处理事件时,都需要软件来清除标志。

179、撤除外部电平请求信号的方案 MCS-51INTXP1 .0D QCP S外部设备D型触发器中断服务程序RETI服务程序主体硬件电路部分返回本节目录1.9.7 中断响应时间(以外部中断INTx为例)每个机器周期的每个机器周期的S5P2S5P2时刻,时刻,INTxINTx引脚的电平被锁存到内引脚的电平被锁存到内部寄存器中,待下一个周期查询。部寄存器中,待下一个周期查询。 1 1,最短时间:,最短时间:中断请求有效,查询后在下一个周期便开始中断请求有效,查询后在下一个周期便开始执行一条硬件的子程序的调用(时间是两个周期),然后执行一条硬件的子程序的调用(时间是两个周期),然后开始执行服务程序的第一条

180、指令。这样从锁存电平的周期开始执行服务程序的第一条指令。这样从锁存电平的周期到执行中断服务程序,中间相隔到执行中断服务程序,中间相隔3 3个机器周期。个机器周期。C1C1C2C2C3C3C4C4C5C5电平锁存 中断查询 长调用 执行中断服务程序 返回前一次2 2,最长时间:最长时间:如果中断信号发生在如果中断信号发生在前面所说前面所说的的3 3种情况时,种情况时, 响应时间就要变长:响应时间就要变长: 第第1 1种情况:种情况:响应时间取决于高级中断的执行时间;响应时间取决于高级中断的执行时间; 第第2 2种情况:种情况:指当前指当前CPUCPU执行的指令是多周期指令,如乘除执行的指令是多周

181、期指令,如乘除 法指令(法指令(4 4个周期),最坏情况,还要等个周期),最坏情况,还要等3 3个周个周 期。这样期。这样响应周期变为响应周期变为3+3=63+3=6个周期;个周期; 第第3 3种情况:种情况:CPUCPU当前执行的指令是当前执行的指令是RETIRETI或访问或访问IEIE、IPIP寄存器寄存器 时,本指令(时,本指令(1 1个周期)没有响应,且下一条指个周期)没有响应,且下一条指 令执行完后才能响应,这样附加的等待时间最长令执行完后才能响应,这样附加的等待时间最长 不会超过不会超过5 5个周期(个周期(1+41+4)。整个响应为)。整个响应为5+3=85+3=8个个 周期。这

182、样,如果不考虑第周期。这样,如果不考虑第1 1种情况,整个中断种情况,整个中断 响应的时间范围应当是:响应的时间范围应当是: 3 38 8个机器周期。个机器周期。返回上一页中断协议中断响应时间的不确定,在大多数场合下可能是中断响应时间的不确定,在大多数场合下可能是无关紧要的,但是对于一些较特殊的场合下,这无关紧要的,但是对于一些较特殊的场合下,这种响应时间的不确定往往会带来一些问题。种响应时间的不确定往往会带来一些问题。 如:利用中断来编制一个时钟程序时,便不如:利用中断来编制一个时钟程序时,便不可避免的带来误差,所以是要提醒大家注意。在可避免的带来误差,所以是要提醒大家注意。在程序中可以使用一些算法来减少这种误差(参考程序中可以使用一些算法来减少这种误差(参考清华的资料)清华的资料) 。 相对比较美国相对比较美国mircchipmircchip公司的公司的PICPIC单片机由于单片机由于使用单字节、单周期指令,使中断响应时间固定,使用单字节、单周期指令,使中断响应时间固定,所以从根本上消除了这种的情况。所以从根本上消除了这种的情况。 (本章结束)(本章结束)返回本节目录

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号