单片微型计算机原理及应用课件

上传人:博****1 文档编号:569717677 上传时间:2024-07-30 格式:PPT 页数:392 大小:3.70MB
返回 下载 相关 举报
单片微型计算机原理及应用课件_第1页
第1页 / 共392页
单片微型计算机原理及应用课件_第2页
第2页 / 共392页
单片微型计算机原理及应用课件_第3页
第3页 / 共392页
单片微型计算机原理及应用课件_第4页
第4页 / 共392页
单片微型计算机原理及应用课件_第5页
第5页 / 共392页
点击查看更多>>
资源描述

《单片微型计算机原理及应用课件》由会员分享,可在线阅读,更多相关《单片微型计算机原理及应用课件(392页珍藏版)》请在金锄头文库上搜索。

1、单片微型计算机原理及应用单片微型计算机原理及应用2024/7/301第一章第一章第一章第一章概述概述第二章第二章第二章第二章mcs-51单片机结构及原理单片机结构及原理第三章第三章第三章第三章 MCS-51单片机指令系统及编程举例单片机指令系统及编程举例第四章第四章第四章第四章单片机定时功能及应用单片机定时功能及应用第五章第五章第五章第五章单片机的中断系统单片机的中断系统第六章第六章第六章第六章单片机串行口及应用单片机串行口及应用第七章第七章第七章第七章单片机系统扩展单片机系统扩展第八章第八章第八章第八章 D/A、A/D转换器接口及应用转换器接口及应用目目录录2024/7/3021定义定义:单

2、片机全称为单片微型机算计(:单片机全称为单片微型机算计(single-chipMicrocomputer),),它在一块芯片上集成了它在一块芯片上集成了CPU、RAM、ROM(EPROM,E2PROM)CTC和多个和多个I/O口,此外,有的单片机如口,此外,有的单片机如8096单片机上还集成单片机上还集成第一章第一章概述概述一单片机的定义及特点一单片机的定义及特点测量与显示:测量与显示:如各种智能仪表,用于提高测试与显示的如各种智能仪表,用于提高测试与显示的自动化程度和准确度。自动化程度和准确度。3.应用领域应用领域:主要应用于以下几方面:主要应用于以下几方面2特点特点:单片机的体积小,可靠性

3、高,价格便宜,功耗低,:单片机的体积小,可靠性高,价格便宜,功耗低,它是目前应用最广泛的工业控制微机。它是目前应用最广泛的工业控制微机。了了ADC和和DAC转换芯片。转换芯片。2024/7/303机电一体化工业机电一体化工业:如加工中心,用于提高加工的自动化程度:如加工中心,用于提高加工的自动化程度和精度。和精度。第一代第一代:1976-1978年,典型产品为年,典型产品为MCS-48,8位位CPU,并行并行I/O口,口,8位定时计数器,无串行位定时计数器,无串行I/O口口,RAM、ROM容容量较小,寻址范围小于量较小,寻址范围小于4KB。二、二、单片机的发展概况单片机的发展概况日常生活日常生

4、活:如各种家电中,用于提高家电的自动化程度,增强:如各种家电中,用于提高家电的自动化程度,增强其功能。其功能。实时控制系统实时控制系统:对一些实时过程的控制与监测,实现过程中数:对一些实时过程的控制与监测,实现过程中数据的实时处理与控制,从而保证系统的最佳工据的实时处理与控制,从而保证系统的最佳工作状态,提高系统的工作效率和产品质量。作状态,提高系统的工作效率和产品质量。4l第二代第二代:1980年年-至今,典型产品为至今,典型产品为MCS-51,8位位CPU,并行并行I/O口,增有串行口,增有串行I/O口,口,16位定时位定时/计数器,可进行计数器,可进行中断处理,具有并行三总线结构,中断处

5、理,具有并行三总线结构,RAM,ROM容量容量较大,最大寻址范围为较大,最大寻址范围为64KB。典型产品有典型产品有8051,8751和和8031。其三种芯片的主要区别在于:。其三种芯片的主要区别在于:ROM,EPROM和外接和外接EPEOM。8051内部程序要有生产芯片的厂内部程序要有生产芯片的厂家写入,适用于低成本大批量生产;家写入,适用于低成本大批量生产;8751片内程序可由用户固化片内程序可由用户固化1.MCS-51系列简介:系列简介:三、三、常用单片机系列介绍常用单片机系列介绍l第三代第三代:1982-至今,典型产品为至今,典型产品为MCS-96,是是8位机的进一步完位机的进一步完善

6、,善,16位位CPU,具有串、并行的通信功能,定时、计具有串、并行的通信功能,定时、计数、中断处理的功能更强,数、中断处理的功能更强,RAM、ROM容量更大,容量更大,并增加了多通道并增加了多通道A/D及及D/A转换器,寻址范围为转换器,寻址范围为64KB。5RAM:ROM:EPROM:或清除,价格相对较贵,适用于开发样机;或清除,价格相对较贵,适用于开发样机;8031芯片必须外接芯片必须外接ROM,适用于较方便进行修改和更新程序记忆的场合。适用于较方便进行修改和更新程序记忆的场合。2.存储器简介存储器简介:memory是单片机的主要组成部分之一,主要用于是单片机的主要组成部分之一,主要用于存

7、储信息,它的分类如下:存储信息,它的分类如下:可擦除可编程的只读可擦除可编程的只读ROM,用紫外线可擦用紫外线可擦除其内容,用专用设备用户可固化信息。除其内容,用专用设备用户可固化信息。内存内存:随机存储器,其中信息可读可写,断电丢失全随机存储器,其中信息可读可写,断电丢失全部内容。部内容。只读存储器,用户不可更改其内容,与只读存储器,用户不可更改其内容,与EPROM同样,断电仍可保存信息。同样,断电仍可保存信息。外存外存:可随时读写并永久保存信息可随时读写并永久保存信息但硬盘存储容量但硬盘存储容量硬盘:硬盘:6软盘:软盘:优盘:优盘:光盘:光盘:可随时读取信息,容量大,随身携带方便,可随时读

8、取信息,容量大,随身携带方便,也可对其进行写操作并永久保存信息,但必也可对其进行写操作并永久保存信息,但必须配备专门的刻盘机。须配备专门的刻盘机。有限,随身携带不方便。有限,随身携带不方便。软盘可随时读写并永久保存信息,其容量小软盘可随时读写并永久保存信息,其容量小但可无限扩充,随身携带方便。但可无限扩充,随身携带方便。四、数制及其间的转换四、数制及其间的转换1数制:数制:常用的计数方法,有二(常用的计数方法,有二(B)、)、八八(Q)、十(十(D)、)、十十六(六(H)、)、十二及六十进制等。十二及六十进制等。基:指数制所使用数码的个数。基:指数制所使用数码的个数。如:如:B(2),),Q(

9、8),),D(10)、)、H(16)。)。特点同软盘,但容量较软盘大很多,比硬盘小。特点同软盘,但容量较软盘大很多,比硬盘小。7权:指数制的每一位数码所对应的值,几进制数的权就是以几权:指数制的每一位数码所对应的值,几进制数的权就是以几为底的幂,即权为基的幂。为底的幂,即权为基的幂。十进制转换为二,八,十六进制时,原则为十进制转换为二,八,十六进制时,原则为整数部分除整数部分除基取基取余余,先出低位,先出低位,小数部分乘基取整小数部分乘基取整,先出高位,先出高位。例例1432D=1000101B(取四位小数,并非精确)取四位小数,并非精确)例例225473D=37656Q=FEBA二,八,十六

10、进制转换为十进制时,原则为二,八,十六进制转换为十进制时,原则为按权展开相加按权展开相加。例例1FFFFH=15163+15162+15161+15160=65535例例210111100101B=27+25+24+23+22+2-1+2-3=188625D2数制之间相互转换的原则数制之间相互转换的原则:例:例:1010B的基为的基为2,各位的权分别为:,各位的权分别为:23、22、21和和20。8机器数机器数:数字在机器中的表示方式称为机器数,即将符号:数字在机器中的表示方式称为机器数,即将符号(+,)也作为数字的一部分。具体地说,在存储,)也作为数字的一部分。具体地说,在存储数据时,最高一

11、位用来表示数字的符号,当数字为数据时,最高一位用来表示数字的符号,当数字为正时,最高一位的值为正时,最高一位的值为0,当数字为负时,最高一,当数字为负时,最高一位的为值位的为值1。机器数有原码、反码和补码三种形式。机器数有原码、反码和补码三种形式。3数在计算机中的表示方法数在计算机中的表示方法真值真值:一个数的实际大小称为这个数的真值。:一个数的实际大小称为这个数的真值。原码原码:正数的符号位用:正数的符号位用0表示,负数的符号位用表示,负数的符号位用1表示,符号表示,符号位之后是数字的真值,此法表示的数字称为数的原码。位之后是数字的真值,此法表示的数字称为数的原码。正数的原码与其真值相同。正

12、数的原码与其真值相同。9例:例:对于对于8位数据,位数据,+35H表示为表示为+35H原码原码=00110101,35H表示为表示为-35H原码原码=10110101,+0原码原码=00000000,-0原码原码=10000000例:例:对于对于8位数据,位数据,+35H表示为表示为+35H反码反码=00110101,35H表示为表示为-35H反码反码=11001010,+0反码反码=00000000-0反码反码=11111111反码反码:正数的反码与其原码相同,负数的反码则为其对应的:正数的反码与其原码相同,负数的反码则为其对应的原码按位取反(符号位除外)。原码按位取反(符号位除外)。10补

13、码补码:正数的补码与其原码相同,负数的补码则为其对应的原:正数的补码与其原码相同,负数的补码则为其对应的原码按位取反(符号位除外)加码按位取反(符号位除外)加1。计算机中所能表示的计算机中所能表示的符号数符号数的范围为:的范围为:-2n-12n-11,n为数据的位数。为数据的位数。注注注注 计算机中所有的符号数都是用计算机中所有的符号数都是用补码补码表示的。表示的。例:对于例:对于8位数据,位数据,+35H表示为:表示为:+35补码补码=00110101,35H表示为:表示为:-35补码补码=11001011,+0补码补码=-0补码补码=00000000。当当n=8时,所能表示的符号数的范围为

14、:时,所能表示的符号数的范围为:-128127,当当n=16时,所能表示的符号数的范围为:时,所能表示的符号数的范围为:-3276832767。11已知一个数的补码时,其真值为:已知一个数的补码时,其真值为:正数正数真值真值=正数正数补码补码负数负数真值真值=负数负数补码补码取反取反(符号位除外)(符号位除外)1例:例:Y=11710=117补补+10补补=10001011+1110110=110000001=-127将减数与减号一起变为补码后再与被减数的补码相加,将减数与减号一起变为补码后再与被减数的补码相加,其和(如有进位则舍弃进位)就是两数之差。其和(如有进位则舍弃进位)就是两数之差。利

15、用补码可将减法转换为加法以简化硬件电路,具体原理为:利用补码可将减法转换为加法以简化硬件电路,具体原理为:例:例:x=01001101,则则x真值真值=01001101=77Dx=10110101, 则则x真真 值值=11001010+1=11001011=75D124ASCII码:码:(又称字符编码)(又称字符编码)5BCD码码用四位二进制数表示一位十进制数的编码称为用四位二进制数表示一位十进制数的编码称为BCD码。码。以上这些字符在计算机中都用固定的二进制数表示,国际上以上这些字符在计算机中都用固定的二进制数表示,国际上目前采用最常用的美国信息标准代码也称目前采用最常用的美国信息标准代码也

16、称ASCII码码来表示。要求来表示。要求大家记住前两类字符的大家记住前两类字符的ASCII码值。码值。英文字母英文字母AZ及及az;数字字符数字字符09:专用字符:专用字符:+,/,空格和各种标点符号;,空格和各种标点符号;各种非打印字符如:各种非打印字符如:CR(回车),回车),LF(换行),换行),BELL(响铃)等。响铃)等。计算机处理的信息并不全是数字,有时还要处理字符和字计算机处理的信息并不全是数字,有时还要处理字符和字符串,常见的字符有:符串,常见的字符有:13第二章第二章mcs-51单片机结构及原理单片机结构及原理2.1mcs-51单片机结构单片机结构2.2mcs-51的存储器结

17、构的存储器结构2.3单片机的时序单片机的时序14第一节第一节mcs-51单片机结构单片机结构一、一、mcs-51单片机内部结构简介单片机内部结构简介二二8051CPU的组成及其功能的组成及其功能三三MCS-51引脚及功能引脚及功能单片机内部最核心的部分是单片机内部最核心的部分是CPU,CPU的主要功能是产的主要功能是产生各种控制信号,控制存储器及输入生各种控制信号,控制存储器及输入/输出端口的数据传送,实输出端口的数据传送,实现数据的算术运算、逻辑运算以及位操作处理等功能。现数据的算术运算、逻辑运算以及位操作处理等功能。15外时钟源外时钟源振荡器和时序振荡器和时序OSC程序存储器程序存储器4K

18、BROM数据存储器数据存储器256BRAM/SFR外部事件计数器外部事件计数器216位位定时器定时器/计数器计数器8051CPU内中断内中断外中断外中断64KB总线总线扩展控制器扩展控制器可编程可编程I/OP0P3可编程全可编程全双工串行口双工串行口控制控制并行口并行口串行通信串行通信168051CPU的组成及其功能的组成及其功能指令译码器:指令译码器:将指令将指令RS的指令转换成电信号,再经逻辑控制的指令转换成电信号,再经逻辑控制电路产生各种控制信号。电路产生各种控制信号。指令指令Register(RS):8位,用于暂存待执行的指令,等待译码。位,用于暂存待执行的指令,等待译码。(译码前指令

19、为(译码前指令为0、1代码,译码后指令为电信号)代码,译码后指令为电信号)PC程序计数器程序计数器:16位专用位专用RS,用于存放下一条将要执行的指用于存放下一条将要执行的指令地址,有自动加令地址,有自动加1的功能,它可保证程序按的功能,它可保证程序按一定顺序执行。一定顺序执行。8051CPU由控制器与运算器两部分组成由控制器与运算器两部分组成1控制器控制器:17数据指针数据指针DPTR:16位专用地址指针位专用地址指针RS,主要用于存放主要用于存放16位位地址,作间址地址,作间址RS使用,也可拆成两个使用,也可拆成两个8位位RS,DPH和和DPL,它们片内它们片内RAM中占据中占据的地址分为

20、的地址分为83H和和82H。8051CPU的组成及其功能的组成及其功能定时控制与条件转移逻辑电路:定时控制与条件转移逻辑电路:不介绍。不介绍。2运算器运算器累加器累加器ACC:8位专用位专用RS,用于存放操作数或中间结果,是用于存放操作数或中间结果,是188051CPU的组成及其功能的组成及其功能程序状态字程序状态字RS(PSW):8位专用位专用RS,用于存放程序运行中用于存放程序运行中的各种状态信息,它可以进行位操的各种状态信息,它可以进行位操作,作,PSW的字节地址为的字节地址为D0H,位地位地址为址为D0D7H。各位的含义如下各位的含义如下:算逻运算部件:算逻运算部件:此部件实现算数运算

21、与逻辑运算的功能,其此部件实现算数运算与逻辑运算的功能,其运算结果的状态送运算结果的状态送PSW中。中。CPU中使用最频繁的一个中使用最频繁的一个RS,也是也是21个个SFR中的一个。中的一个。CY(PSW.7):):进位标志,表示在进行进位标志,表示在进行无符号无符号加减时,最加减时,最19高位有无向更高位进(借)位,当有进位高位有无向更高位进(借)位,当有进位CY=1,无则无则CY=0程序状态字程序状态字RS(PSW)各位的含义各位的含义RS1,RS0(PSW.4,PSW.3):):RS组选择标志,用于选择内组选择标志,用于选择内部部RAM中中4个个RS中的一组它中的一组它们的关系如下:们

22、的关系如下:F0(PSW.5):):用户标志位,由用户通过程序设置用户标志位,由用户通过程序设置1或或0,表示,表示程序处于某种状态,为后续程序执行提供条件。程序处于某种状态,为后续程序执行提供条件。AC(PSW.6):):半进位标志,表示在进行无符号加减时,半进位标志,表示在进行无符号加减时,D3位有无向位有无向D4位进(借)位,当有位进(借)位,当有AC=1,无无则则AC=0,主要用于主要用于BCD码的判断位。码的判断位。20RS1RS0寄存器组寄存器组片内片内RAM地址地址00第第0组组00H07H01第第1组组08H0FH10第第2组组10H17H11第第3组组18H1FH程序状态字程

23、序状态字RS(PSW)21B寄存器寄存器:用于乘除法操作,:用于乘除法操作,8位位RS,是是21个个SFR中之一,中之一,B用来存放第二操作数,即用于存放乘法的高位字节用来存放第二操作数,即用于存放乘法的高位字节或除法的余数部分。或除法的余数部分。OV(PSW.2):):溢出标志,当进行符号数运算时可表示是否溢出标志,当进行符号数运算时可表示是否有溢出,则有溢出,则OV=1,无则无则OV=0,溢出的逻辑溢出的逻辑表达式为表达式为OV=C6Y C7YF1(PSW.1):保留位,无定义。保留位,无定义。P(PSW.0):):奇偶标志位,表示累加器奇偶标志位,表示累加器A中含中含“1”个数个数的的奇

24、奇偶性,当偶性,当A中有奇数个中有奇数个1,则,则P=1,否则否则P=0。(与与A内容的奇偶无关)。内容的奇偶无关)。暂存器暂存器:暂存数据信息。:暂存数据信息。22MCS-51采用采用40引脚双列直插式封装引脚双列直插式封装(DIP)形式形式,(看看P28图图2-6)。)。1.主电源引脚:主电源引脚:Vss(地地)和和Vcc(+5v)。2.外接晶振引脚:有两个外接晶振引脚:有两个三三MCS-51引脚及功能引脚及功能3控制信号引脚:控制信号引脚:XTAL2:片内晶振器输出端,当使用外部晶振器,作为晶振片内晶振器输出端,当使用外部晶振器,作为晶振信号的输入端。信号的输入端。XTAL1:片内晶振器

25、输入端,当使用外部晶振器,此端接地。片内晶振器输入端,当使用外部晶振器,此端接地。RST/VPD:系统复位系统复位/备用电源输入引脚,输入信号,有两个备用电源输入引脚,输入信号,有两个作用:作用:2324四个四个I/O口口P1P3锁存器均被初始化为锁存器均被初始化为0FFH;堆栈指针寄存器堆栈指针寄存器SP=07H;而而SUBF寄存器的内容寄存器的内容不确定不确定;其它其它各专用各专用RS均被写成均被写成00H;内部内部RAM不受复位影响,上电后不受复位影响,上电后RAM内容为随机。内容为随机。MCS-51引脚及功能引脚及功能当电源电压下降时,此引脚可为备用电源输入线,为片内当电源电压下降时,

26、此引脚可为备用电源输入线,为片内RAM提供备用电源。提供备用电源。RST端维持两个机器周期以上的高电平时将使单片机复位端维持两个机器周期以上的高电平时将使单片机复位。复位后复位后CPU各寄存器的特点为:各寄存器的特点为:25MCS-51引脚及功能引脚及功能当片内有当片内有EPROM时,可作为编程脉冲输入端使用。时,可作为编程脉冲输入端使用。访问外部访问外部memory时,时,ALE端仍以不变的频率周期性的输出正端仍以不变的频率周期性的输出正脉冲信号,且脉冲信号,且fALE=1/6fosc,所以可用作对外输出的时钟信号所以可用作对外输出的时钟信号和定时作用;和定时作用;当当CPU访问外部访问外部

27、memory初时,产生正脉冲初时,产生正脉冲ALE信号输出,在信号输出,在其后沿将其后沿将P0口输出的低口输出的低8位地址锁存于外部地址锁存器中;位地址锁存于外部地址锁存器中;PSEN:外部程序外部程序memory(EPROM)选通信号线,当选通信号线,当CPU读读取外部程序时,取外部程序时,PSEN每个机器周期两次有效。每个机器周期两次有效。ALE/PROG:外部扩展电路的地址锁存信号外部扩展电路的地址锁存信号/编程脉冲编程脉冲输入端,有三个作用。输入端,有三个作用。26EA/VPP:程序程序memory选择线选择线/编程时电源输入线,作用如下:编程时电源输入线,作用如下:MCS-51引脚及

28、功能引脚及功能准准双双向向端端口口工工作作特特点点:只只有有使使端端口口锁锁存存器器事事先先置置“1”,才才能能使使对对应应口口的的I/O引引脚脚作作为为输输入入线线使使用用,而而CPU执执行行输输出出操操作作时时,不管端口的状态如何都能直接输出信号。不管端口的状态如何都能直接输出信号。4输入输出引脚:输入输出引脚:P0、P1、P2、P3均为准双向端口。均为准双向端口。当当EA=1时,如果时,如果PC0FFFH时时,则则CPU访问片内访问片内ROM,否则否则CPU自动转向外部自动转向外部EPROM。当当EA=0时时CPU只能访问只能访问片外片外memory;对于片内有对于片内有EPROM,编程

29、时,此引脚接编程时,此引脚接21v编程编程VPP;27P0P3除作为一般的除作为一般的I/O线使线使用外用外,还有以下功能:还有以下功能:MCS-51引脚及功能引脚及功能P3口:第二功能见口:第二功能见P27表表27。复位后。复位后P3口的第二功能口的第二功能可直接使用,但复位前必须先置口内锁存器可直接使用,但复位前必须先置口内锁存器FFH才能用。才能用。P2口;当口;当CPU访问外部访问外部memory时,时,P2口可作为外部高口可作为外部高8位地址的输出线。位地址的输出线。P1口:在口:在EPROM编程验证程序时输入低编程验证程序时输入低8位地址。位地址。P0口:当口:当CPU访问外部访问

30、外部memory时,时,P0口可分时作为低口可分时作为低8位地址线和位地址线和8位双向数据线用。位双向数据线用。28P3口线口线第二功能第二功能P3.0RXD(串行口输入串行口输入)P3.1TXD(串行口输出串行口输出)P3.2INT0(外部中断外部中断0输入输入)P3.3INT1(外部中断外部中断1输入)输入)P3.4T0(定时器定时器0的外部输入)的外部输入)P3.5T1(定时器定时器1的外部输入)的外部输入)P3.6WR(片外数据存储器写选通输出)片外数据存储器写选通输出)P3.7RD(片外数据存储器读选通输出)片外数据存储器读选通输出)29第二节第二节MCS-51的存储器结构的存储器结

31、构MCS-51单片机单片机物理物理上有上有4个存储空间:片内程序存储器,个存储空间:片内程序存储器,片外程序存储器,片内数据存储器,片外数据存储器。这些存片外程序存储器,片内数据存储器,片外数据存储器。这些存储器结构的物理特点是:程序存储器和数据存储器空间是相互储器结构的物理特点是:程序存储器和数据存储器空间是相互独立的,片内数据存储器和片外数据存储器空间也是相互独立独立的,片内数据存储器和片外数据存储器空间也是相互独立的,所以从的,所以从逻辑逻辑上又可分为上又可分为3个存储空间个存储空间:片、外统一编址的片、外统一编址的程序存储器,片内数据存储器和片外数据存储器程序存储器,片内数据存储器和片

32、外数据存储器。30CPU通过通过P0,P2口送出要访问存储单元的地址口送出要访问存储单元的地址A0A15。CPU发出发出ALE信号把信号把P0口地址信号口地址信号A0A7锁入锁存器锁入锁存器存储器按存储器按A0A15地址进行译码,找到要访问的单元。地址进行译码,找到要访问的单元。如下页图如下页图,MCS-51访问外部存储器,粗略的讲可分为以访问外部存储器,粗略的讲可分为以下四步:下四步:CPU发出发出PSEN信号,把外部信号,把外部EPROM中中A0A15指向单指向单元中的数据信息经元中的数据信息经P0口送入口送入CPU;或或CPU发出发出RD信号信号将外部将外部RAM中中A0A15所指向单元

33、的所指向单元的data经经P0口读入;口读入;或或CPU发出发出WR信号将信号将data经经P0口写入外部口写入外部RAMA0A15所指向单元。所指向单元。一、一、MCS-51单片机内、外存储器系统简介单片机内、外存储器系统简介31ROM4KBRAM(21个个)SFRRDWRPSENRDWRDE地址地址锁存器锁存器EPROM64KBRAM64KBALEP0口口P2口口MCS51+5VREAS32二、二、MCS-51各存储器具体说明:各存储器具体说明:外部程序存储器用于存放程序、程序执行时必要常数和表格。外部程序存储器用于存放程序、程序执行时必要常数和表格。外部程序存储器外部程序存储器EPROM

34、:MCS-51可以扩展可以扩展64K字节的字节的EPROM,其中:其中:外部程序存储器的容量为外部程序存储器的容量为64K字节,地址为字节,地址为0000HFFFFH,当当EA=1时:时:CPU可以访问内部程序存储器可以访问内部程序存储器0000H0FFFH单单元和外部程序存储器元和外部程序存储器1000HFFFFH之间的各存储器单元;之间的各存储器单元;当当EA=0时时CPU可访问可访问0000HFFFFH全部全部64K的片外程序存的片外程序存储器。储器。外部程序存储器受外部程序存储器受PC管理,管理,PC的内容始终指向下一条将的内容始终指向下一条将要执行的指令所在的地址,要执行的指令所在的

35、地址,PC具有自动加具有自动加1的功能,保证的功能,保证程序按顺序执行。程序按顺序执行。33MCS-51单片机内部单片机内部EPROM容量为容量为4K字节,地址范围为字节,地址范围为0000H0FFFH,在在EA=1时,且时,且PC的值小于等于的值小于等于0FFFH时,时,CPU才可访问片内才可访问片内EPROM,而片内而片内EPROM与片外与片外EPROM同同样受样受PC管理,软件上也用管理,软件上也用movc类指令访问。类指令访问。外部程序存储器由外部程序存储器由PSEN信号选通,正常运行时其内信号选通,正常运行时其内容只能读出,不能写入,掉电时其内容不消失。容只能读出,不能写入,掉电时其

36、内容不消失。程序存储器由程序存储器由movc类指令访问,类指令访问,CPU在执行这类指令在执行这类指令时,可以使时,可以使PSEN信号有效,从而选中信号有效,从而选中EPROM.。内部程序存储器内部程序存储器EPROM:34外部数据存储器主要存放运行程序的过程中所需的外部数据存储器主要存放运行程序的过程中所需的数据,中间结果和最终结果。数据,中间结果和最终结果。外部数据存储器由外部数据存储器由movx类指令访问。类指令访问。外部数据存储器由外部数据存储器由WR或或RD信号选通,可以写入,信号选通,可以写入,也可以读出,掉电时内容消失。也可以读出,掉电时内容消失。外部数据存储器的容量为外部数据存

37、储器的容量为64K字节,地址为字节,地址为0000HFFFFH。外部数据存储器受外部数据存储器受datapoint(数据指针)数据指针)DPTR和和工作寄存器管理。工作寄存器管理。外部数据存储器外部数据存储器RAM:35注:注:EPROM与与RAM的地址都是的地址都是0000HFFFFH,但但CPU对它们的访问是相互独立的,不会产对它们的访问是相互独立的,不会产生二意性,即生二意性,即CPU给出一个地址,不会同时给出一个地址,不会同时选中选中2个地址,因为个地址,因为RAM在硬件上由在硬件上由RD或或WR信号选通,软件上由信号选通,软件上由movx类指令访问,而类指令访问,而EPROM在硬件上

38、由在硬件上由PESN信号选通,软件上信号选通,软件上由由movc类指令访问。类指令访问。36位寻址空间位寻址空间:内部:内部RAM中,地址中,地址20H2FH共共16个字节单元个字节单元共共128个位)具有位寻址的功能,即个位)具有位寻址的功能,即CPU可对这可对这16个字节中的个字节中的每一位单独进行操作,所以每一位单独进行操作,所以20H2FH区域是区域是MCS-51单片机单片机MCS-51芯片内部有芯片内部有128个字节(个字节(BYTE)的内部数据存储器的内部数据存储器RAM(称片内(称片内RAM),),地址为地址为00H7FH,有有128B的特殊功能的特殊功能Register(SFR

39、),),地址为地址为80HFFH,也称高地址区,共也称高地址区,共256个字个字节的存储空间。节的存储空间。工作寄存器工作寄存器R:内部内部RAM中中00H1FH单元(共单元(共32B)为通为通用工作用工作Register区,分为区,分为4组,每组组,每组8个字节,均可用作个字节,均可用作R0R7,用户可根据用户可根据PSW中的中的RS1和和RS0的值选择相应的工作的值选择相应的工作R组。组。4.MCS-51内部内部RAM37布尔处理机的一个存储空间,其中:布尔处理机的一个存储空间,其中:20H2FH对应此存储区对应此存储区中中16个字节每一个字节的地址,因为每个字节有个字节每一个字节的地址,

40、因为每个字节有8位,所以此位,所以此存储区共有存储区共有168=128位供单独操作,这位供单独操作,这128个位的地址规定个位的地址规定为为00H7FH(RAM的低区地址也是的低区地址也是00H7FH),),在使用中由在使用中由软件加以区分。如:软件加以区分。如:MCS-51内部内部RAM且有:且有:对应的字节地址对应的字节地址=20H+位地址位地址/8,(位地址(位地址/8的的余数余数为该位在该字节中所处的具体位置)。为该位在该字节中所处的具体位置)。mov20H,A(字节操作字节操作);20H单元单元A的内容的内容mov20H,C(位操作)位操作);布尔处理机存储空间第布尔处理机存储空间第

41、20位位(即(即24H单元中的第单元中的第0位)中位)中PSW中进位位中进位位CY内容内容。3830H7FH空间空间:用户:用户RAM区,共区,共80个字节,此部分空间可个字节,此部分空间可以作为以作为buffer、堆栈区等存储单元用,但不能作为工作寄存堆栈区等存储单元用,但不能作为工作寄存器用,不能进行位寻址。器用,不能进行位寻址。例:位地址例:位地址7AH对应的字节地址的计算方法是:对应的字节地址的计算方法是:7AH/8,商为商为F,余数为余数为2,表示该位处于片内表示该位处于片内RAM2FH(20H+F)字节的第二位。字节的第二位。位地址位地址=(字节地址(字节地址-20H)8+N;其中

42、:其中:N=07,为该位在此字节中的位置,为该位在此字节中的位置,例:例:2EH中的第中的第6位对应的位地址位对应的位地址=(2EH-20H)8+6=76H。对于工作对于工作Regester区(区(00H1FH)单元,没有被选中的工作单元,没有被选中的工作Regester单元与单元与30H7FH单元具有同样功能。单元具有同样功能。39MCS-51特殊功能特殊功能Register(SFR):80H0FFH而在而在80HFFH这这128个字节中除去个字节中除去SFR占用的占用的21个字节外其余个字节外其余字节均无定义,所以访问无定义的单元得到的是一个随即数。字节均无定义,所以访问无定义的单元得到的

43、是一个随即数。位寻址空间:在位寻址空间:在SFR中凡是字节地址能中凡是字节地址能被被8整除整除的的SFR均有位均有位寻址功能(即:寻址功能(即:末位地址为末位地址为8或或0的的SFR)。)。SFR与与RAM(007FH)的区别:的区别:SFR作为源操作数时只能采作为源操作数时只能采用用直接寻址直接寻址,寄存器间接寻址对其无效,但对,寄存器间接寻址对其无效,但对RAM有效。有效。SFR的分布:的分布:MCS-51单片机共有单片机共有21个个SFR(除除PC外,外,DPTR算作两个算作两个register),),它们分布在内部它们分布在内部RAM的的80H0FFH(占占21个字节)。个字节)。40

44、SP:堆栈指针,堆栈指针,是个是个8位位SFR,在在RAM中的地址值为中的地址值为81H,其,其内容用于指示堆栈栈顶(已存有数据的堆栈存储单元)内容用于指示堆栈栈顶(已存有数据的堆栈存储单元)的地址值。每当有数据进栈时的地址值。每当有数据进栈时SP值自动加值自动加1,出栈时自动,出栈时自动减减1,当系统复位后,当系统复位后,SP=07H,即堆栈实际上是由即堆栈实际上是由08H单单元开始。元开始。串行数据缓冲器串行数据缓冲器SBUF:是个是个8位的位的SFR,地址为地址为99H,用于存用于存放串行通讯时待发送或已接受到的数据,它由两个独立的寄存放串行通讯时待发送或已接受到的数据,它由两个独立的寄

45、存器(发送器(发送buf和接收和接收buf)组成,但它们共用一个地址。组成,但它们共用一个地址。堆栈堆栈:是个具有先入后出特点的一片存储区,堆栈的真正工作区:是个具有先入后出特点的一片存储区,堆栈的真正工作区一般选在片内一般选在片内RAM的的30H7FH内。内。几个常用几个常用SFR的基本功能的基本功能41定时器定时器/计数器计数器T0/T1:8051系列单片机有两个系列单片机有两个16位的定时器位的定时器/计数器计数器T0和和T1,它们分别为它们分别为TL0,TL1和和TH0,TH1四个四个8位的独立位的独立SRF,在片内在片内RAM地址为地址为8AH8DH。注意:注意:T0与与T1不能作为

46、不能作为2个个16位的位的RS来对待。来对待。42第三节单片机的时序第三节单片机的时序一条指令可分解为若干个基本的微操作,而这些操作所对应一条指令可分解为若干个基本的微操作,而这些操作所对应的脉冲信号在时间上有严格的先后次序,这就称为计算机的的脉冲信号在时间上有严格的先后次序,这就称为计算机的时序时序。要求掌握以下几个概念:要求掌握以下几个概念:二、二、CPU的时序的时序一、一、MCS-51单片机的复位方法及复位后内部单片机的复位方法及复位后内部各各SFR状态状态复位后内部各复位后内部各SFR的状态:看的状态:看P21表表2.3。MCS-51单片机的复位方法:上电自动复位单片机的复位方法:上电

47、自动复位按钮手动复位按钮手动复位431.振荡周期振荡周期T振振:也称时钟周期,指为单片机提供时钟信号的振荡:也称时钟周期,指为单片机提供时钟信号的振荡2.源源的的周周期期,当当晶晶振振频频率率为为12MHz时时T振振=1/12us。CPU的时序的时序指令周期指令周期T指指:指令周期是指执行一条指令所需要的时间,一:指令周期是指执行一条指令所需要的时间,一般情况下,般情况下,T指指=(14)T机机,MCS51系列单片机执行一条系列单片机执行一条最长的指令(如乘、除法指令)需要最长的指令(如乘、除法指令)需要4个机器周期,即个机器周期,即4us时间。时间。机器周期机器周期T机机:指:指CPU完成某

48、些基本操作的所需要的时间,完成某些基本操作的所需要的时间,1个个机器周期包含机器周期包含6个状态周期。个状态周期。T机机=6T状状=12T振振=1us。2.状态周期状态周期T状状:也称:也称S周期,由两个振荡周期组成一个时钟周期。周期,由两个振荡周期组成一个时钟周期。如上例中:如上例中:T状状=Ts=21/12=1/6us。44第三章第三章MCS-51单片机单片机指令系统及编程举例指令系统及编程举例指令指令:是控制计算机进行各种操作的运算代码形式的命令:是控制计算机进行各种操作的运算代码形式的命令(MCS-51有有42种助记符种助记符33个指令功能共个指令功能共111条指令)。条指令)。机器码

49、机器码:计算机所能辨认的命令是二进制代码,又称机器码或指:计算机所能辨认的命令是二进制代码,又称机器码或指令代码称。一种计算机有几十种甚至几百中指令,如果都用令代码称。一种计算机有几十种甚至几百中指令,如果都用程序程序:是人们为了完成某中预定的任务,将一系列指令,数据,:是人们为了完成某中预定的任务,将一系列指令,数据,地址按一定顺序排列而得到的一组指令。地址按一定顺序排列而得到的一组指令。指令系统指令系统:计算机所能识别执行的全部指令称作这种计算机的指:计算机所能识别执行的全部指令称作这种计算机的指令系统。各种计算机的指令系统各不相同。令系统。各种计算机的指令系统各不相同。45二进制代码,记

50、忆、书写,编程都很不方便,且易出错。二进制代码,记忆、书写,编程都很不方便,且易出错。汇编语言源程序汇编语言源程序:用助记符(操作码)、符号地址和标识符等:用助记符(操作码)、符号地址和标识符等书写的程序称之为汇编语言源程序。书写的程序称之为汇编语言源程序。汇编汇编:汇编语言源程序在机器执行前必须先转换为相应的机器码:汇编语言源程序在机器执行前必须先转换为相应的机器码方可被机器识别执行,这个过程称为翻译(汇编)。翻译方可被机器识别执行,这个过程称为翻译(汇编)。翻译程序的方法有两种:人工翻译,汇编软件自动翻译。程序的方法有两种:人工翻译,汇编软件自动翻译。助记符助记符:为解决上述问题,制造厂家

51、对指令系统中的每一条指令:为解决上述问题,制造厂家对指令系统中的每一条指令规定了特定的英文缩写符号称为助记符。规定了特定的英文缩写符号称为助记符。463.1指令格式简介指令格式简介3.2MCS-51的寻址方式的寻址方式3.3指令系统指令系统3.4伪指令伪指令3.5汇编程序设计及应用举例汇编程序设计及应用举例47第一节第一节指令格式简介指令格式简介汇编语言的标准格式为汇编语言的标准格式为:标号:标号:指令助记符指令助记符操作数操作数1,操作数,操作数2,操作数,操作数3;注释;注释操作码助记符操作码助记符:是汇编语言中每一行不可缺少的部分,它规定:是汇编语言中每一行不可缺少的部分,它规定了指令的

52、操作功能,操作码助记符是由了指令的操作功能,操作码助记符是由25个个字母组成的字符串,也是机器的保留字,操作字母组成的字符串,也是机器的保留字,操作码与操作数之间要用若干空格分开。码与操作数之间要用若干空格分开。标号标号:是用户定义的符号,它代表该条指令的符号地址,以英:是用户定义的符号,它代表该条指令的符号地址,以英文字母开始,由文字母开始,由18个字符(字母、数字和下划线个字符(字母、数字和下划线“-”)组成,以组成,以“:”结尾。标号不能使用机器的保留字,一结尾。标号不能使用机器的保留字,一个个程序中不允许重复定义标号。标号也称标识符。程序中不允许重复定义标号。标号也称标识符。48操作数

53、操作数:可以是具体的数字,也可以是符号或:可以是具体的数字,也可以是符号或RS名,操作名,操作数可分为源操作数数可分为源操作数SRC(source)和目的操作数和目的操作数DST(destination),),二者用逗号分开,有些指令二者用逗号分开,有些指令无操作数。无操作数。带带的内容可省。的内容可省。注释注释:注释必须以:注释必须以“;”开头,可有可无,可由任何可打印开头,可有可无,可由任何可打印的的ASCII码字符组成,用于解释说明程序。码字符组成,用于解释说明程序。49第二节第二节MCS-51的寻址方式的寻址方式例:例:movA,#data;将数字将数字dataA中中特点:特点:MCS

54、-51系列只有一条指令,其立即数为系列只有一条指令,其立即数为16位,这就是:位,这就是:movDPTR,#data16;DPHdata高高8位位DPLdata低低8位位#为立即数的前缀符号,为立即数的前缀符号,data可为可为16位,也可为位,也可为8位。位。指令操作码后面的一个字节就是操作数本身,立即数是指令操作码后面的一个字节就是操作数本身,立即数是放在程序存储器中的一个常数。放在程序存储器中的一个常数。1.立即寻址:立即寻址:50因为因为direct是是8位二进制数,所以直接寻址的范围主要有以下位二进制数,所以直接寻址的范围主要有以下三个地址空间:三个地址空间:2.直接寻址:直接寻址:

55、例:例:movA,70H;RAM区区70H单元的内容单元的内容A中。特点为中。特点为:指令操作码后面的一个字节就是实际操作数的地址(指令操作码后面的一个字节就是实际操作数的地址(8位)。位)。指令中的直接地址可用指令中的直接地址可用direct表示表示,例,例pushdirect;功能为将功能为将direct所指示的片内所指示的片内RAM中单元的内容中单元的内容堆栈中。堆栈中。内部内部RAM及及SFR中,可进行位寻址的位地址空间共中,可进行位寻址的位地址空间共211位位(内部(内部RAM中有中有20H2FH中有中有128个位,个位,SFR中有中有83位)位)内部内部RAM00H7FH地址空间(

56、地址空间(128个字节);个字节);特殊功能特殊功能R,即即SFR(直接寻址是访问直接寻址是访问SFR的唯一寻址方式的唯一寻址方式);513.寄存器寻址:寄存器寻址:例:例:movA,Rn(n=07);将将Rn内容内容A中中特点:特点:RS的内容就是操作数本身;的内容就是操作数本身;可用作间址可用作间址RS的的register有有workRS(R0,R1)、)、堆栈指针堆栈指针SP、数据指针数据指针DPTR。R中的内容不是操作数本身而是其所在存储单元的地中的内容不是操作数本身而是其所在存储单元的地址值,即址值,即R0指示了操作数所在存储单元的地址值。指示了操作数所在存储单元的地址值。4.寄存器

57、间接寻址:寄存器间接寻址:例:例:movA,R0;将将R0所指示存储单元内容所指示存储单元内容A中中特点:特点:寻址范围是:被选中的工作寻址范围是:被选中的工作RS组中的组中的8个个workRS,R0R7及及A,B,DPTR,AB和进位位和进位位CY。52间址寻址的间址寻址的范围范围:R0、R1、SP作为间址作为间址RS可以访问内部可以访问内部RAM的的128个字节。个字节。间址寻址间址寻址方式方式有:有:ADDA,Ri;i=0或或1MOVRi,direct;i=0或或1MOVXA,DPTRDPTR作为间址作为间址RS可访问外部可访问外部RAM全部的全部的64KB空间。空间。R0、R1作为间址

58、作为间址RS可以访问外部数据存储器可以访问外部数据存储器RAM页内页内256个字节(可用个字节(可用P2口选中页面,口选中页面,64KB的的RAM可分可分为为256个页面)。个页面)。53有两种方式有两种方式MOVCA,A+PC;A(A)+PC)MOVCA,A+DPTR;A(A)+DPTR)特点:特点:两条指令的区别:前者查表的范围是相对两条指令的区别:前者查表的范围是相对PC当前值以后的当前值以后的255字节字节地址空间,而后者查表范围可达整个程地址空间,而后者查表范围可达整个程序存储器序存储器64K字节字节的地址空间。的地址空间。A是是无符号无符号8位数(位数(00HFFH)。)。寻址的范

59、围是寻址的范围是64K字节的程序存储器字节的程序存储器EPROM。是是MCS-51单片机特有的一种寻址方式,它以地址指针单片机特有的一种寻址方式,它以地址指针DPTR或程序计数器或程序计数器PC(当前值)为基地址当前值)为基地址R,以累加器以累加器A作为变址作为变址R,这二者内容之和才是实际操作数地址。这二者内容之和才是实际操作数地址。5.基址寄存器加变址基址寄存器加变址RS间接寻址(变址寻址):间接寻址(变址寻址):54位移量位移量rel为带符号的为带符号的8位二进制数,必须以补码形式出位二进制数,必须以补码形式出现,所以现,所以rel的范围为的范围为+127-128,即该种寻址方式的寻,即

60、该种寻址方式的寻址范围为:以当前址范围为:以当前PC内容为起点向前可偏移内容为起点向前可偏移128字节,字节,向后可转移向后可转移127个字节。个字节。7.位寻址:位寻址:专门用于位操作指令,可对专门用于位操作指令,可对MCS-51中中211个位进行运算和个位进行运算和传送的操作,传送的操作,使用专用累加器使用专用累加器C。6相对寻址:相对寻址:例例JCrel;若若PSW中中CY=1,则转移至则转移至PC=PC当前值当前值+rel特点:特点:以程序计数器以程序计数器PC当前值内容为基地址,加上指令中给当前值内容为基地址,加上指令中给定的偏移量作为操作数的存储地址。定的偏移量作为操作数的存储地址

61、。55第三节第三节指令系统及应用举例指令系统及应用举例凡是指令执行后,改变了内存中凡是指令执行后,改变了内存中direct字节或字节或direct中中各位的内容的指令,均使得各位的内容的指令,均使得PSW中的各位值不确定。中的各位值不确定。direct可表示片内可表示片内RAM00H7FH(128B)的内存空间的内存空间和和SFR的地址。的地址。除以除以direct为为DST外,其它指令都外,其它指令都不不影响影响PSW中中除除P以外以外的其它位,以的其它位,以A为为DST的指令会影响的指令会影响PSW中的中的P位。位。一、一、数据传送类指令数据传送类指令:分为分为5部分,部分,看看P37表表

62、3.1。特点:特点:MCS-51单片机共有单片机共有111条指令,用条指令,用42个助记符表示了个助记符表示了33种指种指令功能,同一种指令所对应的操作码可多达令功能,同一种指令所对应的操作码可多达8种,指令按其功能种,指令按其功能可分为可分为4大类:数据传送类,算术运算类,逻辑运算类,控制转大类:数据传送类,算术运算类,逻辑运算类,控制转移类。移类。56类型类型DST助记符助记符功能功能片片内内RAM传传送送指指令令AMOVA,RnMOVA,RiMOVA,#dataMOVA,directARnA(Ri)AdataA(direct)RnMOVRn,AMOVRn,directMOVRn,#dat

63、aRnARn(direct)Rn#datadirectMOVdirect,AMOVdirect,RnMOVdirect,directMOVdirect,RiMOVdirect,#datadirectAdirectRndirect(direct)directRidirect#dataRiMOVRi,AMOVRi,directMOVRi,#dataRiARi(direct)Ri#data57类型类型目的操作数目的操作数指令助记符指令助记符功能功能片片外外RAM传传送送指指令令DPTRMOVDPTR,#data16DPTRdata16AMOVXA,RiMOVXA,DPTRA(Ri)A(DPTR)Ri

64、MOVXRi,A(Ri)ADPTRMOVXDPTR,A(DPTR)AROM传传送指令送指令AMOVCA,A+PCMOVCA,A+DPTRA((A)+PC)A((A)+DPTR)交交换换指指令令XCHA,RnXCHA,RiXCHA,directXCHDA,RiSWAPAARnA(Ri)A(direct)A03(Ri)03A74A30堆堆栈栈指指令令PUSHdirectPOPdirectSPSP+1,(,(SP)(direct)(direct)(SP),),SPSP158以上所说的以上所说的direct不包括:不包括:A,DPTR,Rn,PSW和和B。通常通常SRC可以是:可以是:A,Rn,dir

65、ect,Ri和和#data5种,而种,而DST只能有只能有4种(种(不能是不能是#data)。)。例例1设内部设内部RAM30H单元内容为单元内容为52H,给出以下程序执行后(给出以下程序执行后(R0)=?(?(A)?()?(30H)?)?及及30H在不同指令中的作用。在不同指令中的作用。MOVA,#30HMOVA,30HMOVR0,#30HMOVA,R0MOV30H,#30H;A#30H;A30H,即即(A)=52H;R0#30H;A(R0),),即(即(A)=52H;(;(30H)#30H解:解:(R0)=30H,(A)=52H,(,(30H)=30H其中,第一,三,五句中其中,第一,三,

66、五句中#30H为立即数,第二,五条指令中为立即数,第二,五条指令中30H为直接地址,第四条指令为直接地址,第四条指令R0中的中的30H为隐含的间接地址。为隐含的间接地址。59例例2.已知已知P1口内容为口内容为0AAH,给出下列程序执行的结果及相应,给出下列程序执行的结果及相应的机器码。的机器码。, , ;();()# # 78 30 78 30H H ;(;() 85 10 90 85 10 90H H ;()() E5 10HE5 10H ; ()() F6HF6H ; ()() 86 40 86 40H H60例例3.设片内设片内RAM30H单元内容为单元内容为40H,40H单元中的内容

67、为单元中的内容为10H,P1口上的内容为口上的内容为0CAH,给出执行以下程序的结果。给出执行以下程序的结果。, , , ;();();()();()();();();()();()();()();()();()();()()61例例4.设片外设片外(),(),(0),分析下面程序执行的结果。分析下面程序执行的结果。, , , , ,;();();(;(H H)( ()=44)=44H H;();();();()62例例5设堆栈指针设堆栈指针SP=11H,PSW=00H,给出下面程序给出下面程序执行的结果。执行的结果。MOV20H,#53HPUSH20HPOPPSW;(;(20H)53H;53

68、H(SP)+1)(12H),),SP=SP+1,即(即(SP)=12H;PSW(SP)=53H,SP=SP-1,即(即(SP)=11H63加减法指令的加减法指令的DST只能是只能是A,SRC可为其它四种方式,减法指可为其它四种方式,减法指令只有带进位减助记符令只有带进位减助记符。二、二、算术运算类指令算术运算类指令:(看P41表3.2)此类指令具有加,减,乘,除指令,它们一般对此类指令具有加,减,乘,除指令,它们一般对PSW的的CY、AC、OV和和P各位均有影响,对其余四位不影响,但各位均有影响,对其余四位不影响,但INC与与DEC指令不影响指令不影响PSW的内容。的内容。具体特点如下:具体特

69、点如下:除法中,除法中,OV=1表示除数为表示除数为0,A、B中的内容均不定,其它中的内容均不定,其它情况情况OV=0。乘法中,乘法中,OV=1表示乘积大于表示乘积大于255,OV=0表示乘积小于表示乘积小于255。加加1减减1指令指令不不影响影响PSW除除P位以外的其它位位以外的其它位。乘、除法中乘、除法中CY=0。64类类型型助记符助记符功能功能对对PSW的影响的影响字节数字节数振荡周期振荡周期不不带带进进位位加加ADDA,RnADDA,RiADDA,directADDA,#dataAA+RnAA+(Ri)AA+(direct)AA+dataCYOVACCYOVAC同上同上同上同上1122

70、12121212带带进进位位加加ADDCA,RnADDCA,RiADDCA,directADDCA,#dataAA+Rn+CYAA+(Ri)+CYAA+(direct)+CYAA+data+CYCYOVAC同上同上同上同上同上同上112212121212带带进进位位减减SUBBA,RnSUBBA,RiSUBBA,directSUBBA,#dataAA-Rn-CYAA-(Ri)-CYAA-(direct)-CYAA-data-CY同上同上同上同上同上同上同上同上112212121212算术运算类指令算术运算类指令65加加1INCAINCRnINCRiINCdirectINCDPTRAA+1RnR

71、n+1(Ri)(Ri)+1(direct)(direct)+1DPTRDPTR+1P无影响无影响同上同上同上同上同上同上111211212121212减减1DECADECRnDECRiDECdirectAA-1RnRn-1(Ri)(Ri)-1(direct)(direct)-1P无影响无影响同上同上同上同上111212121212乘乘法法除除法法调调整整MULABDIVABDAABAA*BAA/B(商),商),B余数余数0OVP同上同上CYAC111484812类类型型助记符助记符功能功能对对PSW的影响的影响字节数字节数振荡周期振荡周期算术运算类指令算术运算类指令66例例1给出以下程序执行结

72、果及对程序状态字给出以下程序执行结果及对程序状态字PSW的影响。的影响。;(;(30H)=43H;(;(A)=7AH;(;(R0)=30H;(;(A)=(30H)+7AH=0BDHMOV30H,#43HMOVA,#7AHMOVR0,#30HADDA,R0执行程序以后,据以上结果知执行程序以后,据以上结果知PSW中:中:CY=D7CY=0,AC=D3CY=0,奇偶位奇偶位P=0,OV=D7CY D6CY=0 1=1,此结果对于无此结果对于无符号数而言为正确,但对有符号数而言不正确。(因为符号数而言为正确,但对有符号数而言不正确。(因为2个正数个正数相加得到一个负数,所以一定是发生了溢出,结果不正

73、确。)相加得到一个负数,所以一定是发生了溢出,结果不正确。)对对PSW的影响:的影响:011110107AH+0100001143H10111101BDH67MOVR0,#7EMOV7EH,#0FFHMOV7FH,#38HMOVDPL,#0FEHMOVDPH,#10HINCR0INCR0INCR0INCDPTRINCDPTR;(;(R0)=7EH;(;(7EH)=0FFH;(;(7FH)=38H;(;(DPL)=0FEH;(;(DPH)=10H;(;(7EH)+1=0FFH+1=00H(7EH);(;(R0)=7FH;(;(7FH)+1=38H+1=39H(7FH);(;(DPTR)=10FE

74、+1=10FFH;(;(DPTR)=10FF+1=1100H例例2分析执行以下程序段的结果。分析执行以下程序段的结果。68MOVA,#0C4HSUBBA,#55H其中:(其中:(A)=6EH,(,(CY)=D7CY=0,(,(AC)=D3CY=1,(OV)=D7CY D6CY=0 1=1,(P)=0例例3设进位位设进位位C=1,给出执行以下结果及对给出执行以下结果及对PSW的影响。的影响。;(;(A)=0C4H;(;(A)-55H-(C)=6EHA对对PSW的影响:的影响:11000100(C4H)00000001(C)=1-01010101(55H)01101110(6EH)以上结果对于无符

75、号数而言为正确,(以上结果对于无符号数而言为正确,(OV)=1无意义,无意义,对于符号数则(对于符号数则(OV)=1表示结果为错误,负数减正数结果应表示结果为错误,负数减正数结果应为负数,而为负数,而6EH为正数,原因是因为符号数为正数,原因是因为符号数C4H=-3CH,所以所以C4H-55H-1=(-3CH)-56H=-92H,而而-92H=-146已超出已超出8位二位二进制数所能表示的最大负数。(进制数所能表示的最大负数。(-128)。)。69例例4设累加器设累加器A中内容为中内容为89的的BCD码,即码,即10001001,R0中的中的内容为内容为28的的BCD码,即码,即0010100

76、0,求执行下面程序后,求执行下面程序后,A中结果及正确的中结果及正确的BCD码值应为多少?码值应为多少?ADDA,R0DAA;(;(A)+(R0)A,即(即(A)=B1H,即非即非十进制正确结果,也非十六进制正确结果十进制正确结果,也非十六进制正确结果;(;(A)=17H,这里,因为(这里,因为(C)=1,所以所以正确答案为正确答案为117。因为在执行因为在执行DAA指令时,首先由于(指令时,首先由于(AC)=D3CY=1,所以对所以对A中低中低4位内容加位内容加6调节,使调节,使A的低的低4位变为位变为0111,然后,然后又由于又由于A中高中高4位内容大于位内容大于9,所以对,所以对A中高中

77、高4位内容位内容再加再加6进行进行调整,使其变为调整,使其变为0001,同时使进位位(,同时使进位位(C)=1,则最终得到结则最终得到结果为果为117。701.以累加器以累加器A作为作为DST,SRC可以是可以是#data,Rn,direct,2.(内部内部RAM低低128B或或SFR)和和Ri四种方式。四种方式。三、三、逻辑运算类指令逻辑运算类指令:看P45表3.4。逻辑运算类指令主要用于逻辑运算中,主要可以分为两大类:逻辑运算类指令主要用于逻辑运算中,主要可以分为两大类:逻辑与(逻辑与(ANL):):按位相与,特点是清按位相与,特点是清0,全,全1才出才出1,见见0就出就出0,看例看例1。

78、3单操作数的指令,操作数必须放在单操作数的指令,操作数必须放在A中。中。4各类指令的特点为:各类指令的特点为:特点:特点:此类指令除此类指令除RLC和和RRC指令外,均不影响指令外,均不影响PSW中除中除P以外的其他位,而以外的其他位,而RLC和和RRC也只影响也只影响P与与C位。位。2.以以direct为为DST,而以而以A或或#data为为SRC的操作指令。的操作指令。71类类型型指令助记符指令助记符指令功能指令功能与与指指令令ANLA,RnANLA,RiANLA,#dataANLA,directANLdirect,AANLdirect,#dataAA RnAA (Ri)AA dataAA

79、 (direct)(direct)(direct)A(direct)(direct)data或或指指令令ORLA,RnORLA,RiORLA,#dataORLA,directORLdirect,AORLdirect,#dataAA RnAA (Ri)AA dataAA (direct)(direct)(direct) A(direct)(direct) data逻辑运算类指令逻辑运算类指令72类类型型指令助记符指令助记符指令功能指令功能异异或或指指令令XRLA,RnXRLA,RiXRLA,#dataXRLA,directXRLdirect,AXRLdirect,#dataAARnAA(Ri)A

80、AdataAA(direct)(direct)(direct)A(direct)(direct)data求反求反指令指令CPLAAA清清0指令指令CLRAA0循环循环移位移位指令指令RLARLCARRARRCAA左循环移位一位左循环移位一位A带进位左循环移位一位带进位左循环移位一位A右循环移位一位右循环移位一位A带进位右循环移位一位带进位右循环移位一位73;屏蔽屏蔽A中高中高5位位;去掉去掉P1中的低中的低3位位;P120A20例例1:要求编程把累加器中的低要求编程把累加器中的低3位传送到位传送到P1口,传送时口,传送时不影响不影响P1口的高口的高5位。位。ANLA,#07HANLP1,#0F

81、8HORLP1,A逻辑异或指令(逻辑异或指令(XRL)对操作数中的某一位或某几位对操作数中的某一位或某几位进行取反(两个操作数不同出进行取反(两个操作数不同出1,相同出,相同出0),看),看例例3。逻辑或(逻辑或(ORL):):按位相或,特点是置按位相或,特点是置1,有,有1就出就出1,全全0才出才出0,看,看例例2。74MOVA,#0F0HANLP1,#00HORLP1,#55HORLP1,AANLP1,A;(;(A)=0F0H;P1=00H;P1=55H;P1=0F5H;P1=0F0H;01000010 0101001000010000例例2:给出下列两段程序执行的结果。:给出下列两段程序

82、执行的结果。例3:MOVA,#42HXRLA,#52H75例例4:分析以下程序执行的结果:分析以下程序执行的结果CLRCMOVA,#99HRLA,MOVA,#99HRRCA;(;(C)=0;(;(A)=99H;右移一位,(右移一位,(A)=33H;(;(A)=99H;带进位位右循环一位,带进位位右循环一位,(A)=4CH,(,(C)=176四、四、控制程序转移类指令控制程序转移类指令:看P47表3.5。(6)如果整个程序的口地址发生改变,只要程序中各指令)如果整个程序的口地址发生改变,只要程序中各指令(5)CJNE指令的第一操作数可以是指令的第一操作数可以是A、Rn和和Ri,而第二操作,而第二

83、操作数只能是数只能是#data和和direct,且指令只影响,且指令只影响PSW中的中的CY位,无位,无论转移与否,论转移与否,CJNE指令均影响指令均影响CY的值,但它执行后不影的值,但它执行后不影响各操作数(第一与第二)的内容。响各操作数(第一与第二)的内容。(4)除)除CJNE指令外,其余指令对指令外,其余指令对PSW中各值均无影响。中各值均无影响。(3)访问访问-128127B存储空间的指令有存储空间的指令有SJMP和条件转移类指令,和条件转移类指令,256字节内跳转指令有字节内跳转指令有JMP。其中:(其中:(1)访问)访问64KB存储空间的指令有存储空间的指令有LCALL、LJMP

84、、JMP。(2)访问访问2KB存储空间的指令有存储空间的指令有ACALL、AJMP。77数型数型助记符助记符功能功能(设(设PC=本条指令地址)本条指令地址)字节字节振荡振荡周期周期无条无条件转件转移移LJMPaddr16AJMPaddr11SJMPrelPCadd16PCadd11PCPC+2+rel322242424间转间转JMPA+DPTRPCA+DPTR124无条无条件调件调用及用及返回返回LCALLaddr16ACALLaddr11RETRETI断点入栈断点入栈,PCaddr16同上同上PCaddr11子程序返回子程序返回恢复断点,中断返回恢复断点,中断返回321124242424条

85、条件件转转移移JZrelJNZrelCJNEA,#data,relCJNEA,direct,relCJNERn,#data,relCJNERi,#data,relDJNZRn,relDJNZdirect,relA为为0转转PCPC+2+relA不为不为0转,同上转,同上A不等于不等于data转转RnRn1,Rn0时时转转移移223333232424242424242424空操作空操作NOPPCPC+1112控制程序转移类指令控制程序转移类指令78指令中的指令中的rel为一个为一个8位符号数,表示要转移的相对地址值。位符号数,表示要转移的相对地址值。的相对位置不发生变化,则的相对位置不发生变化,

86、则SJMP和条件转移中的各地址均不发和条件转移中的各地址均不发生变化,但长转移与绝对转移指令生变化,但长转移与绝对转移指令LJMP,AJM和和JMP中地址值中地址值均发生变化,要修改程序中的相应地址值。均发生变化,要修改程序中的相应地址值。注意:注意:MCS-5164Kmemory分为分为16段,段,32个区,个区,256页,每段页,每段包括包括2个区,每区个区,每区2K字节,划分方法如下:字节,划分方法如下:EPROM16位地址码中高位地址码中高8位定义为页地址,低位定义为页地址,低8位为页内地址,所位为页内地址,所以以64Kmemory分为分为256页,每页页,每页256个字节,规定每个字

87、节,规定每8页页为一个为一个2K区(区(8*256),页地址(高),页地址(高8位地址)可以写成位地址)可以写成两位两位16进制数进制数XhXlH,其中,高位其中,高位16进制数进制数Xh由由0F定定义为义为16个段,(低个段,(低8位位Xl由由07页定义第一个页定义第一个2K区,区,8F页定义第二个页定义第二个2K区,低区,低8位位Xl的值表示段内具体的页的值表示段内具体的页码)。码)。XL的的07页定义为某段内第一个页定义为某段内第一个2K区,区,XL的的08页定义为第二个页定义为第二个2K区。区。79例如:例如:AJMP3ABCH;设此指令执行前(设此指令执行前(PC)=289AHAJM

88、P3DEFH;设此指令执行前(设此指令执行前(PC)=37FEHAJMP3BCDH;设此指令执行前(设此指令执行前(PC)=3456H解释:解释:第第2条指令的操作码位于第条指令的操作码位于第3段段7页内,目的地址处于页内,目的地址处于第第3段段第第D页内,与(页内,与(PC)+2(3段段8页)处于同一页)处于同一2K范围内,所以此指令正确,执行此指令的功能是:范围内,所以此指令正确,执行此指令的功能是:保持保持PC15PC11值不变,将目的地址值不变,将目的地址3ABCH的第的第100位位(01010111100B),),使(使(PC)=0011101010111100B。(PC)=(PC)

89、+2=3ABEH,PC15PC11=00111,解释:解释:第一条指令的操作码位于第第一条指令的操作码位于第3段第段第8页(因为(页(因为(PC)=389AH),),而目的地址为而目的地址为3ABCH,处于第处于第3段段A页内,页内,与(与(PC)+2处于同一个处于同一个2K范围内,所以此指令使用正范围内,所以此指令使用正执行后的功能使(执行后的功能使(PC)=3ABCH,即使程序转向指定即使程序转向指定地址执行指令,指令的执行过程为地址执行指令,指令的执行过程为80定义:定义:PC当前地址当前地址=(SJMP指令第一字节所在地址指令第一字节所在地址+2)(PC)=3DEFH。解释:解释:第第

90、3条指令(条指令(PC)=3456H,所以(所以(PC)+2=3458H处处于于EPROM中中3段第段第4页内,目的地址为页内,目的地址为3BCDH,处于处于PROM中第中第3段段B页内,页内,与第与第3段段4页内的程序不属于同页内的程序不属于同一个一个2K地址范围,所以此处地址范围,所以此处AJMP指令使用错误。指令使用错误。注意注意2:手工汇编计算相对地址手工汇编计算相对地址rel的方法:的方法:rel=目的地址(目的地址(SJMP指令第一字节所在地址指令第一字节所在地址+2)=目的地址(目的地址(PC+2)=目的地址目的地址PC当前值当前值规定:当目的地址大于规定:当目的地址大于PC当前

91、地址时,当前地址时,rel值应在值应在007FH之间之间(正值),若正值),若rel值大于值大于7FH时,说明向后跳转超过时,说明向后跳转超过+127,超出本指令应用范围,不能用本指令。当目的地址小于超出本指令应用范围,不能用本指令。当目的地址小于PC当前地址时,应有:目的地址当前地址时,应有:目的地址PC当前值当前值=rel0,其,其81例如例如:计算下列指令的相对地址计算下列指令的相对地址rel:指令第一字节所在地址指令第一字节所在地址指令指令目的地址目的地址rel值值2100HSJMP2123H21H02143HSJMP2111H0CCH0第一条指令第一条指令rel=2123-(2100

92、+2)=0021H,所以所以rel=21H第二条指令第二条指令rel=2111-(2143+2)=FFCCH,所以所以rel=0CCH中低中低8位为位为rel的实际值,高的实际值,高8位一定是位一定是FFH,表明表明rel是个负数,是个负数,当高当高8位不是位不是0FFH则说明向前跳转超过则说明向前跳转超过-128,本指令不能用。,本指令不能用。注意注意3:AJMP与与ACALL指令转移或调用的目的地址必须在指令指令转移或调用的目的地址必须在指令操作码第一字节所在地址值操作码第一字节所在地址值+2后的同一后的同一2K范围内,否则范围内,否则上述指令不能用。上述指令不能用。82例例1.MCS-5

93、单片机的单片机的P1口与某设备数字温度计相连,如果设备口与某设备数字温度计相连,如果设备温度大于温度大于50。C时,需要降温,小于时,需要降温,小于50。C时,需要升温,时,需要升温,等于等于50。C时停机,其程序如下:时停机,其程序如下:MOVA,P1CJNEA,#50,CHK1(停机操作)停机操作)CHK1:JCCHK2(降温操作)(降温操作)CHK2:(:(升温操作)升温操作);A(P1),),将外设的温度值及将外设的温度值及P1口送入口送入A中中;(;(A)50则转则转CHK1,否则停机,否则停机,若(若(A)50,则(则(C)=0,若(若(A)50,则(则(C)=1;(;(A)50否

94、?(即(否?(即(C)=1?)?)是则转是则转CHK2处,否则执行降温操作。处,否则执行降温操作。;执行此处程序表示执行此处程序表示A50,所以应执行降温所以应执行降温;此处表示(;此处表示(A)50,所以执行所以执行升温指令。升温指令。;此处表示(;此处表示(A)R0)MOVXR0,A;交换交换R0与与R1指向单元的数指向单元的数XCHA,30H;将将R1中的数(中的数(A)与与30H(原原R0)交换交换MOVXR1,A;使使A(原原R0中数)中数)R1NOCHA:INCR0;调节地址指针调节地址指针INCR1DJNZR3,LOOP1;内循环结束判别内循环结束判别DJNZR2,LOOP0;外

95、循环结束判别外循环结束判别RET114例例2.已知内部已知内部RAM30H单元开始存放单元开始存放20H个数个数据,将其传送到外部据,将其传送到外部RAM的的0000H单元开单元开始的存储区,请编程实现。始的存储区,请编程实现。MOVP2,#00HMOVR0,#30HMOVR1,#00H115MOVR2,#20HLOOP:MOVA,R0;取数取数MOVXR1,A;存数存数INCR0INCR1DJNZR2,LOOP116例例3 3:试编写一程序,查找内部:试编写一程序,查找内部RAMRAM单元的单元的20H20H 50H 50H是否有是否有0AAH0AAH这一数据,若有,则将这一数据,若有,则将

96、51H51H单单 元内容置为元内容置为1 1,否则将,否则将51H51H单元内容置为单元内容置为0 0。 MOV51H,#00HMOVR2,#31HMOVR0,#20H117LOOP1:MOVA,R0CJNEA,#0AAH,LOOP2MOV51H,#01HSJMPOVERLOOP2:INCR0DJNZR2,LOOP1OVER:RET118功能:用于解决一个程序中有许多相同的运算或相同操作的问功能:用于解决一个程序中有许多相同的运算或相同操作的问题,编写子程序须注意的问题有:题,编写子程序须注意的问题有:四子程序四子程序(3)调用子程序时,须了解子程序的)调用子程序时,须了解子程序的“入口信息入

97、口信息”和和“出口信出口信息息”,进入子程序前应给那些变量赋值,子程序返回时,进入子程序前应给那些变量赋值,子程序返回时结果存在何处,以便主程序使用这些结果。结果存在何处,以便主程序使用这些结果。(2)进入子程序后首先要对子程序中应用的)进入子程序后首先要对子程序中应用的RS进行保护,进行保护,子程序返回前应注意恢复它们的内容。子程序返回前应注意恢复它们的内容。(1)一般子程序只有一个出口,即一般子程序只有一个出口,即RET指令。指令。119MOVSP,#60HLCALLDLAY;2T机机DLAY:MOVR5,#00H;T机机LOOP:NOP;T机机NOPDJNZR5,LOOP;2T机机RET

98、I;2T机机说明说明:程序中的延时:程序中的延时子程序子程序T机机=1us(设设fOSC=12MHZ),),则此程序中的延时时间为:则此程序中的延时时间为:T延延=2T机机+T机机+2564T机机+2T机机=1029S1mS例例1:无参型子程序。:无参型子程序。120例例2:赋值型子程序:将片内:赋值型子程序:将片内40H单元开始的单元开始的15个单元清个单元清0。MOVR0,#40HMOVR1,#0FHMOVSP,#60HLCALL2RQ02RQ0:MOVA,#00HLOOP:MOVR0,AINCR0DJNZR1,LOOPRET121例例3子程序的嵌套:子程序的嵌套:主程序主程序:LCALL

99、DLAY1;2T机机子程序子程序:DLAY1:MOVR4,#0E0H;T机机LOOP1:LCALLDLAY2;2T机机DJNZR4,LOOP1RETDLAY2:MOVR5,#64H;T机机122LOOP:NOP;T机机NOPNOPDJNZR5,LOOP;2T机机RET;2T机机例例3题题说明:说明:上题中上题中DLAY2中的延时时间为:中的延时时间为:T延延2=2T机机+T机机+1005T机机+2T机机=505us0.5ms而而DLAY1中的延时时间为:中的延时时间为:T延延1=2T机机+T机机+(T延延2+2T机机)224+2T机机=113567us114ms123例例4用软件延时方法实现变

100、频振荡报警,要求用用软件延时方法实现变频振荡报警,要求用P1.0端口输端口输出出1kHz和和2kHz的变频信号以示报警,每隔的变频信号以示报警,每隔1秒交替变秒交替变换一次。换一次。DLV:MOVR2,#08H;1kHz持续时间(持续时间(1秒)秒)DLV1:MOVR3,#0FAH;内循环次数内循环次数DLV2:CPLP1.0;输出输出1kHz方波方波1ms1s0.5ms0.5ms0.25ms1sP1.0t124LCALLD500us;调延时;调延时500us子程序子程序DJNZR3,DLV2;调用调用FA次延时子程序,次延时子程序,持续持续125msDJNZR2,DLV1;将内循环再循环将内

101、循环再循环8次,共次,共持续持续1s时间时间MOVR2,#10H;2kHz持续时间持续时间DLV3:MOVR3,#0FAHDLV4:CPLP1.0;输出输出2kHz方波方波LCALLD250us;调延时调延时250us子程序子程序DJNZR3,DLV4;延时延时0.25250=62.5msDJNZR2,DLV3;延时延时62.516ms=1sSJMPDLV;反复循环反复循环125P1.0P1.78031D0D7Q0Q774LS2408路反相驱动器路反相驱动器LED0R+5VLED7例例2编编制制一一个个循循环环闪闪烁烁灯灯的的程程序序。有有8个个发发光光二二极极管管,每每次次其其中中某某个个灯

102、灯闪闪烁烁点点亮亮10次次后后,转转移移到到下下一一个个闪闪烁烁10次次,循循环环不不止止。本本程程序序的的硬硬件件连连接接如如下下图图所所示示。当当P1.i输出输出高电平时,高电平时,LED灯亮,否则不亮。灯亮,否则不亮。126MOVA,#01H;灯亮初值灯亮初值SHIFT:LCALLFLASH;调闪亮调闪亮10次子程序次子程序RRA;右移一位右移一位SJMPSHIFT;循环循环FLASH:MOVR2,#0AH;闪烁闪烁10次计数次计数127FLASH1:MOVP1,A;点亮点亮LCALLDELAY;延时延时MOVP1,#00H;熄灭熄灭LCALLDELAY;延时延时DJNZR2,FLASH

103、1;循环循环RET128第四章第四章 单片机定时功能及应用单片机定时功能及应用MCS-51系列单片机有系列单片机有2个个16位的定时器位的定时器T0和和T1,在在实际控制系统中可实现定时或计数的功能。实际控制系统中可实现定时或计数的功能。4.1定时器定时器/计数器的结构与工作原理计数器的结构与工作原理4.2定时器的操作模式及应用定时器的操作模式及应用4.3定时器定时器/计数器的综合应用举例计数器的综合应用举例129一一、定时器定时器/计数器的结构计数器的结构二、二、定时器定时器/计数器的工作原理计数器的工作原理三、三、TMOD与与TCON的作用与具体意义的作用与具体意义四、四、定时器定时器/计

104、数器的初始化计数器的初始化第一节第一节定时器定时器/计数器的结构与工作原理计数器的结构与工作原理130组成:组成:MCS-51单片机内部定时器由两个特殊功能寄单片机内部定时器由两个特殊功能寄存器存器TCON和和TMOD及及T0、T1组成。组成。定时器定时器/ /计数器的结构计数器的结构T0和和T1:为两个:为两个16位的定时器位的定时器/计数器,均可以分成计数器,均可以分成2个独立的个独立的8位计数器位计数器,即即TH0、TL0、TH1、TL1,它们用于存定时或计数的初值,它们它们用于存定时或计数的初值,它们是一个加是一个加1的计数器。的计数器。TCON:为控制寄存器,主要用来控制定时器的启动

105、:为控制寄存器,主要用来控制定时器的启动与停止。与停止。TMOD:为模式控制寄存器,主要用来设置定时器:为模式控制寄存器,主要用来设置定时器/计数器的操作模式。计数器的操作模式。131定时器定时器/ /计数器的工作原理计数器的工作原理T0和和T1均可工作于定时均可工作于定时/计数方式,到底工作于什计数方式,到底工作于什么方式可由用户通过软件给么方式可由用户通过软件给TMOD赋值决定,其中:赋值决定,其中:当当CTC工作于工作于定时定时状态(即状态(即C/T=0)时:计数输入时:计数输入信号来自信号来自内部时钟脉冲内部时钟脉冲,在每一个机器周期内定时,在每一个机器周期内定时器的计数器加器的计数器

106、加1,故而定时器可以看成是,故而定时器可以看成是computer机器周期的计数器(因为机器周期的计数器(因为T机机=12T振振,所以定时器,所以定时器的的计数频率为振荡频率的计数频率为振荡频率的1/12,即:即:fcount=fosc/12)。)。132定时器定时器/ /计数器的工作原理计数器的工作原理CTC工作于工作于计数计数方式(方式(C/T=1)时:计数输入来自时:计数输入来自于相应的于相应的外部外部P3.4引脚引脚T0或或P3.5引脚引脚T1。要求由要求由P3.4或或P3.5输入的计数脉冲的高电平及低电平的保持时输入的计数脉冲的高电平及低电平的保持时间均至少应大于一个完整的机器周期,才

107、能保证间均至少应大于一个完整的机器周期,才能保证计数的正确性。所以计数的正确性。所以最高计数频率为晶振频率的最高计数频率为晶振频率的1/24,fcount=fosc/24(且在脉冲的下降沿计数器且在脉冲的下降沿计数器的值加的值加1)。133D7D6D5D4D3D2D1D0TMODGATEC/TM1M0GATEC/TM1M0(89H)定时器定时器T1定时器定时器T0TMOD与与TCON的作用与具体意义:的作用与具体意义: 1TMOD简介简介:TMOD是一个专用寄存器,用于控制是一个专用寄存器,用于控制T1和和T0的操作模式的操作模式及工作方式,及工作方式,TMOD模式控制寄存器不能进行位寻址,只

108、能用模式控制寄存器不能进行位寻址,只能用字节传送指令设置定时器的工作方式及操作模式,低字节传送指令设置定时器的工作方式及操作模式,低4位用于位用于定义定时器定义定时器T0,高高4位用于定义定时器位用于定义定时器T1。系统复位时系统复位时TMOD所有位均为所有位均为0。其各位定义如下:。其各位定义如下:134当当GATE=1时:称为时:称为硬硬启动,定时器的启动要由启动,定时器的启动要由TRi位和外部中断引脚位和外部中断引脚INTi共同控制。只共同控制。只有当外部中断引脚有当外部中断引脚INT0(P3.2)或或INT1(P3.3)为为高高电平时,电平时,TR0或或TR1置置1才能启动定时器工作。

109、才能启动定时器工作。GATE:门控位,用来控制定时器启动操作方式,分门控位,用来控制定时器启动操作方式,分软起动与硬起动两种。软起动与硬起动两种。TMOD简介简介当当GATE=0时:称为时:称为软软启动,定时器只由软件控制位启动,定时器只由软件控制位TR0或或TR1来控制启停。当来控制启停。当TCON中中的的TRi位为位为1,定时器启动开始定时;,定时器启动开始定时;Ri=0时,定时器停止工作。时,定时器停止工作。135C/T:功能选择位。功能选择位。TMOD简介简介当当C/T=0时:时:T0或或T1设置为设置为定时定时器工作方式;计数脉器工作方式;计数脉冲由内部提供,计数周期等于机器周期。冲

110、由内部提供,计数周期等于机器周期。M1M0:操作模式控制位,操作模式控制位,2位可形成位可形成4种编码,对应种编码,对应于于4种操作模式。种操作模式。4种模式定义如下:种模式定义如下:当当C/T=1时:时:T0或或T1设置为设置为计数计数器工作方式,计数信器工作方式,计数信号冲为外部引脚号冲为外部引脚T0(P3.4)或)或T1(P3.5)引入的外部脉冲信号。引入的外部脉冲信号。136M1M0操作模式操作模式功能简述功能简述TMOD简介简介11模式模式3:T0分成分成2个独立的个独立的8位计数器位计数器TH0和和TL0,其其中中TH0只可用于定时只可用于定时,而,而TL0可用于定时或计数,此可用

111、于定时或计数,此时时T1停止计数,一般用于串行口波特率发生器。停止计数,一般用于串行口波特率发生器。10模式模式2:8位自动重装计数器,位自动重装计数器,THi的值在计数中不变,的值在计数中不变,TLi溢出时,溢出时,THi中的值自动装入中的值自动装入TLi中。中。01模式模式1:16位计数器位计数器。00模式模式0:13位计数器,位计数器,THi使用高使用高8位,位,TLi使用低使用低5位,而位,而Tli的高三位系统由动添的高三位系统由动添0。137TMOD与与TCON的作用与具体意义:的作用与具体意义:TF1:定时器定时器T1溢出中断请求标志,溢出中断请求标志,T1溢出时由硬件自动将其溢出

112、时由硬件自动将其置置“1”,并可申请中断(若此时,并可申请中断(若此时IE寄存器中相应位允许,寄存器中相应位允许,则则CPU自动响应中断,进入中断子程序)。当自动响应中断,进入中断子程序)。当CPU响应响应中中断断转转向向中中断断服服务务程程序序时时,由由硬硬件件使使其其置置“0”,即即硬硬件件自自动置位、复位。软件查询须由软件清动置位、复位。软件查询须由软件清“0”。TCON:定定时时器器/计计数数器器控控制制寄寄存存器器,用用来来存存放放定定时时器器/计数器的控制字,其格式为:计数器的控制字,其格式为:2TCON简介简介:(88H)8FH8EH8DH8CH8BH8AH89H88H(位位寻址

113、)寻址)TCONTF1TR1TF0TR0IE1IT1IE0IT0138IE0与与IE1:外部中断外部中断INT0和中断和中断INT1(P3.2、P3.3)的中断请的中断请求标志。求标志。TCON简介简介当当ITi=1时规定时规定INTi为边沿(脉冲)触发方式,为边沿(脉冲)触发方式,下降沿有效下降沿有效。当当ITi=0时规定时规定INTi为电平触发方式,为电平触发方式,低电平有效低电平有效。TR1:T1的运行控制位,由软件对其进行置位和复位,来启的运行控制位,由软件对其进行置位和复位,来启动动和和关关闭闭定定时时器器/计计数数器器T1,定定时时器器启启动动时时该该位位应应置置“1”。TF0:功

114、能同功能同TF1,对象为对象为T0。TR0:功能同功能同TR1,对象为对象为T0。IT1与与IT0:用软件置位用软件置位/清清0来选择外部中断源的起动方式为来选择外部中断源的起动方式为边沿或电平触发方式。边沿或电平触发方式。139IE0与与IE1:当外部中断源有中断请求时,硬件自动当外部中断源有中断请求时,硬件自动将将IEi置位。当置位。当CPU响应中断并转向中断响应中断并转向中断服务子程序时,如为服务子程序时,如为低低电平触发电平触发(ITi=0)方式方式,IEi不能由硬件使其复位不能由硬件使其复位“0”,只,只有有当外部中断申请信号再变为当外部中断申请信号再变为高高电平时,电平时,才由才由

115、CPU自动自动清除清除IEi;如为边沿(如为边沿(下降下降沿)触发方式(沿)触发方式(ITi=1),),当当CPU响应中响应中断时由硬件自动将断时由硬件自动将IEi清清“0”。TCON简介简介140对对CTC使用前,必须先进行初始化。初始化程使用前,必须先进行初始化。初始化程序中要写入相应的控制字。序中要写入相应的控制字。 定时器定时器/ /计数器的初始化计数器的初始化2设置定时或计数器的初值设置定时或计数器的初值可直接将初值可直接将初值写入写入TH0、TL0或或TH1、TL1中。中。16位计数位计数初值必须分两次写入对应的计数器。初值必须分两次写入对应的计数器。1确定工作方式、操作模式、启动

116、控制方式确定工作方式、操作模式、启动控制方式写入写入TMOD寄存器。寄存器。(一)初始化的步骤:(一)初始化的步骤:1414启动定时器工作启动定时器工作可使用可使用SETBTRi启动启动。若第一步。若第一步设置为软启动,即设置为软启动,即GATE设置为设置为0时,以上指令执行后,时,以上指令执行后,定时器即可开始工作。若定时器即可开始工作。若GATE设置为设置为1时,还必须由时,还必须由外部中断引脚外部中断引脚INTi共同控制,只有当共同控制,只有当INTi引脚电平为引脚电平为高时高时,以上指令执行后定时器方可启动工作。定时器,以上指令执行后定时器方可启动工作。定时器一旦启动就按规定的方式定时

117、或计数。一旦启动就按规定的方式定时或计数。3根据要求确定是否采用中断方式根据要求确定是否采用中断方式直接对中断允许寄直接对中断允许寄存器存器IE各位赋值。开放中断时,对应位置各位赋值。开放中断时,对应位置1;采用程序;采用程序查询方式查询方式IE对应位应清对应位应清0,进行中断屏蔽。,进行中断屏蔽。定时器定时器/ /计数器的初始化计数器的初始化142定时器定时器/ /计数器的初始化计数器的初始化(二)计数初值的计算(二)计数初值的计算模式模式0:模式模式1:模式模式2:模式模式3:定时或计数方式下计数初值如何确定,定时器选定时或计数方式下计数初值如何确定,定时器选择不同的工作方式,不同的操作模

118、式其计数初值均不择不同的工作方式,不同的操作模式其计数初值均不相同。若设最大计数值为相同。若设最大计数值为M,各操作模式下的各操作模式下的M值为:值为:M=213=8192M=216=65536M=28=256,8位自动重装位自动重装M=28=256,定时器定时器T0分成分成2个独立个独立的的8位计数器位计数器143MCS51的两个定时器均为加的两个定时器均为加1计数器,计数器,计数器初值计数器初值X的计算方式为:的计算方式为:定时器定时器/ /计数器的初始化计数器的初始化式中的式中的M由操作模式确定,不同的操作模由操作模式确定,不同的操作模式计数器的长度不相同,故式计数器的长度不相同,故M值

119、也不相同。而值也不相同。而式中的计数值与定时器的工作方式有关。式中的计数值与定时器的工作方式有关。X=M计数值计数值144计数工作方式时计数工作方式时,计数脉冲由外部引入计数脉冲由外部引入,是对外部脉是对外部脉冲进行计数冲进行计数,因此计数值根据要求确定。其因此计数值根据要求确定。其计数初值计数初值为为:定时器定时器/ /计数器的初始化计数器的初始化计数脉冲频率为:计数脉冲频率为:fcount=fosc1/12定时工作方式时,因为计数脉冲由内部供给,是定时工作方式时,因为计数脉冲由内部供给,是对机器周对机器周期进行计数,故期进行计数,故X=M计数值计数值(一般:计数值(一般:计数值=计数次数)

120、计数次数)例例1某工序要求对外部脉冲信号计某工序要求对外部脉冲信号计100次:次:X=M-1002定时定时工作方式时工作方式时1计数计数工作方式时工作方式时145计数脉冲周期为计数脉冲周期为:Tc=1/fcount=12/fosc设设t为要求定时的时间,则定时工作方式的为要求定时的时间,则定时工作方式的计数值计数值为:为:计数值计数值=定时时间定时时间/计数脉冲周期计数脉冲周期=t/Tc=(fosct)/12定时工作方式的定时工作方式的计数初值计数初值X等于:等于:X=M计数值计数值=M(fosct)/12式中:式中:fosc为振荡器的振荡频率;为振荡器的振荡频率;M值由操作模式决定。值由操作

121、模式决定。定时器定时器/ /计数器的初始化计数器的初始化146例例2MCS51的主频为的主频为6MHz,要求产生要求产生1ms的定时,的定时,假设定时器工作于操作模式假设定时器工作于操作模式1,则其初值为:,则其初值为:定时器定时器/ /计数器的初始化计数器的初始化例例3设置设置T1为定时工作方式,定时为定时工作方式,定时50ms,选操作模选操作模式式1,允许中断,软启动;,允许中断,软启动;T0为计数方式,对为计数方式,对外部脉冲进行计数外部脉冲进行计数10次,硬启动,禁止中断,次,硬启动,禁止中断,选操作模式选操作模式2。编写初始化程序,设。编写初始化程序,设fosc=6MHz。X=216

122、(61061ms)/12=65536500=65036=0FE0CH( (注意单位的转换:注意单位的转换:mss)mss)147定时器定时器/ /计数器的初始化计数器的初始化解:解:T0设为计数方式模式设为计数方式模式2,硬启动硬启动,故计数初值故计数初值X0为:为:X0=256-10=246=F6HX1=65536-(6501000)/12=65536-25000=40536=9E58H模式控制字:模式控制字:000111101EH初始化程序如下:初始化程序如下:T1设为定时方式,定时设为定时方式,定时50ms,模式模式1,软启动,软启动,其计数初值其计数初值X1为:为:148定时器定时器/

123、 /计数器的初始化计数器的初始化MOVTMOD,#1EH;写工作模式字写工作模式字MOVTH0,#0F6H;定时器定时器0计数初值计数初值MOVTL0,#0F6HMOVTH1,#9EH;定时器定时器1计数初值计数初值MOVTL1,#58HMOVIE,#10001000B;CPU、T1开中断开中断SETBTR0;启动启动T0,但要等到待但要等到待INT0=1时,时,T0方可真正启动,开始定时方可真正启动,开始定时SETBTR1;启动启动T1,T1开始定时开始定时149第二节第二节定时器的操作模式及应用定时器的操作模式及应用一、一、模式模式0及应用及应用:二、二、模式模式1及应用及应用:三、三、模

124、式模式2及应用及应用:四、四、模式模式3及应用及应用:150注:注:模式模式0是是13位定时器的操作模式,当计算出计数初值位定时器的操作模式,当计算出计数初值X(13位)后,应先将位)后,应先将X转换为转换为16位再填入位再填入THi与与TLi中,具中,具体转换的方法为:保持体转换的方法为:保持X的的低低5位值不变,将位值不变,将X的的高高8位值依次左移位值依次左移3位(空出的三位补位(空出的三位补0)后后,再与,再与X的低的低5位组合成位组合成16位数分别送入位数分别送入THi与与TLi中。中。TF0TH0TL0(高高8位)位)(低低5位)位)中中断断12分频分频foscT0(P3.4)C/

125、T=0C/T=1TR01GATEINT0(P3.2)控制控制fosc/12TH0(或)或)TH1模式模式0结构结构&151例例1选用选用T0操作模式操作模式0,用于定时,用于定时,由由P1.0输出周输出周期为期为10ms的方波,设晶振的方波,设晶振fosc=6MHz。X0=213-fosct/12=8192-651000/12=8192-2500=5692=163CH解:解:P1.0输出周期为输出周期为10ms宽的方波,只要每隔宽的方波,只要每隔5ms取反一次即可得到取反一次即可得到10ms的方波。因此可以选的方波。因此可以选用用T0定时定时5ms。152由于上电复位后,由于上电复位后,TMO

126、D各位均为各位均为0,所以此控制,所以此控制字(字(00H)可以不用写入可以不用写入TMOD中。初始化程序如下:中。初始化程序如下:由由X0=163CH即:即:0001011000111100得得:转换后:转换后:X0=1011000100011100B=0B11CH根据题义设置模式控制字根据题义设置模式控制字TMOD为:为:00000000,即即00H由于作由于作13位计数器使用,位计数器使用,TL0的高的高3位未用,应位未用,应填填0,所以应将计数初值的高,所以应将计数初值的高11位全部向左平移位全部向左平移3位,位,低低5位保持不变,中间空出的位保持不变,中间空出的3位填位填0。因而。因

127、而X0的实际的实际值应为:值应为:153ORG8000HMOVTL0,#1CH;T0的计数初值的计数初值X0MOVTH0,#0B1HSETBTR0;启动启动T0LP1:JBCTF0,LP2;查询计数溢出否,查询计数溢出否,同时清除同时清除TF0AJMPLP1;没有溢出等待没有溢出等待LP2:MOVTL0,#1CH;溢出重置计数初值溢出重置计数初值MOVTH0,#0B1HCPLP1.0;输出取反输出取反SJMPLP1;重复循环重复循环154模式模式1与模式与模式0结构完全相同,唯一区别是计数结构完全相同,唯一区别是计数器长度为器长度为16位。位。例例2用定时器用定时器1产生一个产生一个50Hz的

128、方波,由的方波,由P1.1输出,输出,仍用程序查询方式,仍用程序查询方式,fosc=12MHz。模式模式1 1及应用及应用解:方波周期解:方波周期T=1/50=0.02s,用用T1定定10ms,计数初值计数初值X1=216-12101000/12=65536-10000=55536=0D8F0H源程序如下:源程序如下:155MOVTMOD,#10H;T1模式模式1,定时,定时SETBTR1;启动启动T1LOOK:MOVTH1,#0D8H;T1计数初值计数初值MOVTL1,#0F0H$:JNBTF1,$;T1没有溢出等待没有溢出等待CLRTF1;产生溢出清标志位产生溢出清标志位CPLP1.1;P

129、1.1取反输出取反输出SJMPLOOP;循环循环156TF0TL0(8位)位)中中断断12分频分频foscT0(P3.4)C/T=0C/T=1TR0&GATEINT0(P3.2)控制控制fosc/12T0(或)或)T1模式模式2结构结构TH0(8位)位)重重装装入入当模式当模式0、模式、模式1用于循环重复定时计数时,每用于循环重复定时计数时,每次计满溢出,寄存器全部为次计满溢出,寄存器全部为0,第二次计数还得重新,第二次计数还得重新计数初值,这样编程麻烦,而且影响定时时间精度,计数初值,这样编程麻烦,而且影响定时时间精度,模式模式2解决了这种缺陷。解决了这种缺陷。模式模式2 2及应用及应用15

130、7例例3用定时器用定时器1,模式,模式2计数,要求每计满计数,要求每计满100次,次,将将P1.0端取反。端取反。模式模式2 2及应用及应用计数初值:计数初值:X1=28-100=156=9CHTH1=TL1=9CH,TMOD=60H(计数方式,模式计数方式,模式2)源程序如下:源程序如下:解:解:T1工作于计数方式,外部计数脉冲由工作于计数方式,外部计数脉冲由T1(P3.5)引脚引入,每来一个由引脚引入,每来一个由1至至0的跳变,计数器的跳变,计数器加加1,由程序查询,由程序查询TF1的状态。的状态。158MOVTMOD,#60H;T1模式模式2,计数方式,计数方式MOVTH1,#9CH;T

131、1计数初值计数初值MOVTL1,#9CHSETBTR1;启动启动T1LOOP:JBCTF1,REP;TF1=1转且使转且使TF1=0SJMPLOOP;否则等待否则等待REP:CPLP1.0;P1.0取反输出取反输出SJMPLOOP;模式模式2 2及应用及应用159例例4由由P3.4引脚引脚(T0)输入一低频脉冲信号(其频率输入一低频脉冲信号(其频率0.5kHz),要要求求P3.4每发生一次负跳变时,每发生一次负跳变时,P1.0输出一个输出一个500s的同步脉的同步脉冲,同时冲,同时P1.1输出一个输出一个1ms的同步脉冲。已知的同步脉冲。已知fosc=6MHz。模式模式2 2及应用及应用1ms

132、1ms500s500sP3.4P1.0P1.1定时方式定时方式计数方式计数方式计数方式计数方式定时方式定时方式解:按题意画出输出信号的波形如下图:解:按题意画出输出信号的波形如下图:160模式模式2 2及应用及应用设初态设初态P1.0输出高电平(系统复位时即为高),输出高电平(系统复位时即为高),P1.1输出低输出低电平电平,设设T0为模式为模式2,计数工作方式(,计数工作方式(1次,初值为次,初值为FFH)。)。然后然后T0又恢复对外部脉冲的计数方式,如此循环。又恢复对外部脉冲的计数方式,如此循环。500s定时的计数初值定时的计数初值X为:为:X=256-5006/12=06H当当T0第一次

133、定时第一次定时500s到时,计数器溢出后,使到时,计数器溢出后,使P1.0恢复为恢复为1,P1.1不变,不变,T0继续第二次继续第二次500s定时的计数,第二次产生溢出定时的计数,第二次产生溢出后恢复后恢复P1.1为为0。此时再将此时再将T0改变为定时工作方式(改变为定时工作方式(500s,初值为初值为06H),并,并且使且使P1.0输出为输出为0,P1.1输出为输出为1。当加在当加在P3.4上的外部脉冲产生由上的外部脉冲产生由1至至0的负跳变时,则使的负跳变时,则使T0计数计数器加器加1而产生溢出,程序查询到而产生溢出,程序查询到TF0为为1时,表示计数到。时,表示计数到。161程序如下:程

134、序如下:START:MOVTMOD,#06H;T0模式模式2,计数工作方式,计数工作方式MOVTH0,#0FFH;T0计数初值计数初值MOVTL0,#0FFHCLRP1.1;P1.1初态为初态为0SETBTR0;启动启动T0LOOP:JBCTF0,LP1;检测外部信号负跳变否?检测外部信号负跳变否?SJMPLOOP;无等待无等待LP1:CLRTR0;关定时器关定时器MOVTMOD,#02H;T0改变为定时改变为定时500s,模式模式2MOVTH0,#06H;定时的计数初值定时的计数初值MOVTL0,#06H162SETBP1.1;P1.1输出输出1CLRP1.0;P1.0输出输出0SETBTR

135、0;启动启动T0定时定时LOOP1:JBCTF0,LP2;第一个第一个500s到否?到否?SJMPLOOP1;未到等待未到等待LP2:SETBP1.0;到了到了P1.0恢复恢复LOOP2:JBCTF0,LP3;第二个第二个500s到否?到否?SJMPLOOP2LP3:CLRP1.1;P1.1恢复恢复0CLRTR0;关定时器关定时器AJMPSTART163TF0TL0(8位)位)中中断断12分频分频foscT0(P3.4)C/T=0C/T=1TR0+GATEINT0(P3.2)控制控制fosc/12TL0模式模式3结构结构TH0模式模式3结构结构TF0TH0(8位)位)TR1控制控制fosc/1

136、2中中断断模式模式3 3及应用及应用164T0可分为两个独立的可分为两个独立的8位定时计数器位定时计数器TH0和和TL0,其中其中TH0只能作为只能作为8位定时器,而位定时器,而TL0既可以作既可以作为定时器又可以作为计数器用。为定时器又可以作为计数器用。模式模式3 3及应用及应用1操作模式操作模式3只适合于定时器只适合于定时器T0。2T0工作于操作模式工作于操作模式3下的特点:下的特点:TH0的启停只受的启停只受TR1的控制,不受的控制,不受GATE位的位的控制(但控制(但TL0仍受仍受GATE的控制)的控制)。TL0占用占用T0的全部控制位、引脚和标志位的全部控制位、引脚和标志位TR0,而

137、而TH0占用占用T1的中断源和的中断源和TR1、TF1。1653T0工作于操作模式工作于操作模式3下下T1的特点:的特点:模式模式3 3及应用及应用T0工作于操作模式工作于操作模式3时,时,T1一般用作串行口一般用作串行口的波特率发生器。的波特率发生器。T1的停止:给的停止:给T1送入送入模式模式3的模式控制字后,的模式控制字后,T1就停止工作。就停止工作。T1的启动:的启动:T1设置好工作方式后就设置好工作方式后就自动自动启动,启动,不能使用不能使用TR1控制位。控制位。此时此时T1仍可被设置为模式仍可被设置为模式0、1或或2,用于不,用于不需要中断的场合下的定时或计数。需要中断的场合下的定

138、时或计数。166例例5设某用户系统中已使用了设某用户系统中已使用了2个外部中断源,并置定时器个外部中断源,并置定时器T1工工作于模式作于模式2,作串行口波特率发生器用。现要求再增加一个,作串行口波特率发生器用。现要求再增加一个外部中断源并由外部中断源并由P1.0输出一个输出一个5kHz的方波。的方波。fosc=12MHz。模式模式3 3及应用及应用TL0的计数初值为的计数初值为0FFH;TH0的计数初值的计数初值X为:为:P1.0的方波频率为的方波频率为5kHz,故周期故周期T=1/5kHz=0.2ms=200s用用TH0定时定时100s,X=256-10012/12=156解:为了不增加其它

139、硬件开销,可设置解:为了不增加其它硬件开销,可设置T0工作于模式工作于模式3计数方式,计数方式,把把T0的引脚作附加的外部中断输入端,的引脚作附加的外部中断输入端,TL0的计数初值为的计数初值为FFH,当检测到当检测到T0引脚由引脚由1至至0负跳变使,负跳变使,TL0立即产生溢出,立即产生溢出,申请中断,相当于边沿触发的外部中断源。申请中断,相当于边沿触发的外部中断源。T0模式模式3下下TL0作计数器用,而作计数器用,而TH0可用作可用作8位的定时器,定时控制位的定时器,定时控制P1.0输出输出的的5kHz的方波信号。的方波信号。167MOVTMDO,#27H;T0模式模式3,计数;,计数;T

140、1模式模式2,定时,定时MOVTL0,#0FFH;TL0计数初值计数初值MOVTH0,#156;TH0计数初值计数初值MOVTH1,#data;data是根据波特率要求设置的常数是根据波特率要求设置的常数MOVTL1,#data;focs=12MHzMOVTCON,#55H;外中断外中断0、1边沿触发,边沿触发,启动启动TH0,TH1MOVIE,#9FH;开放全部中断开放全部中断源程序如下:源程序如下:168第三节第三节定时器定时器/计数器的综合应用举例计数器的综合应用举例一、一、定时器定时器/计数的综合应用举例计数的综合应用举例:二、二、运行中读定时器运行中读定时器/计数器:计数器:169解

141、:设外部脉冲由解:设外部脉冲由INT0(P3.2)输入,输入,T0工作于定时方式,选择工作于定时方式,选择操作模式操作模式1(16位计数),位计数),GATA设为设为1,测试时,应在,测试时,应在INT0为低电平时,设置为低电平时,设置TR0为为1,一旦,一旦INT0变为高电平时,变为高电平时,就启动计数;就启动计数;INT0再次变化时,停止计数。此计数值(放再次变化时,停止计数。此计数值(放在在TH0、TL0中)即为被测脉冲的宽度。中)即为被测脉冲的宽度。定时器的综合应用举例定时器的综合应用举例测试程序如下:测试程序如下:例例6:利用:利用T0门控位测试门控位测试INT0引脚上出现的正脉冲宽

142、度,已知引脚上出现的正脉冲宽度,已知fosc=12MHz,将所测到的高将所测到的高8位值存入片内位值存入片内71H,低低8位存位存入片内入片内70H单元中。单元中。170MOVTMOD,#09H;T0定时,模式定时,模式1,GATA=1MOVTL0,#00H;T0从从0000H开始计数开始计数MOVTH0,#00HMOVR0,#70HJBP3.2,$;等待等待P3.2变低变低SETBTR0;P3.2已变低,准备启动已变低,准备启动T0JNBP3.2,$;等待等待P3.2变高,启动变高,启动T0计数计数JBP3.2,$;等待等待P3.2再次变低再次变低CLRTR0;P3.2已变低,已变低,T0停

143、止计数停止计数MOVR0,TL0;存入计数值存入计数值INCR0MOVR0,TH0171例例7:试用:试用8051定时器定时器0作外部工件计数器,外部工件信号由作外部工件计数器,外部工件信号由T0端引入,端引入,T1作定时器,每隔一秒钟检测一次作定时器,每隔一秒钟检测一次T0中的计数值,中的计数值,当检测到当检测到100个工件时,使个工件时,使P1.0端口输出信号变反,程序不端口输出信号变反,程序不断循环控制断循环控制P1.0的输出,设的输出,设fosc=12MHz。定时器的综合应用举例定时器的综合应用举例R7软件计数:计数值软件计数:计数值=11000/50=20工作模式控制字设置为:工作模

144、式控制字设置为:0001011016H定时器定时器T0的计数的计数初值初值:X0=256-100=156定时器定时器T1的计数的计数初值初值:设:设T1定时定时50ms,模式模式1X1=216-(5012103)/12=15536=3CB0H解:外部信号由解:外部信号由T0(P3.4)引脚引入引脚引入8051,设置,设置T0为计数方式,模为计数方式,模式式2;T1为定时方式,与软件计数一起实现定时为定时方式,与软件计数一起实现定时1秒钟。秒钟。172源程序如下:源程序如下:MOVTMOD,#16H;T1模式模式1定时,定时,T0模式模式2计数计数MOVTH1,#3CH;T1计数初值,定时计数初

145、值,定时50msMOVTL1,#B0HMOVTH0,#156;T0计数初值,计数计数初值,计数100次次MOVTL0,#156MOVR7,#20;R7软件计数软件计数20次次CLREA;屏蔽所有中断(关屏蔽所有中断(关CPU中断)中断)SETBTR1;启动启动T1SETBTR0;启动启动T0173LOOP:JBCTF1,LQ;T1溢出转溢出转SJMPLOOP;否等待否等待LQ:MOVTH1,#3CH;重装重装T1计数初值计数初值MOVTL1,#B0HDJNZR7,LOOP;1秒未到转秒未到转MOVR7,#20;1秒到重装软件计数值秒到重装软件计数值LP:JNBTF0,LOOP;T0未溢出转未溢

146、出转CPLP1.0;100个工件计满个工件计满P1.0输出变反输出变反SJMPLOOP;返回重复循环返回重复循环174例例7:已知:已知8051单片机的单片机的fosc=12MHz,用,用T1工工作在方式作在方式2定时,试编程由定时,试编程由P1.1输出周期输出周期为为2ms的方波。的方波。MOVTMOD,#20H;T1方式方式2定时定时MOVTH1,#06H;定时;定时250sMOVTL1,#06HSETBTR1175L2:MOVR2,#04HL1:JNBTF1,$CLRTF1DJNZR2,L1CPLP1.1SJMPL2176例例9:某单片机系统:某单片机系统,时钟频率为时钟频率为12MHZ

147、,定时,定时器器/计数器计数器T0用于用于20ms定时定时,T1用于用于100次次计数,两者均要求重复工作计数,两者均要求重复工作,试编写达到上试编写达到上述要求的程序述要求的程序.解:解:TMOD01100001,T0定时定时20ms:X0=216-2010-312106/12=0B1E0H,T1计数计数100次:次:X1=28-100=156MOVTMOD,#62HCLREA177MOVTH1,#156MOVTL1,#156SETBTR1SETBTR0LOOP1:MOVTH0,#0B1HMOVTL0,#0E0HLOOP2:JBCTF0,LOOP1SJMPLOOP2178运行中读定时器运行中

148、读定时器/ /计数器计数器定时器定时器/计数器计数器在在运行中可随时任意改变其运行中可随时任意改变其定时定时/计计数数常数,具体方法有二:常数,具体方法有二:1.在在定时器定时器/计数器运行过程中计数器运行过程中直接装入新的定时直接装入新的定时/计数常数;计数常数;定时器定时器/计数器计数器在在运行中可不打断其定时过程而随时运行中可不打断其定时过程而随时读取其当前的计数值,具体步骤为:读取其当前的计数值,具体步骤为:2.先关闭先关闭定时器定时器/计数器计数器,装入新的定时,装入新的定时/计数常计数常数后再起动数后再起动定时器定时器/计数器计数器。1791.先读取高先读取高8位位THi的值;的值

149、;2.然后读取低然后读取低8位位TLi的值;的值;3.最后再读取高最后再读取高8位位THi的值;的值;例如以下读取结果为:例如以下读取结果为:TH0=10H,TL0=0FFH,TH0=11H(重读重读)TH0=11H,TL0=00H,TH0=11H(可以可以)4.比较前后两次读取的比较前后两次读取的THi值是否相同,相同则表示值是否相同,相同则表示THi及及TLi中的内容即为中的内容即为定时器定时器/计数器计数器的当前值,的当前值,不同则要重复整个读取过程。不同则要重复整个读取过程。180运行中读定时器运行中读定时器/ /计数器计数器RDTIME:MOVA,THiMOVR0,TLiCJNEA,

150、THi,RDTIMEMOVR1,ARET程序程序读入的定时器读入的定时器/计数器计数器的计数值高的计数值高8位在位在R1中,低中,低8位在位在R0中。中。运行中运行中读定时器读定时器/ /计数器计数器的程序如下:的程序如下:181第五章第五章 单片机的中断系统单片机的中断系统5.1MCS-51的中断系统的中断系统5.2中断处理过程中断处理过程5.3外部中断的扩充方法外部中断的扩充方法182第一节第一节 MCS-51的中断系统的中断系统一、一、中断的概念、优点及中断系统的组成中断的概念、优点及中断系统的组成二二中断源及中断服务程序入口地址中断源及中断服务程序入口地址三三中断控制部分的功能中断控制

151、部分的功能四四.中断优先级结构中断优先级结构183计算机在执行某一段程序的过程中,由于计算计算机在执行某一段程序的过程中,由于计算机系统内、外部的某种原因,有必要中止原程序的机系统内、外部的某种原因,有必要中止原程序的执行,而去执行相应处理程序,待处理程序被执行执行,而去执行相应处理程序,待处理程序被执行完之后,再回去执行被终止的原程序,这种在完之后,再回去执行被终止的原程序,这种在程序程序执行过程中由于某些随机原因被中间打断的情况称执行过程中由于某些随机原因被中间打断的情况称之为之为“中断中断”。中断类似于程序中调用子程序,区别中断类似于程序中调用子程序,区别在于在于中断的发生是随机中断的发

152、生是随机的,而调用子程序是编程人的,而调用子程序是编程人员在时间上事先安排好的。员在时间上事先安排好的。MCS-51的中断系统的中断系统中断的概念、优点及中断系统的组成中断的概念、优点及中断系统的组成中断定义中断定义184提高了提高了CPU对外界异步事件的处理能力,如对外界异步事件的处理能力,如CPU可以命令定可以命令定时器,串行口及外设同时工作,大大提高时器,串行口及外设同时工作,大大提高CPU的工作效率;的工作效率;MCS-51的中断系统的中断系统中断的概念、优点及中断系统的组成中断的概念、优点及中断系统的组成中断技术的优点中断技术的优点:MCS-51中断系统有中断系统有5个中断源,由个中

153、断源,由5个个SFR(TCON、SCON、IE、IP和和T1)和顺序查询逻辑组成。和顺序查询逻辑组成。中断系统的组成:中断系统的组成:看看P76图图5.1使使CPU具有了处理故障的能力,如电源突跳、存储出运算,具有了处理故障的能力,如电源突跳、存储出运算,溢出等错误等,计算机均不必停机,可以自动解决。溢出等错误等,计算机均不必停机,可以自动解决。可使可使CPU及时处理实时控制中许多随机参数和信息;及时处理实时控制中许多随机参数和信息;185MCS-51中断系统有中断系统有5个中断源,它们分别为:个中断源,它们分别为:INT0(P3.2)、)、INT1(P3.3)、)、T0(P3.4)、)、T1

154、(P3.5),),串串行口发送和接收中断源行口发送和接收中断源RXD(P3.0)、)、TXD(P3.1)。)。其其中,中,INT0、INT1、T0和和T1的中断标志在的中断标志在TCON中(对应中(对应于于IE0、IE1和和TF0、TF1)。)。RXD和和TXD的中断标志在的中断标志在SCON中(对应于中(对应于RI和和TI)。)。引起中断的原因或发出中断申请的来源称引起中断的原因或发出中断申请的来源称之为中断源。之为中断源。 MCS-51的中断系统的中断系统中断源及中断服务程序入口地址中断源及中断服务程序入口地址1中断源中断源:186 MCS-51的中断系统的中断系统中断源及中断服务程序入口

155、地址中断源及中断服务程序入口地址2中断服务子程序的入口地址中断服务子程序的入口地址中断源中断源矢量地址矢量地址自然优先级自然优先级INT0外部中断外部中断0中断中断0003H最高最高T0定时器定时器0中断中断000BHINT1外部中断外部中断1中断中断0013HT1定时器定时器1中断中断001BHRI或或TI串行口中断串行口中断0023H最低最低187MCS51的中断服务子程序的入口地址是的中断服务子程序的入口地址是固定的,由固定的,由0003H开始至开始至0023H,每个中断源的中每个中断源的中断服务子程序的入口地址(又称中断矢量地址)断服务子程序的入口地址(又称中断矢量地址)内只有内只有8

156、个字节,所以一般在此地址内使用个字节,所以一般在此地址内使用JMP指指令,使中断子程序转移到用户安排的中断服务程令,使中断子程序转移到用户安排的中断服务程序的入口处。序的入口处。 MCS-51的中断系统的中断系统中断源及中断服务程序入口地址中断源及中断服务程序入口地址1881中断请求标志中断请求标志IE0:INT0(外部中断外部中断0)的中断请求输入端标志)的中断请求输入端标志,标志标志P3.2引脚输入的信号是否有效。引脚输入的信号是否有效。IE1:INT1(外部中断外部中断1)的中断请求输入端标志,)的中断请求输入端标志,标志标志P3.3引脚输入的信号是否有效。引脚输入的信号是否有效。MCS

157、-51的中断系统的中断系统中断控制部分的功能中断控制部分的功能MCS-51单片机有单片机有5个中断源,它们的有关信号个中断源,它们的有关信号分别锁存在分别锁存在TCON(定时定时/计数控制计数控制R)和和SCON(串串行口控制行口控制R)中。中。189INT0与与INT1都可直接接受外设向都可直接接受外设向CPU发出的中发出的中断申请信号,它们有效时分别由断申请信号,它们有效时分别由硬件对硬件对TCON的的IE0和和IE1进行置位,中断信号的触发形式受定时进行置位,中断信号的触发形式受定时/计数器计数器控制寄存器控制寄存器TCON中中IT0与与IT1控制。当为控制。当为脉冲脉冲触发触发(ITi

158、=1)时,时,IEi在在CPU响响应中断时自动由硬件清应中断时自动由硬件清0;当为(当为(低低)电平电平触发(触发(ITi=0)时,在时,在CPU响应中断响应中断后,只有当后,只有当INTi引脚上的引脚上的电平由低变高电平由低变高时,时,IEi位才位才能由硬件清除。能由硬件清除。MCS-51的中断系统的中断系统中断控制部分的功能中断控制部分的功能190MCS-51的中断系统的中断系统中断控制部分的功能中断控制部分的功能中断请求标志中断请求标志TF1:片内定时器片内定时器T1溢出中断请求标志,当定时溢出中断请求标志,当定时器器T1定时或计数到产生溢出时,硬件电路就自动定时或计数到产生溢出时,硬件

159、电路就自动置位置位TCON中的中的TF1,向向CPU发出中断申请。发出中断申请。TF0:片内定时器片内定时器T0的溢出中断请求标志,当定的溢出中断请求标志,当定时器时器T0定时或计数到产生溢出时,硬件电路就自定时或计数到产生溢出时,硬件电路就自动置位动置位TCON中的中的TF0,向向CPU发出中断申请。发出中断申请。191TI或或RI:串行口中断请求,当串行口发送一帧串行口中断请求,当串行口发送一帧信号结束时,由硬件电路自动置位串行口控制信号结束时,由硬件电路自动置位串行口控制寄存器寄存器SCON中的中的TI=1,或者串行口接收一帧或者串行口接收一帧信号结束时,由硬件电路自动置位信号结束时,由

160、硬件电路自动置位RI=1,向向CPU发出中断申请,请求发出中断申请,请求CPU进行中断处理。进行中断处理。MCS-51的中断系统的中断系统中断控制部分的功能中断控制部分的功能中断请求标志中断请求标志(注:任何情况下,(注:任何情况下,RI和和TI都必须由软件进行清都必须由软件进行清0。)。)192(A8H)AFHAEHADHACHABHAAHA9HA8HIEEAESET1EX1ET0EX02中断允许与屏蔽中断允许与屏蔽MCS-51的中断系统的中断系统中断控制部分的功能中断控制部分的功能MCS-51单片机中,设有一个专用寄存器单片机中,设有一个专用寄存器IE称称为中断允许寄存器(为中断允许寄存器

161、(interruptpermit),),其作用其作用是用来对各中断源进行开放或屏蔽的控制。其各是用来对各中断源进行开放或屏蔽的控制。其各位的定义如下:位的定义如下:193EA-IE.7:为为CPU中断总允许位。中断总允许位。EA=1CPU开放开放中断,而每个中断源是开放还是屏蔽中断,而每个中断源是开放还是屏蔽分别由各自的允许位确定。分别由各自的允许位确定。EA=0时时CPU关中断,禁止一切中断。关中断,禁止一切中断。2中断允许与屏蔽中断允许与屏蔽MCS-51的中断系统的中断系统中断控制部分的功能中断控制部分的功能ET1-IE.3:为定时器为定时器1中断允许位。中断允许位。ET1=1,允允许许T

162、1中断,否则禁止中断。中断,否则禁止中断。ES-IE.4:为串行口中断允许位。为串行口中断允许位。ES=1,允许串行口允许串行口的接收和发送中断;的接收和发送中断;ES=0禁止串行口中断。禁止串行口中断。194EX1-IE.2:位为外部中断位为外部中断1的中断允许位。的中断允许位。EX1=1允许外部中断允许外部中断1中断:否则禁止中断。中断:否则禁止中断。2中断允许与屏蔽中断允许与屏蔽MCS-51的中断系统的中断系统中断控制部分的功能中断控制部分的功能EX0-IE.0:为外部中断为外部中断0的中断允许位。的中断允许位。EX0=1允允许外部中断许外部中断0中断,否则禁止中断。中断,否则禁止中断。

163、ET0-IE.1:为定时器为定时器0的中断允许位。的中断允许位。ET0=1允允许许T0中断,否则禁止中断。中断,否则禁止中断。195ET2-IE.5:为定时器为定时器2中断允许位,仅用于中断允许位,仅用于52子系子系列单片机中,列单片机中,ET2=1允许定时器允许定时器2中断,中断,否则禁止中断。系统复位后,否则禁止中断。系统复位后,IE各位各位均为均为0,即禁止所有中断。,即禁止所有中断。IE寄存器寄存器可以进行字节寻址也可以进行位寻址。可以进行字节寻址也可以进行位寻址。2中断允许与屏蔽中断允许与屏蔽MCS-51的中断系统的中断系统中断控制部分的功能中断控制部分的功能196(B8H)BFHB

164、EHBDHBCHBBHBAHB9HB8HIPPT2PSPT1PX1PT0PX03.中断优先级设定中断优先级设定MCS-51的中断系统的中断系统中断控制部分的功能中断控制部分的功能MCS-51单片机的中断分为单片机的中断分为2个优先级,每个个优先级,每个中断源的优先级都可以通过中断优先级寄存器中断源的优先级都可以通过中断优先级寄存器IP(interruptpriority)中的相应位来设定。中的相应位来设定。IP也是也是可进行字节寻址和位寻址的寄存器,其各位的定义可进行字节寻址和位寻址的寄存器,其各位的定义如下:如下:197PT2-IP.5:为定时器为定时器2的优先级设定位,仅适用于的优先级设定

165、位,仅适用于52子系列单片机。子系列单片机。PT2=1时,设定为时,设定为高优先级,否则为低优先级。高优先级,否则为低优先级。3.中断优先级设定中断优先级设定MCS-51的中断系统的中断系统中断控制部分的功能中断控制部分的功能PS-IP.4:为串行口优先级设定位。为串行口优先级设定位。PS=1时,串行时,串行口为高优先级,否则为低优先级。口为高优先级,否则为低优先级。IP.7和和IP.6:保留位保留位198PT1-IP.3:为定时器为定时器1优先级设定位。优先级设定位。PT1=1时,时,T1为高优先级,否则为低优先级。为高优先级,否则为低优先级。3.中断优先级设定中断优先级设定MCS-51的中

166、断系统的中断系统中断控制部分的功能中断控制部分的功能PX0-IP.0:为外部中断为外部中断0优先级设定位。优先级设定位。PX0=1时,时,外部中断外部中断0为高优先级,否则为低优先级。为高优先级,否则为低优先级。PT0-IP.1:为定时器为定时器0优先级设定位。优先级设定位。PT0=1时,时,T0为高优先级,否则为低优先级。为高优先级,否则为低优先级。PX1-IP.2:为外部中断为外部中断1优先级设定位。优先级设定位。PX1=1时,时,外部中断外部中断1为优先级,否则为低优先级。为优先级,否则为低优先级。199一台计算机往往有多个中断源,会出现几个中断源同一台计算机往往有多个中断源,会出现几个

167、中断源同时发出中断请求的情况,这就要求用户事先根据它们的轻时发出中断请求的情况,这就要求用户事先根据它们的轻重缓急,给每个中断源确定一个中断级别重缓急,给每个中断源确定一个中断级别优先权优先权,此,此时当几个中断源同时发出中断请求时,时当几个中断源同时发出中断请求时,CPU能找出中断级能找出中断级别最高的中断源并响应,在响应结束后,再响应其它级别别最高的中断源并响应,在响应结束后,再响应其它级别较低的中断源的中断请求。如果较低的中断源的中断请求。如果CPU在响应并处理优先权在响应并处理优先权较低的中断请求过程中,又接到级别比它高的中断请求,较低的中断请求过程中,又接到级别比它高的中断请求,则则

168、CPU中断当前的处理而为级别较高的中断请求服务,这中断当前的处理而为级别较高的中断请求服务,这种情况叫做种情况叫做中断嵌套中断嵌套。中断优先级结构中断优先级结构MCS-51的中断系统的中断系统200中断优先级结构中断优先级结构MCS-51的中断系统的中断系统1MCS-51单片机的中断优先权:单片机的中断优先权:MCS-51单片机用中断优先级寄存器单片机用中断优先级寄存器IP(0B8H)为各中断源设置高优先级或低优先级。为各中断源设置高优先级或低优先级。2MCS-51对中断优先级的处理原则:对中断优先级的处理原则:不同级不同级的中断源同时申请中断时,的中断源同时申请中断时,先高后低先高后低,同一

169、级同一级中断源同时申请中断时,按中断源的中断源同时申请中断时,按中断源的自然优自然优先级先级进行处理,即进行处理,即:外部中断外部中断0定时器定时器/计数器计数器0溢出溢出外部中断外部中断1定时器定时器/计数器计数器1溢出溢出串行口中断串行口中断201低优先级的中断的处理程序可以被高优先级低优先级的中断的处理程序可以被高优先级的中断申请打断,反之不能。的中断申请打断,反之不能。中断优先级结构中断优先级结构MCS-51的中断系统的中断系统上面顺序中上面顺序中由左至右由左至右优先级别依次优先级别依次降低降低,且必须且必须遵循以下原则:遵循以下原则:一种中断(无论哪种)一旦得到响应,它同一种中断(无

170、论哪种)一旦得到响应,它同级的中断不能打断它。级的中断不能打断它。202第二节第二节中断处理过程中断处理过程一一中断响应中断响应二二中断处理中断处理203中断处理过程中断处理过程1中断响应的条件中断响应的条件(1)有中断源发出中断请求;)有中断源发出中断请求;(2)中断总允许位)中断总允许位EA=1即即CPU开中断;开中断;(3)申请中断的中断源的中断允许位为)申请中断的中断源的中断允许位为1,即没有被屏蔽;,即没有被屏蔽;(4)中断不受阻。)中断不受阻。中断响应中断响应正在执行正在执行RETI指令或正在对指令或正在对IE或或IP寄存器读写操寄存器读写操作,这些操作进行完后至少要执行一条其它指

171、令作,这些操作进行完后至少要执行一条其它指令之后之后CPU才会响应中断。才会响应中断。以下情况中断会受阻以下情况中断会受阻:同级或高优先级的中断正在进行;同级或高优先级的中断正在进行;一条指令还未执行完;一条指令还未执行完;204中断源发中断申请中断源发中断申请中断响应条件是否满足?中断响应条件是否满足?中断是否受阻?中断是否受阻?YNY把把PC断点地址压入堆栈断点地址压入堆栈N相应中断源的中断入口地址相应中断源的中断入口地址送入送入PC,转向中断服务程序转向中断服务程序中断响应的过程中断响应的过程中断处理过程中断处理过程中断响应中断响应205一般情况下,中断服务程序主要包括四大部分的内一般情

172、况下,中断服务程序主要包括四大部分的内容:保护现场、为中断源服务、恢复现场、中断返回容:保护现场、为中断源服务、恢复现场、中断返回。中断处理中断处理中断处理过程中断处理过程中断程序处理的过程中断程序处理的过程硬件自动执行一条长调用指令硬件自动执行一条长调用指令LCALL,把把PC当前值入栈,当前值入栈,清除中断标志(以免第二次引起中断),但清除中断标志(以免第二次引起中断),但RI与与TI必须必须由软件清除。由软件清除。CPU一响应中断,立即按查询结果置中断优先级状态触一响应中断,立即按查询结果置中断优先级状态触发器,表明发器,表明CPU开始处理的中断的优先级别,供下一个开始处理的中断的优先级

173、别,供下一个查询周期查询,同时阻止任何同级中断进入,但允许被查询周期查询,同时阻止任何同级中断进入,但允许被高级中断信号再次中断。高级中断信号再次中断。206最后最后CPU把中断源相应的中断向量压入把中断源相应的中断向量压入PC中,程序转入中,程序转入中断服务程序入口。中断服务程序入口。中断处理中断处理中断处理过程中断处理过程中断返回,在软件中用中断返回,在软件中用RETI指令,执行该指令时指令,执行该指令时CPU首首先清除中断优先级状态触发器,然后将栈顶的两个字节先清除中断优先级状态触发器,然后将栈顶的两个字节内容自动弹入内容自动弹入PC中,程序返回到原程序中被中断处继续中,程序返回到原程序

174、中被中断处继续执行。执行。执行中断服务子程序。执行中断服务子程序。207关中断关中断保护现场保护现场开中断开中断中断服务中断服务关中断关中断恢复现场恢复现场开中断开中断中断返回中断返回断点地址由堆栈弹入断点地址由堆栈弹入PC中断处理中断处理中断处理过程中断处理过程中断服务程序的主要内容中断服务程序的主要内容:解:此例要求解:此例要求P1.0输出方波的周期时间较长,用一个定时期输出方波的周期时间较长,用一个定时期无法实现长时间的定时,解决的办法可用定时器加软件无法实现长时间的定时,解决的办法可用定时器加软件计数的方法或是两个定时器合用的方法来实现,计数的方法或是两个定时器合用的方法来实现,例例:

175、用定时器:用定时器1定时,由定时,由P1.0输出周期为输出周期为2分钟的方波。已知分钟的方波。已知fosc=12MHz。208方法一:方法一:解:用定时器解:用定时器T1定时定时10ms;加软件计数实现定时一分钟。加软件计数实现定时一分钟。40H单元作单元作ms的计数单元:的计数单元:1s/10ms=100次次41H单元作单元作s的计数单元:的计数单元:1min/1s=60次次29H单元的(单元的(4FH)D7位作分的计时标志位:标志用位作分的计时标志位:标志用4FHT1的计数初值:的计数初值:X=216-12101000/12=55536=0D8F0H主程序:主程序:ORG0000HAJMP

176、2000HORG001BHAJMP2100H209ORG2000HMOVTMOD,#10H;T1定时,模式定时,模式1MOVTH1,#0D8H;T1计数初值计数初值MOVTL1,#0F0HMOVIE,#88H;CPU、T1开中断开中断SETBTR1;启动启动T1MOV40H,#100;ms计数初值计数初值MOV41H,#60;S计数初值计数初值CLR4FHTT:JNB4FH,TT;等待等待1分钟到分钟到CLR4FH;清分标志位清分标志位CPLP1.0;输出变反输出变反AJMPTT;反复循环反复循环210T1中断服务程序:(由中断服务程序:(由001BH转来)转来)ORG2100HMOVTH1,

177、#0D8H;T1重赋初值重赋初值MOVTL1,#0F0HDJNZ40H,TT1;判判1S到否?到否?MOV40H,#100;到重赋计数值到重赋计数值DJNZ41H,TT1;判判1min到标志位到标志位MOV41H,#60;到了重赋计数值到了重赋计数值SETB4FH;置置1min到标志位到标志位TT1:RETI;中断返回中断返回211方法二方法二:解:采用两个定时器以实现长时间的定时,两个定时器中一个解:采用两个定时器以实现长时间的定时,两个定时器中一个定时,另一个作为计数,定时的时间到可以输出一个控制定时,另一个作为计数,定时的时间到可以输出一个控制信号作为另一个定时器的计数脉冲。具体的方法如

178、下:信号作为另一个定时器的计数脉冲。具体的方法如下:X0=216-1260103/12=5536=15A0HX1=216-1000=64536=0FC18H设设T0定时定时60ms,模式模式1;T1计数。当计数。当T0定时定时60ms到控制到控制P1.2输出方波作为输出方波作为T1的计数脉冲(的计数脉冲(P1.2输出与输出与T1(P3.5)连接连接起来);起来);T1计数溢出控制计数溢出控制P1.0输出脉宽为输出脉宽为1分钟分钟(延时为延时为1分钟,分钟,即即计数计数1000次次)的方波,)的方波,T0与与T1的计数初值分别为的计数初值分别为X0与与X1:212主程序如下:主程序如下:ORG0

179、000HSJMPSTARTORG000BHAJMPINTR0;T0中断服务程序入口地址中断服务程序入口地址ORG001BHAJMPINTR1;T1中断服务程序入口地址中断服务程序入口地址ORG2000HSTART:MOVTMOD,#51H;T0定时、模式定时、模式1,;T1计数、模式计数、模式1213MOVTH0,#15H;T0计数初值计数初值MOVTL0,#0A0HMOVTH1,#0FCH;T1计数初值计数初值MOVTL1,#18HMOVIE,#8AH;CPU、T0、T1开中断开中断SETBTR0;启动启动T0SETBTR1;启动启动T1LL:SJMPLL;等待中断等待中断(60ms后后T0

180、先产生中断,先产生中断,T0产生产生1000次次中断(中断(1min)后后T1才会产生一次中断)才会产生一次中断)214T0的中服务程序(由的中服务程序(由000BH转来):转来):INTR0:MOVTH0,#15H;T0重赋初值重赋初值MOVTL0,#0A0HCPLP1.2;P1.2取反作取反作T1的计数脉冲输入的计数脉冲输入RETI;中断返回中断返回INTR1:MOVTH1,#0FCH;T1重赋初值重赋初值MOVTL1,#18HCPLP1.0;P1.0取反输出取反输出RETI215第三节第三节外部中断的扩充方法外部中断的扩充方法一、一、利用定时器扩充外部中断源法利用定时器扩充外部中断源法:

181、(看(看P93页)页)二、二、中断和查询结合法中断和查询结合法:(看(看P93页)页)三、三、矢量中断扩充法矢量中断扩充法:(看(看P94页)页)MCS51单片机只为用户提供了两个外部中断请求输单片机只为用户提供了两个外部中断请求输入端,若外部中断源超过两个时,就需要扩充外部中断源。入端,若外部中断源超过两个时,就需要扩充外部中断源。下面介绍三种扩充外部中断源的方法。下面介绍三种扩充外部中断源的方法。216具体应用如下具体应用如下:利用定时器扩充外部中断源法利用定时器扩充外部中断源法MCS51单片机有两个定时器,具有两个内部中断标志单片机有两个定时器,具有两个内部中断标志和外部计数输入引脚。当

182、定时器设置为和外部计数输入引脚。当定时器设置为计数计数方式,计数初值方式,计数初值设为满量程设为满量程0FFH,一旦外部信号从计数器引脚输入一个负跳一旦外部信号从计数器引脚输入一个负跳变信号,计数器加变信号,计数器加1产生溢出中断,从而可以转去处理该外部产生溢出中断,从而可以转去处理该外部中断源的请求。因此我们可以把外部中断源作中断源的请求。因此我们可以把外部中断源作边沿触发边沿触发的的输输入信号,接至定时器的入信号,接至定时器的T0(P3.4)或或T1(P3.5)引脚上,该定时器引脚上,该定时器的溢出中断标志及中断服务程序作为扩充外部中断源的标志和的溢出中断标志及中断服务程序作为扩充外部中断

183、源的标志和中断服务程序。中断服务程序。217INT1INT0装置装置2装置装置3装置装置4装置装置1+5V8051P1.0P1.1P1.2P1.3中断和查询结合法中断和查询结合法MCS51的两根外部中的两根外部中断输入线中的每一根,都可断输入线中的每一根,都可以通过线或的关系连接多个以通过线或的关系连接多个外部中断源,如右图;外部中断源,如右图;无论哪个外设提出中断申无论哪个外设提出中断申请,都会使请,都会使INT0变低,向变低,向CPU发出中断申请信号;发出中断申请信号;利用输入端口线作为各中利用输入端口线作为各中断源的识别线,即可通过程断源的识别线,即可通过程序查询序查询P1.0P1.3的

184、逻辑电的逻辑电平得知究竟是哪个外设产生平得知究竟是哪个外设产生了中断申请信号。了中断申请信号。各中断的各中断的优先级由软件查询的顺序优先级由软件查询的顺序决定。决定。218ORG0003HLJMPINTRP0;INT0中断服务程序入口中断服务程序入口INTRP0:PUSHPSW;中断服务程序是一个中断查询程序中断服务程序是一个中断查询程序PUSHAJBP1.0,DV1JBP1.1,DV2JBP1.2,DV3JBP1.3,DV4EXIT:POPAPOPPSWRETI219DV1:装置装置1的中断服务程序的中断服务程序AJMPEXITDV2:装置装置2的中断服务程序的中断服务程序AJMPEXITD

185、V3:装置装置3的中断服务程序的中断服务程序AJMPEXITDV4:装置装置4的中断服务程序的中断服务程序AJMPEXIT220输入输入中断矢量中断矢量INTR7INTR6INTR5INTR4INTR3INTR2INTR1INTR0 00H 10H 20H 30H 40H 50H 60H 70HGSINT1E1I7I6I0A2A1A0P1.7P1.4P1.5P1.6P1.30MCS5174LS148INTR7INTR0INTR68个中断源的个中断源的矢量矢量矢量中断扩充法矢量中断扩充法利用利用83优先权编码器优先权编码器74LS148和外部中断引脚和外部中断引脚INT0、INT1实现中断的扩充

186、。扩展电路及中断矢量表如下:实现中断的扩充。扩展电路及中断矢量表如下:221其中:外部其中:外部8个中断源的中断请求由个中断源的中断请求由INTR7INTR0引引入入74LS148的输入端的输入端I7I0,148对对8个中断源的申请进行优先个中断源的申请进行优先权的排队,经排队后产生相应的矢量代码权的排队,经排队后产生相应的矢量代码A2A0送送MCS-51的的P1.6P1.4位。其中位。其中INTR7优先权最高,优先权最高,INTR0优先权最优先权最低低。当有多个中断同时发生时,编码器只对其中一个优先权。当有多个中断同时发生时,编码器只对其中一个优先权最高的中断做出反应,并输出其矢量代码。而任

187、一个中断源最高的中断做出反应,并输出其矢量代码。而任一个中断源有请求均通过有请求均通过148的的GS输出端加到输出端加到INT1引脚上,向引脚上,向CPU发出发出中断请求。中断请求。74LS148的真值表如表的真值表如表5-1所示。所示。矢量中断扩充法矢量中断扩充法222输入输入输出输出E1I0I1I2I3I4I5I6I7 A2A1A0GSEO1011111111000010011001110011110011111001111110011111111111111110000010010101001011011000110101110011110174LS148真值表真值表223无论外部的无论

188、外部的INTR0INTR7中哪一个中断源发生中断申中哪一个中断源发生中断申请,请,CPU响应中断时都要转入响应中断时都要转入INT1的入口处的入口处0013H单元执行,单元执行,所以在所以在0013H处要安排引导程序,使程序转移到与矢量相对处要安排引导程序,使程序转移到与矢量相对应的入口地址去执行。假设应的入口地址去执行。假设8个中断源的页地址均为个中断源的页地址均为PAGE,中断服务子程序事先存放在地址为中断服务子程序事先存放在地址为PAGE(高高8位)和位)和P1(低低8位)位)所指示的所指示的ROM中,则引导程序应为:中,则引导程序应为:矢量中断扩充法矢量中断扩充法2240013H:PU

189、SHACC;保护保护A的内容的内容MOVA,P1;读取中断矢量,读取中断矢量,00H70HPUSHACC;中断矢量入栈中断矢量入栈PUSHPAGE;中断服务程序页地址入栈,中断服务程序页地址入栈,PAGE为任意一个可直接寻址的为任意一个可直接寻址的RAM值值RET;返回指令,实际操作是将栈顶两字返回指令,实际操作是将栈顶两字节的内容(节的内容(PAGE与与ACC的值,它们的值,它们构成中断服务子程序的入口地址构成中断服务子程序的入口地址)送)送入程序计数器寄存器入程序计数器寄存器PC中,程序将中,程序将由由PC指示的地址开始执行。指示的地址开始执行。225当当8个中断子程序不在同一页面上时,引

190、导程序可如下个中断子程序不在同一页面上时,引导程序可如下:PUSHACC;保护保护A的内容的内容CLRAPUSHACC;00H入栈,作为中断服务程序入口地入栈,作为中断服务程序入口地址的低址的低8位地址位地址MOVA,P1;读取中断矢量,读取中断矢量,A=0070HSWAPA;读取中断矢量,高低读取中断矢量,高低4位交换,位交换,0007HORLA,#78H;A=78H7FHMOVR0,AMOVA,R0;取高取高8位地址(在位地址(在78H7FH单元中)单元中)PUSHACC;高高8位地址入栈位地址入栈RET;转向中断服务程序入口处(高转向中断服务程序入口处(高8位地址由位地址由78H7FH单

191、元内容给出,低单元内容给出,低8位地址为位地址为00H)226并行通讯:数据的传输方式是按字节进行的,如并行通讯:数据的传输方式是按字节进行的,如P0P3口,口,每个口一次可传输每个口一次可传输8位二进制数。位二进制数。第六章第六章 单片机串行口及应用单片机串行口及应用串行通讯:数据的传输方式是按位进行的,每个口一次只串行通讯:数据的传输方式是按位进行的,每个口一次只能传输能传输1位二进制数,位二进制数,MCS51有一个全双工有一个全双工串行口。串行口。227一般串行口按功能可分为三类:一般串行口按功能可分为三类:MCS-51单片机是一个全双工串行口。它有四种工单片机是一个全双工串行口。它有四

192、种工作方式:作方式:0、1、2、3,每一种方式具有不同的波特率。,每一种方式具有不同的波特率。波特率:串行口每秒钟能发送或接收的二进制数的位数波特率:串行口每秒钟能发送或接收的二进制数的位数称为波特率。(标准值)称为波特率。(标准值)(3)全双工串行口:可同时进行发送与接收的串行口。)全双工串行口:可同时进行发送与接收的串行口。(2)半双工串行口:即可接收又可发送但二者不可同)半双工串行口:即可接收又可发送但二者不可同时进行的串行口。时进行的串行口。(1)单工串行口:只能用于接收或发送的串行口,单)单工串行口:只能用于接收或发送的串行口,单一功能。一功能。228第一节串行口的结构与工作原理第一

193、节串行口的结构与工作原理第二节第二节工作方式与波特率的设置工作方式与波特率的设置一、一、串行口结构串行口结构二、二、串行口状态寄存器串行口状态寄存器SCON一一串行口的工作方式串行口的工作方式二二多机通讯多机通讯229由两个数据缓冲器由两个数据缓冲器SBUF、电源控制寄存器电源控制寄存器PCON、一个串行控制寄存器一个串行控制寄存器SCON、一个波特一个波特率发生器率发生器T1和一个移位寄存器组成。和一个移位寄存器组成。串行口的结构与工作原理串行口的结构与工作原理串行口结构串行口结构SBUF在物理上对应着两个独立在物理上对应着两个独立R,一个是发一个是发送缓冲器(送缓冲器(TBUF),),一个

194、是接收缓冲器一个是接收缓冲器(RBUF)。)。二者公用一个地址,其中二者公用一个地址,其中SBUF中的中的RBUF只能读不只能读不能写,能写,SBUF中的中的TBUF是是CPU写写SBUF,不能读。不能读。数据缓冲器数据缓冲器SBUF(99H):属于属于SFR不可位寻址。不可位寻址。230控制寄存器的控制寄存器的D7位位SMOD为串行口波特率的加为串行口波特率的加倍选择位。当用软件使倍选择位。当用软件使SMOD=1时,则使方式时,则使方式1、2及及3的波特率为的波特率为SMOD=0时的时的2倍,其中:倍,其中:串行口的结构与工作原理串行口的结构与工作原理串行口结构串行口结构电源控制寄存器电源控

195、制寄存器PCON(87H):SFR不可位寻址。不可位寻址。即即CPU对对RBUF是只读,所以二者公用一个地址不会是只读,所以二者公用一个地址不会发生混乱。发生混乱。231串行口的结构与工作原理串行口的结构与工作原理串行口结构串行口结构在方式在方式1和和3中:中:波特率波特率=2SMOD(T1的溢出率)的溢出率)/32在方式在方式2中:中:波特率波特率=2SMODfosc/6498HSCON9FH9EH9DH 9CH 9BH 9AH 99H98HSM0 SM1 SM2 REN TB8RB8TIRI3.串行口状态寄存器串行口状态寄存器SCON:串行口状态寄存器串行口状态寄存器SCON可位寻址,其各

196、位含义如下:可位寻址,其各位含义如下:232SM0、SM1:两位用于选择串行口两位用于选择串行口03四种不同四种不同的工作方式。的工作方式。串行口的结构与工作原理串行口的结构与工作原理串行口状态寄存器串行口状态寄存器SCONSM2:串行口方式串行口方式2及及3的多机控制位,功能如下:的多机控制位,功能如下:方式方式0:不用此位,通常使:不用此位,通常使SM2=0方式方式1:SM2=0时,只要收到停止位(任何值)就使时,只要收到停止位(任何值)就使RI置置1SM2=1时,只有收到有效停止位(时,只有收到有效停止位(1)才使)才使RI置置1方式方式2、3:SM2=0时,无论收到时,无论收到RB8为

197、为0或或1,硬件均会使,硬件均会使RI置置1SM2=1时,只有接收到时,只有接收到RB8=1时,硬件才会使时,硬件才会使RI置置1233串行口的结构与工作原理串行口的结构与工作原理串行口状态寄存器串行口状态寄存器SCON即:在方式即:在方式2和和3中,若中,若SM2=1且接收到第九位数且接收到第九位数(RB8)为为0时,则不能置位中断时,则不能置位中断标志标志RI,接接收到的数据失败。收到的数据失败。SM2=0,任何时候接收的,任何时候接收的数据都有效。数据都有效。在方式在方式1时,若时,若SM2=1,则只有接收到有效则只有接收到有效停止位(停止位(1)才能置中断标志)才能置中断标志RI,SM

198、2=0时无任何要求。时无任何要求。在方式在方式0中中SM2=0。234REN:串行口接收控制位。由软件置位或清串行口接收控制位。由软件置位或清0,REN=1,允许接收;允许接收;REN=0禁止接收。禁止接收。串行口的结构与工作原理串行口的结构与工作原理串行口状态寄存器串行口状态寄存器SCONTB8:在方式在方式2、3中,它是传送的第中,它是传送的第9位数,由软位数,由软件置位或清件置位或清0,它可以作为通信数据的奇偶,它可以作为通信数据的奇偶校验,在多机通讯中,这一位常用于表示校验,在多机通讯中,这一位常用于表示串行口传送的信息是地址帧还是数据帧。串行口传送的信息是地址帧还是数据帧。235串行

199、口的结构与工作原理串行口的结构与工作原理串行口状态寄存器串行口状态寄存器SCONRB8:接收到的方式接收到的方式2、3中的第中的第9位数,用作奇偶位数,用作奇偶校验或地址校验或地址/数据标志。数据标志。在方式在方式0不使用不使用RB8。在方式在方式1中:若中:若SM2=0,则则RB8收到任何收到任何停止位都使停止位都使RI置置1,若若SM2=1,则则RB8只有在接收只有在接收到到 有有 效效 的的 停停 止止 位位“1”时才会使时才会使RI置置1,否则否则RI不置位。不置位。236串行口的结构与工作原理串行口的结构与工作原理串行口状态寄存器串行口状态寄存器SCONSM2=0时,无论收到时,无论

200、收到RB8为为0或或1,硬件均会使,硬件均会使RI置置1SM2=1时,只有接收到时,只有接收到RB8=1时,硬件才会使时,硬件才会使RI置置1TI:发送中断标志。发送中断标志。在方式在方式0:发送第:发送第8位结束时由硬件置位,位结束时由硬件置位,在方式在方式1、2、3中:在停止位开始发送时中:在停止位开始发送时由硬件置位。由硬件置位。TI=1时表示发送完毕向时表示发送完毕向CPU申请中断,申请中断,CPU响应中断后就可以接着发送下一帧数据,在响应中断后就可以接着发送下一帧数据,在任何方式中,任何方式中,TI均需软件清均需软件清0。237RI:接收中断标志。接收中断标志。方式方式0中:接收第中

201、:接收第8位结束时由硬件置位。位结束时由硬件置位。方式方式1、2、3中,接收到停止位时由硬件置位。中,接收到停止位时由硬件置位。RI=1时表示接收完毕向时表示接收完毕向CPU申请中断,申请中断,CPU响响应中断后从应中断后从SBUF中取出数据,但在方式中取出数据,但在方式1中中SM2=1时,若未接收到有效的停止位(时,若未接收到有效的停止位(1),),则不会对则不会对RI置位。任何方式均需置位。任何方式均需软件对软件对RI清清0。串行口的结构与工作原理串行口的结构与工作原理串行口状态寄存器串行口状态寄存器SCON238(1)当)当TI=0时,表示目前串行口处于发送状态,时,表示目前串行口处于发

202、送状态,任一条以任一条以SBUF为为DST的操作指令均可启的操作指令均可启动发送过程的开始。动发送过程的开始。串行口的结构与工作原理串行口的结构与工作原理串行口的结构与工作原理串行口的结构与工作原理(2)当)当TI=1时,表示目前串行口一帧数据已发时,表示目前串行口一帧数据已发送完毕,向送完毕,向CPU申请中断,申请中断,CPU响应中断响应中断时再清除时再清除TI标志使标志使TI=0后,串行口又可以后,串行口又可以发送下一幀数据,但仍然用以发送下一幀数据,但仍然用以SBUF为为DST的指令启动。的指令启动。注意注意:239当当RI=0,REN=1是,表示目前串行口处于接受状是,表示目前串行口处

203、于接受状态,可以接收串行口进入的任何信息到态,可以接收串行口进入的任何信息到SBUF中。中。串行口的结构与工作原理串行口的结构与工作原理串行口的结构与工作原理串行口的结构与工作原理当当RI=1,REN=1时,表示目前串行口处于接受状时,表示目前串行口处于接受状态,且已接收完一帧态,且已接收完一帧数据数据,正向正向CPU申请中断,申请中断,CPU响应中断时清除响应中断时清除RI标志,使串行口又可以标志,使串行口又可以接受下一帧数据到接受下一帧数据到SBUF中。中。240串行口的结构与工作原理串行口的结构与工作原理串行口的结构与工作原理串行口的结构与工作原理TI,RI均需上软件清均需上软件清0。上

204、述过程中,串行口数据发送必须在上述过程中,串行口数据发送必须在TI=0时由相时由相应指令启动,串行口的数据的接收在应指令启动,串行口的数据的接收在RI=0时可随时可随时接受,不用启动。时接受,不用启动。241工作方式与波特率的设置工作方式与波特率的设置串行口的工作方式串行口的工作方式方式方式0采用采用SR输入输出方式,可外接输入输出方式,可外接SR扩展扩展I/O口,也可以外接其它同步口,也可以外接其它同步I/O口设备。口设备。1方式方式0同步移位同步移位R的传输方式的传输方式方式方式0的特点:的特点:发送发送/接收数据,一帧格式为接收数据,一帧格式为8位二进制数。传输位二进制数。传输数据时,低

205、位在先,高位在后。数据时,低位在先,高位在后。传送的数据信息,无论是输入还是输出,均由引传送的数据信息,无论是输入还是输出,均由引脚脚P3.0(RXD)端接收或发送,而移位同步正端接收或发送,而移位同步正脉冲由脉冲由P3.1(TXD)输出。输出。242发送发送/接收数据的波特率是固定的,为接收数据的波特率是固定的,为fosc/12即为振即为振荡器频率的荡器频率的1/12,与,与PCON无关,不必设置无关,不必设置PCON。工作方式与波特率的设置工作方式与波特率的设置串行口的工作方式串行口的工作方式发送状态可设为:发送状态可设为:MOVSCON,#00H;即选择即选择0方式,方式,sm2=0,禁

206、止接收,与禁止接收,与RB8无无关,目前处于非中断状态。如果工作状态由复位开关,目前处于非中断状态。如果工作状态由复位开始,(始,(SCON=00H)可不必用软件设置可不必用软件设置SCON。方式方式0控制字的设置:控制字的设置:243工作方式与波特率的设置工作方式与波特率的设置串行口的工作方式串行口的工作方式即方式即方式0,允许接收(但未启动接收),已发,允许接收(但未启动接收),已发出中断。如此时希望启动接收,则可用软件指令清出中断。如此时希望启动接收,则可用软件指令清除除RI,使使RI=0,则则CPU就立即启动可接收数据;就立即启动可接收数据;接收状态可以设置成两种情况,如下:接收状态可

207、以设置成两种情况,如下:MOVSCON,#11H;MOVSCON,10H;串行口处于接收非中断状态,把串行口处于接收非中断状态,把10H写入写入SCON立即启动接收。立即启动接收。244工作方式与波特率的设置工作方式与波特率的设置串行口的工作方式串行口的工作方式方式方式0的发送:的发送:看看图图,利用串行口作显示器,图中,利用串行口作显示器,图中串行口为输出口,它实质上是通过串行口为输出口,它实质上是通过74SL164芯片(串芯片(串行输入并行输出行输入并行输出SR)把串行口数据转换为并行输出。把串行口数据转换为并行输出。8051单片机串行口工作在方式单片机串行口工作在方式0发送状态,利用发送

208、状态,利用P1.0作为输出选通信号(作为输出选通信号(P1.0=1时,串行口同步脉冲信号时,串行口同步脉冲信号才能输出)。假设显示缓冲区设在才能输出)。假设显示缓冲区设在40H,41H,42H(即要显示的三个字节的数放在即要显示的三个字节的数放在40H42H单元中)。单元中)。程序由复位状态开始运行。程序由复位状态开始运行。方式方式0的应用举例的应用举例2451CLKCLR274LS164LED(42H)1CLKCLR274LS164LED(41H)1CLKCLR274LS164LED(40H)&+5V+5VP1.0P3.1P3.08051其中:其中:CLR是是74LS164的选通端,的选通端

209、,CLK是是74LS164的的时钟端时钟端,时钟时钟CLK端上每个端上每个上上升沿都会使该芯升沿都会使该芯片的片的8位数据输出右移一位位数据输出右移一位。246SETBP1.0;(;(P1.0)=1,选通串行口选通串行口MOVR7,#03H;显示内容的字节数显示内容的字节数R7MOVR0,#40H;R0指向显示缓冲区指向显示缓冲区TL1:MOVA,R0;取出要显示的数取出要显示的数AADDA,#0EH;此处相对表头此处相对表头TABLE的的偏移量为偏移量为0EHMOVCA,A+PC;查字型表查字型表MOVSBUF,A;送给串行口送给串行口buf,然后发然后发送显示送显示开始运行(开始运行(SC

210、ON=00H),),发送程序如下:发送程序如下:247TL2:JNBTI,TL2;查发送中断标志查发送中断标志TI,判定一帧传送完否?判定一帧传送完否?CLRTI;清发送中断标志清发送中断标志INCR0;调节缓冲器指针调节缓冲器指针DJNZR7,TL1;要显示的内容显示完否?要显示的内容显示完否?否,转至否,转至TL1处处CLRP1.0;显示内容显示完毕,关显示显示内容显示完毕,关显示器选通,不再移位器选通,不再移位RET;最终三个显示器分别显示最终三个显示器分别显示42H40H单元的内容单元的内容TABLE:C0H,F9H,A4H,B0H,99H,92H82H,F8H,80H,90H,98H

211、2489Q2CP74LS165S/L8051P3.0P3.1P1.0RXDTXD9Q2CP74LS165S/L方式方式0接收:如下图:编程从接收:如下图:编程从16位扩展输入口(由并入串出位扩展输入口(由并入串出移位寄存器移位寄存器74LS165组成)读入组成)读入40个字节数据并把它存入片个字节数据并把它存入片内内40H开始的单元中。开始的单元中。(S/L为为74LS165的接收和移位控制端)的接收和移位控制端) MOVR7,#20;设置读入字节数设置读入字节数MOVR0,#40H;设置内部设置内部RAM地址指针地址指针SETBF0;设置读入字节奇偶数标志设置读入字节奇偶数标志RCV0:CL

212、RP1.0;并行置入并行置入16位数据位数据SETBP1.0;允许串行移位允许串行移位249RCV1:MOVSCON,#10H;设置串口方式设置串口方式0启动接收过程启动接收过程JNBRI,$;等待接收一帧数据结束等待接收一帧数据结束CLRRI;接收结束,清接收结束,清RI中断标志位中断标志位MOVA,SBUF;读取缓冲器接收的数据读取缓冲器接收的数据MOVR0,A;存入片内存入片内RAM中中INCR0CPLF0JBF0,RCV2;接收完偶数帧则重新并行置入数据接收完偶数帧则重新并行置入数据SJMPRCV1;否则再接收一帧否则再接收一帧RCV2:DJNZR7,RCV0;预定字节数没有接收完继续

213、预定字节数没有接收完继续;对读入数据进行处理;对读入数据进行处理2502方式方式18位通用异步接收或发送方式位通用异步接收或发送方式。工作方式与波特率的设置工作方式与波特率的设置串行口的工作方式串行口的工作方式波特率波特率=2SMOD/32(定时器定时器T1溢出率)溢出率)发送与接收的波特率均可变,当定时器发送与接收的波特率均可变,当定时器1作为波作为波特率发生器,串行口方式特率发生器,串行口方式1波特率为:波特率为:RXD(P3.0)为接收端,为接收端,TXD(P3.1)为发送端。为发送端。串行口方式串行口方式1为为8位通用异步接收或发送方式,每位通用异步接收或发送方式,每帧帧为为10位位二

214、进制数:二进制数:0D0D1D2D3D4D5D6D71,其其中中一一位位启启始始位位“0”在在先先,接接着着是是8位位data传传送送,低低位在先,高位在后,最后一位是有效停止位位在先,高位在后,最后一位是有效停止位“1”。251SMOD为寄存器为寄存器PCON的最高位,的最高位,SMOD=1时,串时,串行口方式行口方式1的波特率是的波特率是SMOD=0时的时的2倍。倍。工作方式与波特率的设置工作方式与波特率的设置串行口的工作方式串行口的工作方式定时器定时器1的溢出率是定时器的溢出率是定时器1每秒钟溢出的次数每秒钟溢出的次数,它取决于它取决于T1计数的速度和预置值,定时器计数的速度和预置值,定

215、时器1(T1)可以工作在可以工作在0,1,2三种工作方式的任一种,其中三种工作方式的任一种,其中最最典型的是方式典型的是方式2,自动重新装入值存放在,自动重新装入值存放在TH1中,中,计数速度就是计数速度就是T1输入的计数脉冲的频率输入的计数脉冲的频率f计数计数。所以。所以这种方式的溢出率及波特率分别为:这种方式的溢出率及波特率分别为:252当当C/T=0时,计数速度时,计数速度=fosc/12,所以串行口方式所以串行口方式1的的波特率为:波特率为:串行口方式串行口方式1的的发送发送控制字为:控制字为:MOVSCON,#40H;方式方式1,禁止中断,处于非,禁止中断,处于非中断状态。中断状态。

216、串行口方式串行口方式1的的接收接收控制字为控制字为:(有两种):(有两种)MOVSCON,#50H;接收到的第一帧数据一定有效,接收到的第一帧数据一定有效,以后只要以后只要RI=0,就可以接收。就可以接收。工作方式与波特率的设置工作方式与波特率的设置串行口的工作方式串行口的工作方式253MOVSCON,#70H;除满足除满足RI=0外,接收到的第一帧数外,接收到的第一帧数据还必须保持停止位为据还必须保持停止位为“1”才有才有效效工作方式与波特率的设置工作方式与波特率的设置串行口的工作方式串行口的工作方式RI=0(即即SBUF中上一帧数据已取走);中上一帧数据已取走);SM2=0或接收到的停止位

217、为或接收到的停止位为“1”。上述接收设置的控制字就可同时满足上述接收设置的控制字就可同时满足2种条件。种条件。在在MCS-51串行口方式中接到一帧信号,判断它是否有效串行口方式中接到一帧信号,判断它是否有效要同时满足两个条件:要同时满足两个条件:注:在接收的同时不排斥发送,可同时进行接收与发送。注:在接收的同时不排斥发送,可同时进行接收与发送。254奇偶校验:奇偶校验:串行口的工作方式串行口的工作方式结论结论:无论:无论A中内容如何,接收方收到的数据其奇偶性一定中内容如何,接收方收到的数据其奇偶性一定呈奇性,由此可作为接收信息的奇偶校验。呈奇性,由此可作为接收信息的奇偶校验。当开始时当开始时P

218、=0,P=1,将取反后的,将取反后的P中值送入中值送入ACC.7后,后,A中中1的个数变为奇数。的个数变为奇数。设开始时设开始时P=1,则则P=0,将取反后的将取反后的P值送入值送入ACC.7后,后,A中含中含1的个数仍为奇数;的个数仍为奇数;例例1:MOVA,#ASCII;ASCII码送入码送入A中,当中,当A中有偶中有偶数个数个1,则则PSW中中P=0,否则否则P=1。MOVC,PCPLCMOVACC.7,C2553串行口方式串行口方式2、方式方式3:9位位UART(通用异步接通用异步接收和发送)收和发送)工作方式与波特率的设置工作方式与波特率的设置串行口的工作方式串行口的工作方式RXD(

219、P3.0)为接收端,为接收端,TXD(P3.1)为发送端。为发送端。串行口方式串行口方式2、3均为均为9位通用异步接收和发送。位通用异步接收和发送。每帧共每帧共11位:一位位:一位起始位起始位0,一位可编程位和一位,一位可编程位和一位停止位停止位1,8数据位(低位在先):数据位(低位在先):D0D1D2D3D4D5D6D7第第9位(可编程位)数据发送的是位(可编程位)数据发送的是TB8中内容,据求可使中内容,据求可使TB8置位置位/复位,接收端将复位,接收端将TB8的内容接收存入的内容接收存入RB8中。中。256方式方式2与与3只有一点不同,只有一点不同,方式方式2的波特率相对固定的波特率相对

220、固定,方方式式3的波特率则不定的波特率则不定。外部计数(外部计数(C/T=1):):内部定时(内部定时(C/T=0):):方式方式3:波特率计算与方式波特率计算与方式1完全相同。完全相同。方式方式2:波特率波特率=(2SMOD/64)fosc=fosc/64:SMOD=0波特率波特率=(2SMOD/64)fosc=fosc/32:SMOD=1工作方式与波特率的设置工作方式与波特率的设置串行口的工作方式串行口的工作方式257传送传送方式控制字:方式控制字:串行口的工作方式串行口的工作方式接收接收方式控制字:方式控制字:方式方式2:MOVSCON,#90H;可接收或发送,接收时可接收或发送,接收时

221、RB8的值来自的值来自TB8位;位;方式方式3:MOVSCON,#0D0H;可接收或发送,接收时可接收或发送,接收时RB8的值来自的值来自TB8位。位。奇偶校验:如下奇偶校验:如下。方式方式3:MOVSCON,#0C0H;禁止接受,发送的第;禁止接受,发送的第9位数位数据在据在TB8中(目前为零,据需要也可改为中(目前为零,据需要也可改为1););方式方式2:MOVSCON,#80H;禁止接受,发送的第禁止接受,发送的第9位数据在位数据在TB8中(目前为零,据需要也可改为中(目前为零,据需要也可改为1););258注意:当注意:当A中的内容中的内容“1”的个数为的个数为奇数奇数时,时,P=1,

222、P取反后为取反后为0,TB8=0,则发送的则发送的9位数(位数(A中中8位,加上位,加上TB8一位共一位共9位)其中位)其中“1”的个数为奇数;的个数为奇数;例例2:MOVA,(,(data1);A(data1),只改变只改变PSW中的中的P位。位。MOVC,PCPLCMOVTB8,CMOVSBUF,A当当A中的内容中的内容“1”的个数为的个数为偶数偶数时,时,P=0,P取反后为取反后为1,TB8=1,则发送的则发送的9位数(位数(A中中8位,加上位,加上TB81位等于位等于9位)其中位)其中“1”的个数仍为奇数。的个数仍为奇数。259例例3:把内部:把内部RAM40H5FH单元中单元中ASC

223、II码码数据,在最高位数据,在最高位加上奇偶校验位后,由甲机发送到乙机。串行口采用加上奇偶校验位后,由甲机发送到乙机。串行口采用方式方式1,波特率为,波特率为1.2kb/s,振荡器频率振荡器频率fosc=11.059MHz。所以所以TH1=0E8H。工作方式与波特率的设置工作方式与波特率的设置串行口的工作方式串行口的工作方式解:甲机串口方式解:甲机串口方式1发送状态,所以设为发送状态,所以设为SCON40H,乙机乙机方式方式1状态,状态,SCON设为设为50H。甲、乙机波特率应为一甲、乙机波特率应为一致:致:1.2kb,设设T1采用方式采用方式2,260MOVTMOD,#20H;此处开始此处开

224、始设置传送方甲机软件设置传送方甲机软件,首先设定首先设定T1工作在方式工作在方式2,定时,定时MOVTL1,#0E8H;据波特率据波特率1.2kB设置设置T1的时间常数的时间常数为为0E8HMOVTH1,#0E8HSETBTR1;启动启动T1MOVSCON,#40H;设置甲机串行口工作方式设置甲机串行口工作方式(方式(方式1,发送状态),发送状态)MOVR0,#40H;R0指向发送指向发送buf首址首址MOVR1,#20H;R1为字节计数器,甲机要向乙机为字节计数器,甲机要向乙机发送发送20个字节个字节261LOOP:MOVA,R0;R0指向的内容指向的内容A中,此指中,此指令只影响令只影响P

225、SW中的中的PCALLSPOUT;调用发送子程序调用发送子程序INCR0;调用发送受冲区指令调用发送受冲区指令DJNZR1,LOOP;传送字节数判断,未传送完则传送字节数判断,未传送完则继续传送继续传送SPOUT:MOVC,P;所有所有ASCII码最高位均为码最高位均为0,所以奇偶判断位放在最高位所以奇偶判断位放在最高位CPLCMOVACC.7,C262MOVSBUF,A;启动发送,发送启动发送,发送A中内容中内容$:JNBTI,$;等待一帧发送结束,产生中断等待一帧发送结束,产生中断CLRTI;清清TI允许再发送允许再发送RET MOVTMOD,#20H;自此下开始为接收方乙机软件自此下开始

226、为接收方乙机软件MOVTL1,#0E8HMOVTH1,#0E8HSETBTR1MOVR0,#40H;设置接收缓冲区设置接收缓冲区MOVR1,#20H;R1为接收字节计数器(应为为接收字节计数器(应为32个)个)LOOP1:CALLSP-IN;调用接收子程序调用接收子程序263JNCERROR;若若C1则传送出错,转则传送出错,转ERRORMOVR0,AINCR0DJNZR1,LOOP1;未接收到未接收到32个字符则转个字符则转LOOP1SP-IN:MOVSCON,#50H;设置乙机为接收方式设置乙机为接收方式1$: JNBRI,$;等待一帧接收完毕发出中断等待一帧接收完毕发出中断CLRRIMO

227、VA,SBUF;读入接收数据读入接收数据AMOVC,P;C(P)ANLA,#7FH;去掉最高位奇偶值,将原去掉最高位奇偶值,将原ASCII码值复原码值复原RETERROR:;出错子程序出错子程序264主主机机从从机机(1)从从机机(2)从从机机(3)从从机机(4)从从机机(5)从从机机(6)工作方式与波特率的设置工作方式与波特率的设置多机通讯多机通讯265工作方式与波特率的设置工作方式与波特率的设置多机通讯多机通讯多机通信时主要有两种方式:半双工通信和全双工通信,多机通信时主要有两种方式:半双工通信和全双工通信,主、从之间可双向通信,但从机之间只能通过主机通信,主、从之间可双向通信,但从机之间

228、只能通过主机通信,不能直接通信。不能直接通信。在主机传送给从机的信息中,若在主机传送给从机的信息中,若TB8=1表示传送是地址帧,表示传送是地址帧,当当TB8=0时,表示传送的是数据帧。时,表示传送的是数据帧。多机通信时主、多机通信时主、从机串行口均工作在方式从机串行口均工作在方式2或方式或方式3,SM2作作为多机通信的控制位。为多机通信的控制位。(控制控制R,SOCN中的中的SM2设置为设置为1)。)。266在接收到地址帧后,所有从机都进入各自的中断服务程序,在接收到地址帧后,所有从机都进入各自的中断服务程序,每个从机在自己的中断服务子程序中进行识别:主机发出每个从机在自己的中断服务子程序中

229、进行识别:主机发出的地址号是否与本从机地址号相同?相同的从机将的地址号是否与本从机地址号相同?相同的从机将SCON中中SM2置为置为0,不同的从机,不同的从机SM2=1保持不变。保持不变。工作方式与波特率的设置工作方式与波特率的设置多机通讯多机通讯当主机发出数据帧(当主机发出数据帧(TB8=0)时:对于时:对于SM2=0的从机,由的从机,由于基地址号与主机发出的地址号相同所以不管接收到第九于基地址号与主机发出的地址号相同所以不管接收到第九位位RB8为何值,都能激活为何值,都能激活RI,使接到的数据有效,完成主使接到的数据有效,完成主机与从机之间一对一的通信。机与从机之间一对一的通信。267单片

230、机的最小系统:由单片机的最小系统:由MCS-51单片机加上片外电单片机加上片外电源,复位电路及振荡晶体组成的系统成为最小系统,单源,复位电路及振荡晶体组成的系统成为最小系统,单片机的扩展可分为:地址总线扩展、程序存储器扩展、片机的扩展可分为:地址总线扩展、程序存储器扩展、数据存储器扩展及数据存储器扩展及I/O口扩展。口扩展。 第七章第七章 单片机系统扩展单片机系统扩展第一节第一节总线扩展总线扩展第二节第二节 程序存储器的扩展程序存储器的扩展第三节第三节数据存储器的扩展数据存储器的扩展第四节第四节I/O口的扩展口的扩展268微机的微机的CPU大都是单独的大都是单独的CB、AB和和DB,而而MCS

231、-51受管受管脚的限制,脚的限制,AB与与DB是复用的,且都用是复用的,且都用I/O口线兼用,为了将口线兼用,为了将AB分离出来,通常采用地址锁存器进行总线扩展。常用的分离出来,通常采用地址锁存器进行总线扩展。常用的芯片有:芯片有:74LS273、74LS373、74LS377和和8282等,在硬件上等,在硬件上均可由均可由ALE信号控制。即在信号控制。即在ALE信号由信号由高变低高变低时将出现在时将出现在P0口的地址信号锁存到外部地址锁存器中,直到下一次口的地址信号锁存到外部地址锁存器中,直到下一次ALE变高时,地址才发生变化。变高时,地址才发生变化。第一节第一节 总线扩展总线扩展269P2

232、ALEP0805187518031PSENWRRD地址地址锁存器锁存器地址地址总线总线数据总线数据总线控制总线控制总线总总 线线 扩扩 展展270由于程序存储器扩展的芯片一般都使用由于程序存储器扩展的芯片一般都使用EPROM,最常用的芯片有最常用的芯片有27打头打头的芯片,的芯片,如如2716(2KB)、2732(4KB)、)、27648KB)、)、27128(16KB)、)、27256(32KB)、)、27512(64KB),),产品价格相差不大,宜选用大产品价格相差不大,宜选用大容量芯片。程序存储器扩展时使用的引线容量芯片。程序存储器扩展时使用的引线有:地址线、数据线和控制线,其中:有:地

233、址线、数据线和控制线,其中: 第二节第二节 程序存储器的扩展程序存储器的扩展271数据线数据线:P0口口。地址线地址线:高:高8位用位用P2口,低口,低8位用位用P0口,通过锁存器口,通过锁存器与扩展芯片的低与扩展芯片的低8位相接,所以最大可扩展位相接,所以最大可扩展的存储容量为:的存储容量为:216=64KB的的EPROM。程序存储器的扩展程序存储器的扩展需要使用的控制线有:需要使用的控制线有:ALE:为为P0口地址锁存器锁存信号,与锁存器口地址锁存器锁存信号,与锁存器的控制信号相连,的控制信号相连,ALE利用其下降沿对利用其下降沿对地址信号进行锁存。地址信号进行锁存。272PSEN:为片外

234、为片外EPROM选通信号,软件上用选通信号,软件上用MOVC指令实现,硬件上与扩展芯指令实现,硬件上与扩展芯片的数据输出选通线片的数据输出选通线OE相连,与读相连,与读信号功能相同。信号功能相同。EA:为片内为片内00000FFFH(EA=1)或片外或片外10000FFFFH(EA=0)EPROM选选择信号,选择择信号,选择扩展芯片时必须有扩展芯片时必须有EA=0。程序存储器的扩展程序存储器的扩展273P2.0P2.7ALE8031EAP0PSEN锁锁存存器器A8AnA0A7EPROMD0D7CEOE程序存储器的扩展程序存储器的扩展 扩展一片扩展一片EPROMEPROM 274此系统中只用一片

235、此系统中只用一片EPROM,不需要片选信号,所以将不需要片选信号,所以将CE接地,需用多少根地址线由所选用的接地,需用多少根地址线由所选用的EPROM的容量决定。的容量决定。其中:其中:程序存储器的扩展程序存储器的扩展 扩展一片扩展一片EPROMEPROM M=2X设某容量的设某容量的EPROM芯片有芯片有M个个存储单元,即有存储单元,即有M个字节个字节的存储容量的存储容量,需要的地址线的数目为需要的地址线的数目为X,则则M与与X的关系为:的关系为:1根根地址线可给出地址线可给出21个个存储单元,存储单元,2根根地址线可给出地址线可给出22个个存储单元,存储单元,3根根地址线可给出地址线可给出

236、23个个存储单元,存储单元,275锁锁存存器器A0A7A8AnEPROM(2)CED0D7OEP2.5P2.0P2.7ALE8031EAP0PSENA0A7A8AnCEEPROM(1)D0D7OE程序存储器的扩展程序存储器的扩展 扩展两片扩展两片EPROMEPROM276程序存储器的扩展程序存储器的扩展扩展两片扩展两片EPROMEPROM每片每片EPROM需用多少根地址线,由所选用的需用多少根地址线,由所选用的EPROM的容量决定。的容量决定。当当P2.5=0时:选中时:选中EPROM(1)当当P2.5=1时:选中时:选中EPROM(2)此系统中用了两片此系统中用了两片EPROM,需要由片选信

237、号需要由片选信号决定同一时刻到底选用哪一片决定同一时刻到底选用哪一片EPROM,所以将所以将CE接到接到P2.5上,上,277A7A6A5A4A3A2A1A0OECE27128Q7Q6Q5Q4Q3Q2Q1Q0P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.78051PSENALEA13A12A11A10A9A8D0D1D2D3D4D5D6D7Q0Q1Q2A3Q4Q5Q6Q774LS373OEGEPROM的扩展举例的扩展举例1 1右图中:右图中:27128的容的容量为量为16KB27128的地的地址范围为:址范围为:0

238、0003FFFH或或C000FFFFH278A7A6A5A4A3A2A1A0OECE27128Q7Q6Q5Q4Q3Q2Q1Q0P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.78051PSENALEA13A12A11A10A9A8D0D1D2D3D4D5D6D7Q0Q1Q2A3Q4Q5Q6Q774LS373OEGEPROM的扩展举例的扩展举例1 1右图中:右图中:27128的容的容量为量为16KB27128的地的地址范围为:址范围为:00003FFFH或或C000FFFFH279P2.0P2.1P2.2P2.3P2.

239、4P2.5P2.6P2.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.78051PSENALEA8A9A10A11A12A7A6A5A4A3A2A1A0Q0Q1Q2Q3Q4Q5Q6Q7OECE2764(A)D0D1D2D3D4D5D6D7Q0Q1Q2A3Q4Q5Q6Q774LS373OEGA8A9A10A11A12A7A6A5A4A3A2A1A0Q0Q1Q2Q3Q4Q5Q6Q7OECE2764(B)EPROM的扩展举例的扩展举例2 2右图中,设右图中,设P2.6=P2.7=0,则有:则有:2764的容量的容量为为8KB2764(A)的地址范围为:的地址范围为:00001FFF

240、H2764(B)的地址范围为:的地址范围为:20003FFFH280P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.78051PSENALEA8A9A10A11A12A7A6A5A4A3A2A1A0Q0Q1Q2Q3Q4Q5Q6Q7OECE2764(A)D0D1D2D3D4D5D6D7Q0Q1Q2A3Q4Q5Q6Q774LS373OEGA8A9A10A11A12A7A6A5A4A3A2A1A0Q0Q1Q2Q3Q4Q5Q6Q7OECE2764(B)EPROM的扩展举例的扩展举例2 2右图中,设右图中,设P2.6=P2.7

241、=0,则有:则有:2764的容量的容量为为8KB2764(A)的地址范围为:的地址范围为:00001FFFH2764(B)的地址范围为:的地址范围为:20003FFFH281EPROM的扩展举例的扩展举例3 3下图下图采用两片采用两片27256(32K8位位)EPROM组成组成64KB的存储系统的存储系统.地址译码非常简单地址译码非常简单,通过通过P2.7的的输出来实现片选输出来实现片选,当当P2.7=0时时,ROM1被选中被选中,其地址其地址为为0000H7FFFH;当当P2.7=1时时,经反相后将选中经反相后将选中ROM2,其地址为其地址为8000HFFFFH.EPROM的扩展举例的扩展举

242、例4如图如图:282283右图采用右图采用更大容量更大容量的的27512(64K8位位)EPROM芯芯片片,连接电连接电路更为简路更为简单单,片选端片选端只要接地只要接地,使它总处使它总处于选中状于选中状态即可态即可,地地址空间为址空间为:0000HFFFFH.284常使用的芯片以常使用的芯片以6打头,如打头,如6116、6264等,所用等,所用的引线基本与程序存储器扩展相同,只是控制线中有的引线基本与程序存储器扩展相同,只是控制线中有RD和和WR作为片外作为片外RAM的读写信号。的读写信号。第三节第三节 数据存储器的扩展数据存储器的扩展一、一、线选法扩展线选法扩展RAM二、二、译码法扩展译码

243、法扩展RAM285线选法扩展RAM举例1线选法:就是把单根的地址线接到芯片的片选信线选法:就是把单根的地址线接到芯片的片选信号上,用地址线来选择需要的芯片。号上,用地址线来选择需要的芯片。其中:其中:6116(1#)地址为)地址为0F000H0F7FFH6116(2#)地址为)地址为0E800H0EFFFHP2.4P2.3P2.2P2.1P2.0P0.0P0.7ALERDWR8051A10A9A8A0A7D0D7QEWECS6116(1#)8282A0A7A10A9A8A0A7D0D7QEWECS6116(2#)286译码法扩展译码法扩展RAM译码法:就是采用译码电路来选择所需要的芯片。常用译

244、码法:就是采用译码电路来选择所需要的芯片。常用的译码器有的译码器有38译码器译码器74LS138和和24译码器译码器74LS139,它们的引脚和功能如下:它们的引脚和功能如下:输输入入输输出出使能使能选择选择Y0Y1Y2Y3GBA10000XX000110111011111011111011111024译码器译码器74LS139真值表真值表74LS139123456681615141312111091G1A1B1Y01Y11Y21Y3GNDYCC2G2A2B2Y02Y12Y22Y3287输入输入输出输出使能使能选择选择Y0Y1Y2Y3Y4Y5Y6Y7E3E2E1CBA1001001001001

245、0010010010000000101001110010111011101111111101111111101111111101111111101111111101111111101111111100XXX1XXX1XXXXXXXXX11111111111111111111111174LS13812345668161514131211109ABCE1E2E3Y7GNDYCCY0Y1Y2Y3Y4Y5Y638译码器译码器74LS138真值表真值表288P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0ALE8051PSENWRRDP0A0A12A11A10A9A8A7D7D0OECE

246、IC02764A0A12A11A10A9A8A7D7D0OECEIC12764A0A12A11A10A9A8A7D7D0WEOECEIC26264A0A12A11A10A9A8A7D7D0WEOECEIC3626474LS373Q7Q0D7D074LS139GBAY2Y1Y0译码法扩展译码法扩展存储器综合举例存储器综合举例IC0:IC1:IC2:IC3:0000H1FFFH2000H3FFFH0000H1FFFH4000H5FFFH289用一片用一片27256EPROM为为8031提供提供32KB的外的外部程序存部程序存储器储器,用一用一片片62256静静态态RAM为为8031提供提供32KB

247、的外的外部数据存部数据存储器储器,如图如图所示所示.290由于外部程序存储器由于外部程序存储器27256只是用只是用14根地址线根地址线,而而P2.7对对27256没有参与控制没有参与控制,所以会出现一个存储单元所以会出现一个存储单元有有2个地址个地址,即地址重叠即地址重叠.27256EPROM地址空间为:地址空间为:当当P2.7=0时时,基本地址为:基本地址为:0000H7FFFH;当当P2.7=1时时,重复的地址为重复的地址为8000HFFFFH.数据存储器数据存储器62256的片选端接的片选端接8031的的P2.7,所以它所以它的地址空间为的地址空间为0000H7FFFH,且唯一确定且唯

248、一确定.291(2)CPU用用MOVX指令访问指令访问I/O口。口。(3)硬件上硬件上I/O口写入受口写入受WR控制,控制,I/O口读出受口读出受RD控制。控制。单片机的扩展系统中,需要使用大量的单片机的扩展系统中,需要使用大量的I/O口线,但用户真口线,但用户真正能使用于外设的正能使用于外设的I/O口线并不多,也只有口线并不多,也只有P1口的口的8根根I/O线,所线,所以常要对以常要对I/O口进行扩展,扩展的主要芯片有口进行扩展,扩展的主要芯片有8155,8255等,等,I/O接口扩展的特点有:接口扩展的特点有:(1)外部外部RAM与接口与接口统一编址统一编址,即每一个端口号相当于外,即每一

249、个端口号相当于外部部RAM的一个存储单元。的一个存储单元。第四节第四节 I/OI/O口的扩口的扩展展292一、一、8155的结构及引脚的结构及引脚二、二、8155内部内部RAM的使用的使用三、三、8155内部寄存器介绍内部寄存器介绍四、四、实用的实用的I/O扩展线举例扩展线举例I/O I/O 口口 的的 扩扩 展展2938155扩展器是集扩展器是集存储器、存储器、I/O口及口及CTC于一身的多功于一身的多功能芯片,特别适用能芯片,特别适用于单片机应用系统,于单片机应用系统,是一种最常用的外是一种最常用的外围扩展器。围扩展器。8155为为40引脚双列直插式引脚双列直插式封装,如右图。封装,如右图

250、。8155的结构及引脚的结构及引脚815512345678910111213141516171819204039383736353433323130292827262524232221VCCPC2PC1PC0PB7PB6PB5PB4PB3PB2PB1PB0PA7PA6PA5PA4PA3PA2PA1PA0PC3PC4TIMERINRESETPC5TIMEROUTIO/MCERDWRALEAD0AD1AD2AD3AD4AD3AD1AD0VCCABC256B静态静态RAM14位位定时计定时计数器数器命令命令/状态状态寄存器寄存器294(2)RESET:8155内部复位输入端,复位时内部复位输入端,复

251、位时3个个I/O口均处于口均处于输入方式,输入方式,CTC停止工作。停止工作。(4)AD0AD7:三态地址三态地址/数据线。当数据线。当AD0AD7上为地址上为地址(1)PA、PB、PC共共22位位I/O口,可通过命令口,可通过命令R选择它们的工选择它们的工作方式(作方式(INOROUT)8155的结构及引脚的结构及引脚(3)IO/M:8155内部内部RAM与与I/O口选择线,当口选择线,当IO/M=0时选择时选择8155内部内部RAM,此时此时AD0AD7上的地址为上的地址为8155内部内部RAM地址,当地址,当IO/M=1时选择时选择8155I/O口或命令状态口或命令状态R,此时此时AD0

252、AD7上的地址为上的地址为I/O口地址或命令口地址或命令R地址。地址。295(8)TIMERIN和和TUMEROUT:CTC的输入端和输出端。的输入端和输出端。(5)CE:片选信号。低电平有效,片选信号。低电平有效,ALE下降沿将其锁存到下降沿将其锁存到8155内部内部R。(6)ALE:地址锁存有效信号。在地址锁存有效信号。在ALE下降沿把下降沿把AD0AD7上上的地址锁存在的地址锁存在8155内部内部R。8155的结构及引脚的结构及引脚信号时,信号时,ALE下降沿把该地址值锁入下降沿把该地址值锁入8155芯片内部地址锁存芯片内部地址锁存器;当器;当AD0AD7为数据信号时,根据为数据信号时,

253、根据WR、RD及及IO/M信号信号对对8155的的IO或或M进行读或写操作。进行读或写操作。(7)RD、WR信号:读写信号。读或写信号:读写信号。读或写8155的片内的片内RAM或或I/O口,由口,由IO/M信号的值决定。信号的值决定。2968155内部内部RAM的使用的使用下面一段程序为检验数据是否能正确从下面一段程序为检验数据是否能正确从8155读出和写入,按上读出和写入,按上图的连线,图的连线,256B的的RAM区的地址范围为:区的地址范围为:0FC00H0FCFFH。P2.0PA0PA7PB0PB7PV0PC5P2.2P2.7P0.0P0.7AD0AD7WRRDALE80518155W

254、RRDALEIO/MRSTRESETP2.1CE297STAR:MOVDPTR,#0FC00H;指向指向8155RAM的的00H单元单元MOVA,#01H;01写入写入A中中MOVXDPTR,A;写入写入8155片内片内RAM单元单元INCDPTR;指向下一个单元指向下一个单元MOVA,#0FFHMOVXDPTR,AMOVDPTR,#0FC00H298MOVXA,DPTR;从从8155RAM中读数中读数MOVR2,A;暂存暂存R2中中INCDPTR;指向下一个单元指向下一个单元MOVXA,DPTRADDA,R2;取出的两个数相加取出的两个数相加JZOK;和为零?和为零?ERR:;不为不为0,读

255、,读/写不正确写不正确OK:;和为和为0,读,读/写正确写正确2998155内部共有内部共有7个寄存器,共占个寄存器,共占7个地址它们的地址分布如下表:个地址它们的地址分布如下表:8155口地址分布口地址分布AD7AD6AD5AD4AD3AD2AD1AD0选中的寄存器选中的寄存器A7A6A5A4A3A2A1A0XXXXX000命令命令/状态寄存器状态寄存器XXXXX001A口口XXXXX010B口口XXXXX011C口口XXXXX100定时器定时器/计数器低计数器低8位位XXXXX101定时定时/计数器高计数器高6位位和方式寄存器和方式寄存器8155内部寄存器介绍内部寄存器介绍3001I/O口

256、口R:PA、PB口均为口均为8位位R,均可工作于输入均可工作于输入/输出输出或选通工作方式,地址分别为:或选通工作方式,地址分别为:xxxxx001H、xxxxx010H。PC口为口为6位位R,可工作于输入可工作于输入/输出方式,或作为输出方式,或作为PA、PB口选通工作方式时的控制线,地址为口选通工作方式时的控制线,地址为xxxxx011H。8155内部寄存器介绍内部寄存器介绍CTC作用:作用:CTC是是14位位递减递减计数器,它对计数器,它对TIMERIN引脚的引脚的脉冲进行脉冲进行计数计数,每出现一个脉冲内部计数器减,每出现一个脉冲内部计数器减1,当计数值,当计数值减到减到0时,向时,向

257、TIMEROUT引脚送出一个方波或脉冲信号。引脚送出一个方波或脉冲信号。2命令命令R:8位,只能写不能读,地址为位,只能写不能读,地址为xxxxx000H,P123图图7.223状态状态R:8位,只读不写,地址为位,只读不写,地址为xxxxx000H,P123图图7.234定时定时/计数器计数器CTC:301302D0=1时时A口有中断申请口有中断申请D1=1时时A口口BUF满满D2=1时允许时允许A口中断口中断D3=1时时B口有中断申请口有中断申请D4=1时时B口口BUF满满D5=1时允许时允许B口中断口中断D6=1时时CTC定时计数定时计数到达终值,除到达终值,除外,外,开始新的计数过程开

258、始新的计数过程 时该位复位为时该位复位为0 0303定时器有定时器有2个个R:定时器低定时器低8位位R(PITL)和定时和定时器高器高6位位R(PITH)及及2位定时方式,定时器低位定时方式,定时器低8位位R地址为地址为xxxxx100,高高8位地址为位地址为xxxxx101。定时定时/计数器计数器CTC8155内部寄存器介绍内部寄存器介绍定时器的高定时器的高8位中最高位中最高2位为位为CTC输出方式定义输出方式定义位,位,CTC可被定义为四种方式:可被定义为四种方式:看看P124图图7.24定时器定时器R的具体功能:的具体功能:304定时定时/计数器计数器CTC8155内部寄存器介绍内部寄存

259、器介绍M2M1输出方式选择输出方式选择00方式方式0:单次方波:单次方波,如如(a)图。图。01方式方式1:连续方波,如:连续方波,如(b)图。图。10方式方式2:终止计数时输出单个脉冲,如:终止计数时输出单个脉冲,如(c)图。图。11方式方式3:连续脉冲,如:连续脉冲,如(d)图。图。(a)(c)(b)(d)30514位定时器的计数范围为位定时器的计数范围为2H3FFH,原因是:当计数长度原因是:当计数长度为偶数时,方波输出为对称的,当计数长度为奇数时,则为偶数时,方波输出为对称的,当计数长度为奇数时,则输出方波为不对称的,安排的高电平的半个周期比低电平输出方波为不对称的,安排的高电平的半个

260、周期比低电平的半个周期多计一个数。的半个周期多计一个数。定时定时/计数器计数器CTC8155内部寄存器介绍内部寄存器介绍CTC的应用举例:如下页。的应用举例:如下页。CTC在计数期间,可以将新的计数长度值和输出方式装入到在计数期间,可以将新的计数长度值和输出方式装入到计数长度计数长度R中,它不影响定时器原来的操作,仅当装入了新中,它不影响定时器原来的操作,仅当装入了新的启动命令到命令的启动命令到命令R后,即给命令后,即给命令R重新复值为重新复值为11xxxxxx并并要等到原先计数值到要等到原先计数值到0后才按新的工作方式及计数长度工作。后才按新的工作方式及计数长度工作。306例例1:用:用81

261、55的定时的定时/计时器作为方波发生器,由计时器作为方波发生器,由TIMEROUT端输出的方波频率为端输出的方波频率为TIMERIN端输入计数脉端输入计数脉频率的频率的24分频,编出相应的初始化程序。分频,编出相应的初始化程序。即即:CTC工作于方式工作于方式1(输出连续方波输出连续方波),最高两位,最高两位=01,计够计够24(0018H)个脉冲信号时输出一个方波个脉冲信号时输出一个方波,。0100000000011000(4018和和H)解:按解:按图图接口电路,接口电路,TIMERIN端输入端输入24个脉冲个脉冲信号,信号,TIMEROUT端输出一个方波,所以端输出一个方波,所以定时定时

262、/计数方式和计数长度字:计数方式和计数长度字:307MOVDPTR,#0FDFCHMOVA,#18H;装入计数值低装入计数值低8位位MOVXDPTR,AINCDPTRMOVA,#40H;装入计数值高装入计数值高6位及方式字位及方式字MOVXDPTR,AMOVDPTR,#0FDF8H;指向命令口指向命令口MOVA,#0C2H;启动定时器计数,启动定时器计数,B口为口为输出,输出,A口口C口为输入口为输入MOVXDPTR,A308解:解:8155的的RAM和各端口地址如下:和各端口地址如下:RAM的地址:的地址:0000H-00FFH,命令口:,命令口:0200HA口:口:0201H,B口:口:0

263、202H,C口:口:0203H定时器低位:定时器低位:0204H,定时器高位:,定时器高位:0205H,定时器定时定时器定时/计数的方式和计数长度字为:计数的方式和计数长度字为:4018H例例2:在下页:在下页图图所示的接口电路中,设所示的接口电路中,设A口与口与C口为输入口为输入口,口,B口为输出口,均为基本口为输出口,均为基本IO口,定时器为口,定时器为连续方波工作方式,对输入脉冲进行连续方波工作方式,对输入脉冲进行24分频。试分频。试编写编写8155的初始化程序。的初始化程序。命令字可选取为:命令字可选取为:110000010=C2H,PA=0,PB=1PC2PC1=00,IEA=0,I

264、EB=0,TM2TM1=ll309310MOVDPTR,#0204H;指向定时器低指向定时器低8位位MOVA,18H;设置定时器的低设置定时器的低8位的值位的值MOVXDPTR,A;写入定时器低写入定时器低8位位INCDPTR;指向定时器的高位指向定时器的高位MOVA,40H;设置定时器的高设置定时器的高6位及位及2位输出方式位的值位输出方式位的值MOVXDPTR,A;写入高位的值写入高位的值MOVDPTR,#0200H;指向命令口指向命令口MOVA,C2H;取取8155的命令字的命令字MOVXDPTR,A;写入命令字写入命令字311例例2:8155作为显示器的接口电路,用作为显示器的接口电路

265、,用8155定时器定时,定时器定时,每隔每隔1秒钟依次读出秒钟依次读出8155内部内部RAM的数据,送的数据,送B口口的的LED显示,显示,8155与与LED及及8051的接口电路见下图。的接口电路见下图。解:编程思路如下。解:编程思路如下。由图可知,由图可知,8155定时器的计数脉冲频率为定时器的计数脉冲频率为5kHz,P0.0p0.7ALERDWRP2.1P2.0INT0AD0AD7PB0ALEPB1RDPB2WRPB3IO/MPB4CEPB5PB6TIMEROUTPB7TIMERINf=5kHz+5v80518155LED0LED7312计数器计满溢出的输出信号计数器计满溢出的输出信号T

266、IMEROUT接接8051的外部的外部中断中断0输入端,定时时间到可向输入端,定时时间到可向CPU申请中断,在中断申请中断,在中断服务程序中从服务程序中从8155的的RAM中取一个数送中取一个数送B口输出显示。口输出显示。程序执行前先向程序执行前先向8155内部内部256B的的RAM中写入中写入0255的数据。的数据。8155的口地址分配,由的口地址分配,由图图看出看出P2.1连在连在8155的的IO/M上上,P2.0连在连在8155的的CE引脚上引脚上,P2.0=0时选中时选中8155,此时当,此时当p2.1=0时访问时访问8155的的RAM,其地址范围为其地址范围为0FC00H0FCFFH

267、;P2.1=1时访时访问问8155的的I/O口,端口地址为:口,端口地址为:313FEF8H命令命令/状态口状态口FEF9HA口口FEFAHB口口FEFBHC口口FEFCH定时器低定时器低8位位FEFDH定时器高定时器高8位位用用8155定时器定时定时器定时1秒,设置为方式秒,设置为方式2(终止计数时(终止计数时输出单个脉冲),因为计数周期输出单个脉冲),因为计数周期=1/5=0.2ms,其计,其计数初值为:计数初值数初值为:计数初值=11000/0.2=5000=1388H。由以上分析可编写初源程序如下:由以上分析可编写初源程序如下:314ORG0000HSJMPSTARORG0003HAJ

268、MPINTR0;外部中断外部中断0中断服务程序入口中断服务程序入口STAR:MOV22H,#00H;8155RAM的首地址写入的首地址写入8051片内片内22H、23H单元单元MOV23H,#0FCHMOVR1,#22HMOVR0,#0FFH;R0计数计数315MOVDPTR,#0FC00H;指向指向8155RAM的首址的首址MOVR7,#0FFH;写入次数计数写入次数计数MOVA,#00H;写入初值写入初值LOOP:MOVXDPTR,A;向向8155RAM写入数据写入数据INCDPTR;修改地址指针修改地址指针 INCA;数据增量数据增量DJNZR7,LOOP;未写完重复未写完重复MOVDP

269、TR,#0FEF8H;指向指向8155命令口命令口MOVA,#0C2H;启动计数,启动计数,B口基本输出口基本输出316MOVXDPTR,AMOVDPTR,#0FEFCH;指向定时器低指向定时器低8位位MOVA,#88HMOVXDPTR,A;装入低装入低8为计数值为计数值INCDPTRMOVA,#93HMOVXDPTR,A;装入高装入高6为计数值,定时器输出方式为计数值,定时器输出方式2MOVIE,#81H;开开CPU及及INT0中断中断SETBIT0;INT0为边沿触发为边沿触发执行其它程序执行其它程序317INT0中断服务程序:(由中断服务程序:(由0003H来)来)INTR0:MOVDP

270、TR,#0FEF8H;重新启动计数器重新启动计数器MOVA,#0C2HMOVXDPTR,AMOVDPTR,#0FEFCH;装入计数值及装入计数值及定时器工作方式定时器工作方式MOVA,#88HMOVXDPTR,AINCDPTRMOVA,#93HMOVXDPTR,A318MOVDPH,23HMOVDPL,R1INCR1MOVXA,DPTR;取数据取数据MOVDPTR,#0FEFA;指向指向B口口MOVXDPTR,A;数据送数据送B口输出显示口输出显示INCR0;22H单元内容加单元内容加1CJNER0,#0FFH,EXIT;数据未取完返回数据未取完返回MOVR1,#22H;指向指向8155的首地

271、址,重复显示过程的首地址,重复显示过程EXIT:RETI;中断返回中断返回注意:此程序中省略了保护和恢复现场的操作,在实际的应用注意:此程序中省略了保护和恢复现场的操作,在实际的应用中应加以考虑。中应加以考虑。319例例3:用用74LS244扩展并行输入口和用扩展并行输入口和用74LS273扩展扩展输出口输出口.如图如图,如果如果74LS244的输入端接一组开的输入端接一组开关关,74LS273的输出端接一组指示灯的输出端接一组指示灯,要求将开要求将开关的状态由对应的指示灯显示出来关的状态由对应的指示灯显示出来,编写输入编写输入输出程序输出程序。如下:如下:DRV-IO:MOVDPTR,#0F

272、EFFH;端口地址端口地址MOVXA,DPTR;读输入口读输入口MOVXDPTR,A;送输出口送输出口RET32074ls27374ls244321例例4:如如图图所示的电路,从所示的电路,从8155的的A口输入数据,并口输入数据,并进行判断;若不为进行判断;若不为0,则将该数据存入,则将该数据存入8155的的RAM中(从起始单元开始,数据总数不超过中(从起始单元开始,数据总数不超过256个),同时从个),同时从B口输出,并将口输出,并将PC0置置“1”;若为若为0,则停止输入数据,同时将,则停止输入数据,同时将PC0清清“0”,使编写程序。使编写程序。解解:程序如下:程序如下:MOVDPTR

273、,#0200H;指向命令口;指向命令口MOVA,#06H;设置命令字;设置命令字MOVXDPTR,A;写入命令字写入命令字322323MOVR0,#00H;指向;指向8155的的RAM区首址区首址MOVR1,#00H;数据总数为;数据总数为256个个LP1:MOVDPTR,#0201H;指向;指向A口口MOVXA,DPTR;从从A口读入数据口读入数据JZLP3;为为0则转则转MOVXR0,A;存入存入RAM单元单元INCR0;指向下一单元指向下一单元INCDPTR;指向指向B口口MOVXDPTR,A;B口输出口输出324INCDPTR;指向指向C口口MOVXA,DPTR;C口读入口读入SETB

274、ACC.0;使使PC0=1MOVXDPTR,A;回送回送DJNZR1,LP1;未完则反复未完则反复LP2:SJMP$;暂停暂停LP3:MOVDPTR,#0203H;指向指向C口口MOVXDPTR,A;回送回送SJMPLP2325例例5:8255A与与8031的连接如的连接如图图所示所示.采用线选法寻采用线选法寻址址,P2.7接接8255A的的CS,单片机的最低两位地址单片机的最低两位地址线接线接8255的端口选择线的端口选择线A1、A0,所以,所以8255A的的PA口、口、PB口、口、PC口和控制口的地址分别口和控制口的地址分别为为7FFCH、7FFDH、7FFEH、7FFFH.如果如果825

275、5A的的PA口接一组指示灯口接一组指示灯,PB口接一组开口接一组开关关,要求将开关的状态由对应的指示灯显示出要求将开关的状态由对应的指示灯显示出来来,则则8255A初始化和输入输出程序初始化和输入输出程序如下如下:326327INIT-IO:MOVDPTR,#7FFFH;控制口控制口MOVA,#82H;方式控制字方式控制字(PA口方式口方式0输出输出,PB口方式口方式0输入输入)MOVXDPTR,A;写方式控制字写方式控制字MOVDPTR,#7FFDHMOVXA,DPTR;读读PB口开关状态口开关状态MOVDPTR,#7FFCHMOVXDPTR,A;输出到输出到PA口口RET328实用的实用的

276、I/O扩展线举例扩展线举例1G1A1B1Y11Y31Y074LS139(1)P2.7P2.6P2.51Q7QCP1D7D74LS373P0.0P2.4P2.3P2.2P2.1P2.0P0.7PSENWRRDA0A7 A8A12D0D7OECS2764A0A7 A8A12D0D7 WRCS6264RD2B2A2G74LS139(2)2Y0IO/MAD0AD7ALERDWRCEPA0PA7PB0PB7PC0PC58155ALEP2.3P2.48031329系统中使用了一片系统中使用了一片8031,一片,一片74LS139译码器,一片译码器,一片74LS373锁锁存器,一片片内程序存储器扩展芯片存器

277、,一片片内程序存储器扩展芯片2764,一片片外数据存储,一片片外数据存储器芯片器芯片6264,以及一片,以及一片I/O扩展芯片扩展芯片8155。实用的实用的I/OI/O扩展线举例扩展线举例1用户系统译码电路分析:用户系统译码电路分析:(1)74LS139芯片中有芯片中有2个独立个独立的的24译码器:译码器:1G、1B、1A、1Y0、1Y1、1Y2、1Y3为第一组。为第一组。2G、2B、2A、2Y0、2Y1、2Y2、2Y3为第二组。为第二组。24译码器的逻辑关系如表译码器的逻辑关系如表1:输入(使能选择)输入(使能选择)输出输出GBAY0Y1Y2Y31XX00000101001111110111

278、101111011110表表1330图中:图中:74LS139(1)24译码器的输入端译码器的输入端1G、1A、1B分别与地址线分别与地址线A15A13(P2.7P2.5)相接,输出相接,输出端端1Y0、1Y1、1Y3分别为分别为2764、74LS139及及6264的的片选信号,如表片选信号,如表21G1A1BA15A14A13输出输出选择选择0 0 01Y027640 1 01Y174LS139(2)0 1 11Y36264表表2实用的实用的I/OI/O扩展线举例扩展线举例33174LS139第二组第二组24译码器输入端译码器输入端2G、2A、2B分别与分别与1Y1、A12(P2.4)、)、

279、A11(P2.3)相连,输出端相连,输出端2Y0为为8155的片选的片选号,如表号,如表3:2G(1y1)2A2B输出输出作作用用A15A14A13010A12A110033202Y0=0选择选择8155表表3实用的实用的I/OI/O扩展线举例扩展线举例332由表由表2可知:可知:2764的片选信号为的片选信号为2Y0,即即A15=0,A14=0,A13=0时,有时,有2Y0=0,此时此时2764的的CE信号有效。信号有效。2764共有共有13条地址线,条地址线,分别与分别与8031地址总线地址总线A12A0相接,所以相接,所以2764所占的地址空间为:所占的地址空间为:实用的实用的I/OI/

280、O扩展线举例扩展线举例A15A14A13A12A0即:即:2764地址空间为地址空间为01FFFH共共8kB00000注注:A15A14A13的值只能为的值只能为000(片选(片选00001信号),才能使信号),才能使2Y0=0,A12A0可为可为0或或1。0001122764的地址分布:的地址分布:3338155共有共有8条地址数据线条地址数据线A0A7,分别与分别与8031AB的的A0A7相接,而相接,而IO/M信号接信号接A8。6264EPROM(8KB)也有也有13根地址线,分别与根地址线,分别与AB的的A12A0相接,所以其地址空间为相接,所以其地址空间为60007FFFH(8KB)

281、。)。实用的实用的I/OI/O扩展线举例扩展线举例8155内部内部RAM所占地址空间如所占地址空间如:8155I/O口所占地址空间如下口所占地址空间如下:36264地址分布:地址分布:48155地址分布:地址分布:334A15A14A13A12A11A10A9A8A7A001000XX00001000XX00101000XX111实用的实用的I/OI/O扩展线举例扩展线举例8155内部内部RAM所占地址空间所占地址空间其中其中A10A9的值可仍选,在的值可仍选,在A10A9=00时时,8155内部内部RAM的地址空间为的地址空间为4000H40FFH共共256B。335A15A14A13A12

282、A11A10A9A8A7A2ATA001000XXX0XXX000命令命令R01000XXX0XXX001PA口口01000XXX0XXX010PB口口01000XXX0XXX011PC口口01000XXX0XXX100PITL01000XXX0XXX101PITH实用的实用的I/OI/O扩展线举例扩展线举例8155I/O口所占地址空间如下口所占地址空间如下336命令命令R地址为:地址为:4100H,PA口地址为口地址为4101H,PB口地址为口地址为4102H,PC口地址为口地址为4103H,CTC低字节寄存器低字节寄存器TL地址地址为为4104H,CTC高字节寄存器高字节寄存器TH地址为地

283、址为4105H。实用的实用的I/OI/O扩展线举例扩展线举例8155I/O口所占地址空间如下口所占地址空间如下具有具有8kB的外部程序存储器和的外部程序存储器和8kB的外部数据存储器的外部数据存储器;适适于对设备仪器进行智能化改造。具有于对设备仪器进行智能化改造。具有36根根I/O线与外设交换信线与外设交换信息,适于对开关量进行控制。息,适于对开关量进行控制。5扩展以后的单片机系统用途扩展以后的单片机系统用途其中其中A15A14A13A12A11=01000,才有才有2Y0=0,A8恒为恒为1才选才选择择I/O口地址。口地址。A10A9任意,任意,A7A3任意,在它们均取任意,在它们均取0时有

284、:时有:337ORG0000;此程序存入此程序存入2764芯片中芯片中MOVDPTR,#4100H;DPTR指令命令指令命令RMOVA,#0FH;命令命令R的设置为:不影响计数操作的设置为:不影响计数操作MOVXDPTR,A;禁止禁止A、B口中断,口中断,A、B、C口为基输出方式口为基输出方式MOVA,#0FFH;第一次第一次PA各位均输出各位均输出“1”LOOP1:MOVDPTR,#4101H;A中内容送中内容送A口,则口,则PA口各位均输出口各位均输出1或或0MOVXDPTR,A例例8155I/O口软件举例:要求在图口软件举例:要求在图7-7所示的用户系统中的所示的用户系统中的PA、PB、

285、PC三口每一位都输出连续方波。三口每一位都输出连续方波。338INCDPTR;A中内容送中内容送B口口MOVXDPTR,AINCDPTR;A中内容送中内容送C口口MOVXDPTR,AMOVR0,#00H;延时延时LOOP2:DJNZR0,LOOP2CPLA;A中内容取反中内容取反SJMPLOOP1339上述程序运行时,可用示波器在上述程序运行时,可用示波器在8155的的PA、PB、PC口每口每一一条引脚上测得连续方波;条引脚上测得连续方波;上述程序必须写入扩展系统的上述程序必须写入扩展系统的2764中;中;延时时间为(大致):延时时间为(大致):25624T振振=256241/(6106)1m

286、s=1024us设设fosc=6mHz:则有则有25624T振振+12T振振+24T振振+12T振振=1048us1ms注意:注意:340第八章第八章 D/A、A/D转换器接口及应用转换器接口及应用一、一、A/D转换器转换器二、二、A/D转换器与微机的接口技术转换器与微机的接口技术三、三、A/D转换器与转换器与CPU信息传递的方式信息传递的方式四四、常用常用A/D转换芯片转换芯片五、五、A/D转换实例转换实例六、六、模拟量输出通道及模拟量输出通道及D/A转换器转换器341功能:是将连续变化的模拟量信号转换为数值上等功能:是将连续变化的模拟量信号转换为数值上等效的数字信号。效的数字信号。D/A、

287、A/D转换器接口及应用转换器接口及应用一、一、A/D转换器转换器分辨率:表示分辨率:表示ADC所能分辨的最小量化单位,即表所能分辨的最小量化单位,即表示示ADC对微小输入量变化的敏感程度。通常用转换对微小输入量变化的敏感程度。通常用转换数字量的位数表示,数字量的位数表示,N位位ADC其分辨率为其分辨率为N位。位。按原理可分为四类:计数式、双积分式、逐次逼近式按原理可分为四类:计数式、双积分式、逐次逼近式及并行式及并行式A/D转换器。转换器。二、二、A/D转换器的基本参数转换器的基本参数342A/D转换器转换器转换时间:完成一次转换时间:完成一次A/D转换所需要的时间。一转换所需要的时间。一般芯

288、片的转换时间为几个般芯片的转换时间为几个us200us,也常用转换也常用转换率表示。率表示。转换率转换率=1/转换时间。转换时间。转换精度:指与数字输出量对应的模拟输入量的转换精度:指与数字输出量对应的模拟输入量的实际值与理论值之间的差值,它反映实际值与理论值之间的差值,它反映ADC实际输实际输出接近理想输出的精度程度。出接近理想输出的精度程度。对于满刻度为对于满刻度为10v的的8位位ADC,A/D所能分辨的所能分辨的最小电压变化量为最小电压变化量为10/255=0.039v=39mv。例例:对于:对于8位位ADC,其分辨率为其分辨率为8位。位。343接口的任务:接口的任务:发发转转换换启启动

289、动信信号号。因因为为转转换换何何时时开开始始,是是由由外外部部来来控控制制的的,何时开始转换由接口发启动信号。何时开始转换由接口发启动信号。取取回回“转转换换结结束束”状状态态信信号号:ADC产产生生的的转转换换结结束束信信号号,可可以作为以作为CPU查询或向查询或向CPU申请中断的依据。申请中断的依据。读读取取转转换换的的数数据据:在在得得到到转转换换结结束束信信号号后后,CPU可可用用查查询询方方式或中断方式将转换结果读走。式或中断方式将转换结果读走。进进行行通通道道寻寻址址:对对多多个个模模拟拟量量输输入入通通道道的的系系统统,要要分分别别选选用用各各模模拟拟量量输输入入端端。一一般般模

290、模拟拟通通道道的的编编号号是是以以代代码码的的形形式式由由DB上上发出的,而不是真正的由发出的,而不是真正的由AB发出的。发出的。D/A、A/D转换器接口及应用转换器接口及应用A/D转换器与微机的接口技术转换器与微机的接口技术344A/D转换器与微机的接口技术转换器与微机的接口技术与与CPU直接相连,有些型号如直接相连,有些型号如ADC0809带有带有dataout锁存锁存器和三态门,分辨率与器和三态门,分辨率与DB宽度相同,所以可以直接与微宽度相同,所以可以直接与微机的机的DB相连,此种接口线的结构简单,成本低。相连,此种接口线的结构简单,成本低。利用利用I/O接口芯片与接口芯片与CPU相连

291、,如相连,如8155、8255等。各类微机等。各类微机都有与自己的并行都有与自己的并行I/O口配套的接口芯片,利用这些芯片将口配套的接口芯片,利用这些芯片将A/D转换器与转换器与CPU连接,无需外接其它电路,使用方便可靠。连接,无需外接其它电路,使用方便可靠。采用三态锁存器与采用三态锁存器与CPU相连,对于芯片内部不带相连,对于芯片内部不带OUT锁存锁存器的器的A/D转换器,或转换器,或A/D的分辨率高于的分辨率高于CPUdB宽度时,数宽度时,数据要份两次传送,均可采用这种连接方法。(据要份两次传送,均可采用这种连接方法。(74LS244)接口的形式:接口的形式:345D/A、A/D转换器接口

292、及应用转换器接口及应用A/D转换器与转换器与CPU信息传递的方式信息传递的方式程序查询方式程序查询方式:CPU在在A/D转换期间,一直需转换期间,一直需要查询要查询A/D“转换结束转换结束”信号状态,当状态满足时信号状态,当状态满足时就可以读取信息。(此类方法程序设计简单,但就可以读取信息。(此类方法程序设计简单,但实时性差,耗费实时性差,耗费CPU大量时间)大量时间)等待方式等待方式:若微机的:若微机的CPU设有等待信号(设有等待信号(WAITREADY)时,设想使这些等待信号在时,设想使这些等待信号在A/D转换期转换期间处于无效状态,间处于无效状态,A/D转换结束时它们有效,转换结束时它们

293、有效,CPU才可以开始读取数据才可以开始读取数据。346D/A、A/D转换器接口及应用转换器接口及应用A/D转换器与转换器与CPU信息传递的方式信息传递的方式定时采样方式定时采样方式:也称延时程序法。预先精确的:也称延时程序法。预先精确的计算好计算好A/D转换需要的时间,这样在转换需要的时间,这样在CPU在发动在发动A/D启动命令后就自动执行一个延时程序,此延启动命令后就自动执行一个延时程序,此延时程序执行完后,时程序执行完后,A/D转换一定也结束了,转换一定也结束了,CPU可以读取可以读取A/D转换的结果。转换的结果。注意:(要求:延时时间注意:(要求:延时时间A/D转换时间)转换时间)中断

294、方式中断方式:把:把A/D转换结束信号作为中断请求信转换结束信号作为中断请求信号,送到中断控制器的中断请求输入端或号,送到中断控制器的中断请求输入端或CPU的的INT端,在端,在CPU响应中断时读取转换结果。响应中断时读取转换结果。347A/D转换器与转换器与CPU信息传递的方式信息传递的方式注意注意:前三种方式,前三种方式,A/D转换期间,转换期间,CPU均处于等均处于等待状态,待状态,CPU资源浪费较大。后面中断方式资源浪费较大。后面中断方式中,在中,在A/D转换期间,转换期间,CPU发出启动信号后发出启动信号后就可转去处理别的工作,在接到中断信号后就可转去处理别的工作,在接到中断信号后再

295、转回读入再转回读入A/D转换结果,即转换结果,即CPU与与A/D转转换是并行工作的,所以换是并行工作的,所以CPU的工作效率较的工作效率较高,但若高,但若A/D转换时间较短,应采用前三种转换时间较短,应采用前三种方式,因为响应中断、保护、恢复现场这方式,因为响应中断、保护、恢复现场这一系列的工作所花去的时间可能与一系列的工作所花去的时间可能与A/D转换转换的时间相当甚至更长。的时间相当甚至更长。348CS信号有效时,若信号有效时,若WR信号有效,则启动信号有效,则启动A/D转换,转换,ADC开开始进行始进行A/D转换;若转换;若RB信号有效,则产生信号有效,则产生INTR信号,表示信号,表示转

296、换结束,转换结束,CPU可以读取转换结果。可以读取转换结果。ADC0804:ADC0804是是8位位A/D转换芯片,即转换结果为转换芯片,即转换结果为8位二进制数。位二进制数。D/A、A/D转换器接口及应用转换器接口及应用常用常用A/D转换芯片转换芯片若在若在A/D转换过程中再次启动转换,则中止正在进行的转换转换过程中再次启动转换,则中止正在进行的转换,而进行新的转换过程,但输出锁存器仍记录前次转换结果。而进行新的转换过程,但输出锁存器仍记录前次转换结果。ADC0804内部具有内部具有8位位data锁存器及输出三态门,可直接锁存器及输出三态门,可直接与与CPU相连,无需辅助接口。相连,无需辅助

297、接口。349ADC0809D/A、A/D转换器接口及应用转换器接口及应用常用常用A/D转换芯片转换芯片START:启动启动A/D转换控制输入端口,加转换控制输入端口,加正正脉冲脉冲后后A/D转换开始。转换开始。引脚功能:(看引脚功能:(看P135图图7.32和和7.33)IN0IN7:8路模拟量输入端口。路模拟量输入端口。特点分辨率为特点分辨率为8位,可锁存三态输出,允许位,可锁存三态输出,允许8路模路模拟信号进入。拟信号进入。350351ADC0809D/A、A/D转换器接口及应用转换器接口及应用A/D转换芯片实例转换芯片实例A、B、C:8路模拟开关的路模拟开关的3位地址选通输入端,用位地址

298、选通输入端,用于选择哪一路模拟信号可以进行于选择哪一路模拟信号可以进行ADC内内被转换成数字信号。被转换成数字信号。2127:8位数字量输出端口位数字量输出端口ALE:地址锁存控制器。地址锁存控制器。高高电平时把电平时把CBA的值送入的值送入地址锁存器,并经译码器得到地址输出,以地址锁存器,并经译码器得到地址输出,以选择相应的模拟输入通道。选择相应的模拟输入通道。352EOC:A/D转换结束输出端口,转换开始后,转换结束输出端口,转换开始后,EOC信号变低,信号变低,转换结束时,转换结束时,EOC返回高电平返回高电平,同时将转换结果锁在输出锁存器中。此信号同时将转换结果锁在输出锁存器中。此信号

299、可以作为可以作为A/D转换器的状态信号供查询,也转换器的状态信号供查询,也可以作为中断请求信号。可以作为中断请求信号。A/D转换芯片实例转换芯片实例ADC0809OE:输出允许控制端口。输出允许控制端口。OE端的电平由低变为端的电平由低变为高高时,打开三态输出锁存器,将转换结果的数时,打开三态输出锁存器,将转换结果的数字量送到字量送到CPU的的DB上。上。353D/A、A/D转换器接口及应用转换器接口及应用例例1利用中断方式,分别对利用中断方式,分别对8路模拟信号轮流采集路模拟信号轮流采集一次,转换结果依次存放在首址为一次,转换结果依次存放在首址为30H的片外的片外数据数据RAM中。中。(选用

300、选用ADC0809芯片,如芯片,如图图。例例2同上题,利用查询方式操作。同上题,利用查询方式操作。四、四、A/D转换实例转换实例REF(+)和和REF(-):):参考电压输入端口。一般参考电压输入端口。一般REF(+)与与VCC相连,相连,REF(-)与与GND相连。相连。CLK:时钟信号端口。时钟信号端口。354+RD355如上图硬件接线方式:可工作于中断方式,也可工作于查询如上图硬件接线方式:可工作于中断方式,也可工作于查询方式。方式。ADC0809工作过程:工作过程:模拟通道地址的译码输入模拟通道地址的译码输入A、B、C,由由P0.2P0.0通过地址通过地址所存器所存器74LS373提供

301、,据提供,据P0.2P0.0的连接方法的连接方法,8个模拟输个模拟输入通道的地址分别为入通道的地址分别为00F8H00FfH(其中因为其中因为P2.0=0,才才可能使可能使OE、START、ALE信号有效),由地址信息给出。信号有效),由地址信息给出。启动启动A/D转换:使转换:使START有效。有效。转换结束后转换结束后ADC0809发发EOC信号。信号。CPU读取转换结果读取转换结果(使使OE有效)。有效)。先选通道号地址到先选通道号地址到A、B、C,由由ALE信号锁存通道号地址。信号锁存通道号地址。356ORG0000HAJMPMAINORG0013H;外部中断外部中断1的中断程序首地址

302、的中断程序首地址AJMPINT1MAIN:MOVR1,#30H;送片外送片外RAM地址地址MOVR7,#08H;送通道数送通道数MOVDPTR,#00F8H;送端口号;送端口号SETBIT1;IT1=0设置设置INT1引脚为低电平触发方式引脚为低电平触发方式SETBEX1;EX1=1允许外部中断允许外部中断1中断中断SETBEA;EA:中断允许中断允许R总开关,总开关,EA=1允许中断允许中断357READ:MOVXDPTR,A;送出通道号送出通道号DPTR,选中通道选中通道INi;此指令使此指令使WR信号有效,启动信号有效,启动A/D转换。(转换数据来自通道)转换。(转换数据来自通道)HER

303、E:SJMPHERE;ADC0809正在转换正在转换IN0IN7通道中的通道中的模拟量之一,模拟量之一,CPU可以去处理别的工可以去处理别的工作,等待中断,一旦中断信号到来,作,等待中断,一旦中断信号到来,IE=1时,立即转到时,立即转到0013H执行。执行。DJNZR7,READ;8路信号未转换完跳至路信号未转换完跳至READ处处继续继续INT1:MOVXA,DPTR;使使RD信号有效,从而信号有效,从而OE信号信号有效;将有效;将ADC0809锁存器内容锁存器内容(转换结果)读至(转换结果)读至A中,并送片外中,并送片外RAM中中358注意:也可以有另外一种连续方式:注意:也可以有另外一种

304、连续方式:C、B、A不通过不通过74LS373,而是直接连在而是直接连在P0.0P0.2上,则此时上,则此时C、B、A的值必须的值必须由传送数据时数据线上信息的低由传送数据时数据线上信息的低3位给出,即位给出,即8个通道地个通道地址由传送的数据(一般在址由传送的数据(一般在A中)的低中)的低3位的不同选择,位的不同选择,编程时先确定芯片编程时先确定芯片DAC0809的一个地址(改为的一个地址(改为0FEFFH)然后用指令然后用指令MOVXDPTR,A据据A中低中低3位的值来选位的值来选择相应的择相应的8个模拟通道。若对此题则初始时必须有个模拟通道。若对此题则初始时必须有MOVA,00H,然后每

305、转换一次使然后每转换一次使A的内容加的内容加1,此种方法,此种方法ADC0809在整个系统中只占一个地址号,但要多次使在整个系统中只占一个地址号,但要多次使用用A中内容。中内容。MOVXR1,AINCR1INCDPTR;片外片外RAM指针加指针加1,通道号加,通道号加1,转换下一,转换下一通道内容通道内容RETI359例例2程序如下:程序如下:ORG0000HMAIN:MOVDPTR,#00F8H;P2.0=0且指向且指向IN0通道通道MOVR1,#30H;片外片外RAM指针指针MOVR7,#08H;通道数量通道数量READ:MOVXDPTR,A;启动启动A/D转换,通道转换,通道号地址号地址

306、ADC0809HERE:JBP3.3,HERE;测试测试INT1端是否有效端是否有效MOVXA,DPTRMOVXR1,AINCR1INCDPTR;通道号地址加通道号地址加1DJNZR7,READ360例例试试设设计计AD574与与8位位机机的的接接口口电电路路,设设需需要要采采集集40H个个数数,转转换结果存于片外换结果存于片外40H中,接线如下页图,说明:中,接线如下页图,说明:AD574有三态锁存器,直接与有三态锁存器,直接与8051DB相接。相接。P2.7为为CS信号。信号。12/8=0,分分两两次次传传送送转转换换结结果果。第第一一次次输输出出高高8位位,第第二二次次输输出出低低4位尾

307、随位尾随4个个0,用,用2个字节地址。个字节地址。A0接接P0.0,工工作作时时应应使使A0=P0.0=0,结结合合R/C=0,启启动动12位位A/D转转换。换。转转换换结结束束信信号号STS接接P3.3,即即状状态态口口中中的的最最高高位位。检检测测时时,P3.3=0时,表明转换结束;时,表明转换结束;P3.3=1时,表明正在进行时,表明正在进行A/D转换。转换。设设 AD574数数 据据 口口 高高 地地 址址 为为 3F02H其其 中中 口口 地地 址址 为为 : 低低 字字 节节3F01H(A0=1););高高8位位3F02H(A0=0)。)。361362程序如下:程序如下:MOVR7

308、,#40H;采集次数采集次数MOVR1,#40H;片外片外RAM地址指针地址指针ST:MOVDPTR,#3F02H;数据口地址指针,主要目的使数据口地址指针,主要目的使下面操作时下面操作时AD574中中A0=0MOVA,#00H;使读信号使读信号RD有效,从而使有效,从而使CE有效,有效,方方可可与与P2.7=CS=0一一起起使使AD574处处于于工工作作状状态态MOVXDPTR,A;使使WR=0有效,从而有效,从而R/C=0,加加之之A0=P0.0=0,所以所以12位位A/D转换转换REP:JBP3.3,REP;读取读取AD574的状态,看的状态,看A/D转换是否结转换是否结束,即看束,即看

309、STS=0否?测试否?测试STS=P0.0=1否?否?若若STS=1表示正进行表示正进行A/D转换,转换,STS=0转换结束转换结束363MOVXA,DPTR;读取转换结果的高读取转换结果的高8位,并位,并送入片外送入片外RAM中中MOVXR1,AMOVA,DPTLDECA;数据口低(数据口低(4位)字节地址(位)字节地址(A0=1)MOVDPTL,AINCR1;片外片外RAM指针加指针加1,指向下一存储单元,指向下一存储单元MOVXA,DPTR;读取低字节转换结果读取低字节转换结果ANLA,0F0H;保留低字节中的高保留低字节中的高4位,尾随位,尾随4个个0输出到片外输出到片外RAM中中MO

310、VXR1,AINCR1DJNZR7,ST;若若40次采集未作完,则继续采集次采集未作完,则继续采集364例例4365ORG2000HMOVR0,#30H MOVR7,4FH;循环计数器置初值;循环计数器置初值ML:MOVDPTR,FEF3H;选通道选通道3MOVXDPTR,A;启动;启动0809MOVR2,20HDL:DJNZR2,DL;延时;延时HE:JBP3.3,HE;结束否?;结束否?MOVXA,DPTR;结果送入内存;结果送入内存RAM中中MOVR0,AINCR0DJNZR7,ML;采集完?采集;采集完?采集4FH次次HH:SJMPHH;暂停;暂停366D/A、A/D转换器接口转换器接

311、口模拟量输出通道模拟量输出通道功能:将计算机输出的数字信号保持并转换为能推动功能:将计算机输出的数字信号保持并转换为能推动执行元件工作的模拟信号。执行元件工作的模拟信号。组成:数模(组成:数模(D/A)转换器、输出保持器及多路转转换器、输出保持器及多路转换器。换器。分辨率分辨率:是:是DAC能识别的最小单位,也指能识别的最小单位,也指DAC能够转换的二进制数的位数。能够转换的二进制数的位数。数模(数模(D/A)转换器基本参数转换器基本参数:367分辨率分辨率:是:是DAC能识别的最小单位,也指能识别的最小单位,也指DAC能够转换的二进制数的位数。能够转换的二进制数的位数。D/A、A/D转换器接

312、口转换器接口模拟量输出通道模拟量输出通道转换精度转换精度:指:指DAC实际输出值与理论值之间的实际输出值与理论值之间的误差。误差。建立时间建立时间(转换时间):指从数字量输入(转换时间):指从数字量输入DAC到到完成完成D/A转换,输出达到最终值并稳定转换,输出达到最终值并稳定为止所需的时间。为止所需的时间。368数模(数模(D/A)转换器转换器DAC0832主要有两个主要有两个8位位R和一个和一个8位位D/A转换器转换器组成,组成,使用使用2个个8位位R可以进行可以进行2次缓冲操作。次缓冲操作。(看看P139图图7.37)3典型的典型的D/A转换器及接口:转换器及接口:DAC0832XFER

313、为传送控制信号,与为传送控制信号,与WR2信号共同控制信号共同控制LE2信号。信号。CS为片选信号。为片选信号。ILE为输入为输入R允许信号,与允许信号,与CS、WR1信号共同控制信号共同控制LE1信号。信号。LE1、LE2分别为分别为2级输入级输入R的输入允许信号。的输入允许信号。369370单缓冲方式:单缓冲方式:INPUTregister和和DACregister之一处之一处于直通于直通,另一寄存器处于受控状态,适另一寄存器处于受控状态,适用于只有一路模拟量输出,虽有几路模用于只有一路模拟量输出,虽有几路模拟量,但不需要同时输出的情况。拟量,但不需要同时输出的情况。数模(数模(D/A)转

314、换器转换器直接方式:直接方式:LE1与与LE2端均恒有效端均恒有效,两个两个R都不受控都不受控,转换数据可经过两个转换数据可经过两个R直接进入直接进入D/A转换转换器。器。DAC0832有三种工作方式:有三种工作方式:371数模(数模(D/A)转换器转换器利用第二级锁存器的锁存信号来实现两个或利用第二级锁存器的锁存信号来实现两个或多个转换器的同步输出。多个转换器的同步输出。DAC0832在输出模拟信号的同时可采集下一个数在输出模拟信号的同时可采集下一个数字量,所以可有效提高转换速度。字量,所以可有效提高转换速度。双缓冲方式:可利用锁存器对双缓冲方式:可利用锁存器对INPUTR和和DACR分别进

315、行锁存,即两个分别进行锁存,即两个R都受控都受控,以达到:以达到:DAC0832有三种工作方式:有三种工作方式:372MOVDPTR,#0FFFEHSTEP:MOVA,#dataH;置输出矩形波上限值置输出矩形波上限值MOVXDPTR,A;启动启动D/A转换转换ACALLDELH;调输入高电平延时程序调输入高电平延时程序MOVA,#dataL;置输出矩形波下限值置输出矩形波下限值MOVXDPTR,A;启动启动D/A转换转换ACALLDELL;调输入低电平延时程序调输入低电平延时程序SJMPSTEP;循环循环例例1如图如图产生产生矩形矩形波程序:波程序:dataHdataL373ATART:MO

316、VDPTR,#0FFFEH;选中选中DAC0832STEP1:MOVA,#00H;置初值置初值STEP2:MOVXDPTR,A;启动启动D/A转换转换INCACJNEA,#(data+1),STEP2;A中中内容不等于设置值时跳转内容不等于设置值时跳转AJMPSTEP1;重复执行重复执行例例2:要求使用:要求使用DAC0832产生产生锯齿锯齿波程序。硬件接线波程序。硬件接线如下页图如下页图。由于由于P2.7与与CS相连,所以相连,所以P2.7=0,所以选择所以选择DAC0832的的地址为地址为0FFFH。注:在指令注:在指令CJNEA,#data,STEP2之前加延时程之前加延时程序可改变锯齿

317、形波的频率。序可改变锯齿形波的频率。data374A0A0375MOVDPTR,#0FFFEHSTEP1:MOVA,#00HSTEP2:MOVXDPTR,AINCACJNEA,#data,STEP2STEP3:MOVXDPTR,ADECACJNEA,#00H,STEP3AJMPSTEP1例例3产生产生三角三角波程序:波程序:data376MOVDPTR,#0FFFEHSTEP1:MOVA,#00HSTEP2:MOVXDPTR,AINCACJNEA,#data,STEP2LCALLDELAY1STEP3:MOVXDPTR,A例例4产生产生阶梯形阶梯形波的程序波的程序:data377DECACJN

318、EA,#01H,STEP3 LCALLDELAY2AJMPSTEP1DELAY1:RETDELAY2:RET378379例例.根据根据图图单脉冲方式的单脉冲方式的D/A转换接口电路转换接口电路,试编写程试编写程序序,使使DAC0832输出以下波形:负向锯齿波、三输出以下波形:负向锯齿波、三角波、阶梯波、梯形波、矩形波。角波、阶梯波、梯形波、矩形波。MOVDPTR,#00FEHMOVA,#0FFHLOOP:MOVXDPTR,ADECASJMPLOOP输输出出负负向向锯锯齿齿波波380MOVDPTR,#00FEHMOVA,#00HUP:MOVXDPTR,AINCAJNZUPMOVA,#0FEHDO

319、WN:MOVXDPTR,ADECAJNZDOWNSJMPUP输输出出三三角角波波381输出阶梯波输出阶梯波MOVDPTR,#00FEHMOVA,#00HUP:ADDA,#10HMOVXDPTR,ASJMPUP382输出梯形波输出梯形波MOVDPTR,#00FEHMOVA,#00HUP:MOVXDPTR,AINCAJNZUPLCALLDELAY383输出梯形波输出梯形波MOVA,#0FFHDOWN:MOVXDPTR,ADECAJNZDOWNLCALLDELAYSJMPUP384MOVDPTR,#00FEHLOOP:MOVA,#DATA1MOVXDPTR,ALCALLDELAYMOVA,#DATA

320、2MOVXDPTR,ALCALLDELAYSJMPLOOP输输出出矩矩形形波波385DELAY:MOVR7,#3DL2: MOVR6,#0FFHDL1: DJNZR6,DL1DJNZR7,DL2RET输输出出矩矩形形波波3861.如下图如下图:用:用74LS244扩展并行输入口和用扩展并行输入口和用74LS2732.扩展输出口,如果扩展输出口,如果74LS244的输入端接一组开关的输入端接一组开关,3.4LS273的输出端接一组指示灯的输出端接一组指示灯,要求将开关的状态要求将开关的状态4.由对应的指示灯显示出来由对应的指示灯显示出来,编写输入输出程序。编写输入输出程序。(解解)2.8051外

321、部扩展外部扩展4KB程序存储器程序存储器,要求地址范围为要求地址范围为3.1000H1FFFH,以便和内部程序存储器地址相以便和内部程序存储器地址相衔衔4.接接,画出系统的联接逻辑图。画出系统的联接逻辑图。(解解)补充作业题:补充作业题:3874.将将8031单片机外接一片单片机外接一片2716和一片和一片6116组成一个应组成一个应用系统用系统,请画出硬件连接图请画出硬件连接图,并指出扩展存储器的地并指出扩展存储器的地址范围。址范围。(解解)3.试设计符合下列要求的试设计符合下列要求的8031系统:分别外接系统:分别外接2KB程程序存储器和序存储器和2KB数据存储器,画出系统的连接逻辑数据存

322、储器,画出系统的连接逻辑图,要求给出必要的控制线,写出各芯片的地址范图,要求给出必要的控制线,写出各芯片的地址范围。围。(解解)注:注:3、4题二者选一题二者选一388补充题补充题1图图389390391解:逻辑图解:逻辑图如上页如上页:设高位地址设高位地址P2.3P2.7值全为值全为1,2716地址范围为:地址范围为:0F800H0FFFFH设高位地址设高位地址P2.3P2.6值全为值全为1,P2.7=0,6116地址范围为:地址范围为:7800H7FFFH设高位地址设高位地址P2.3P2.7值全为值全为0,2716地址范围为:地址范围为:0000H07FFH6116地址范围为:地址范围为:0000H07FFH392

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

最新文档


当前位置:首页 > 办公文档 > 工作计划

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