【大学课件】MCS-51单片机的功能模块ppt

上传人:博****1 文档编号:567511366 上传时间:2024-07-21 格式:PPT 页数:157 大小:1.35MB
返回 下载 相关 举报
【大学课件】MCS-51单片机的功能模块ppt_第1页
第1页 / 共157页
【大学课件】MCS-51单片机的功能模块ppt_第2页
第2页 / 共157页
【大学课件】MCS-51单片机的功能模块ppt_第3页
第3页 / 共157页
【大学课件】MCS-51单片机的功能模块ppt_第4页
第4页 / 共157页
【大学课件】MCS-51单片机的功能模块ppt_第5页
第5页 / 共157页
点击查看更多>>
资源描述

《【大学课件】MCS-51单片机的功能模块ppt》由会员分享,可在线阅读,更多相关《【大学课件】MCS-51单片机的功能模块ppt(157页珍藏版)》请在金锄头文库上搜索。

1、5.1 MCS-51单片机并行单片机并行I/O口口5.2MCS-51单片机中断系统单片机中断系统5.3MCS-51单片机定时器单片机定时器/计数器计数器5.4MCS-51单片机串行接口单片机串行接口5.5思考与练习题思考与练习题第五章第五章MCS-51单片机的功能模片机的功能模块主要内容:主要内容:介绍介绍5151系列单片机主要内部功能模块:系列单片机主要内部功能模块:有并行有并行I/OI/O口、中断系统、定时口、中断系统、定时/ /计数器和串行接口。计数器和串行接口。 要求:要求: 1 1、掌握、掌握5151系列单片机的各功能模块的结构和工作系列单片机的各功能模块的结构和工作原理;原理; 2

2、 2、各模块应用程序的编写。、各模块应用程序的编写。5.1MCS-51单片机片机并行并行I/O口口 I/OI/O口的作用:口的作用:v1 1 实现实现CPUCPU与外设间的速度匹配;与外设间的速度匹配;v2 2 改变数据的传送方式(并行、串行);改变数据的传送方式(并行、串行);v3 3 改变信号的性质(改变信号的性质(A/DA/D)和信号的电平()和信号的电平(TTLTTL电平与电平与RS232RS232电平)电平)外设的编址:外设的编址:v独立编址独立编址 编址范围编址范围0000H0FFFFH0000H0FFFFH,有专有的传送指,有专有的传送指令;令;v与存储器统一编址与存储器统一编址

3、 编址范围编址范围0FF00H0FFFFH0FF00H0FFFFH,传送指,传送指令令 MOVX AMOVX A,DPTR MOVX DPTRDPTR MOVX DPTR,A A5.1MCS-51单片机片机并行并行I/O口口 I/O I/O 数据的四种传送方式数据的四种传送方式v无条件传送(同步传送)无条件传送(同步传送)v条件传送(异步传送)条件传送(异步传送)v中断传送中断传送vDMADMA传送传送5.1MCS-51单片机片机并行并行I/O口口 vMCS-51MCS-51单片机具有单片机具有4 4个双向的个双向的8 8位位I/OI/O口口P0P3P0P3,P0P0口为口为三态双向口,负载能

4、力为三态双向口,负载能力为8 8个个TTLTTL电路,电路,P1P3P1P3口为准口为准双向口双向口( (用作输入时,口线被拉成高电平,故称为准用作输入时,口线被拉成高电平,故称为准双向口双向口) ),负载能力为,负载能力为4 4个个TTLTTL电路。电路。v各口中的每一位都是由锁存器(称特殊功能寄存器各口中的每一位都是由锁存器(称特殊功能寄存器SFRSFR)、)、输出驱动器和输入缓冲器组成。这种结构,输出驱动器和输入缓冲器组成。这种结构,在数据输出时可锁存,但对输入信息是不锁存的,所在数据输出时可锁存,但对输入信息是不锁存的,所以从外部输入的信息必须保持到取数指令执行完为止。以从外部输入的信

5、息必须保持到取数指令执行完为止。 5.1.1 P05.1.1 P0口口 P0P0口是一个三态双向口,在系统扩展时,可口是一个三态双向口,在系统扩展时,可作为低作为低8 8位地址线和数据总线的分时复用口,在位地址线和数据总线的分时复用口,在其他状态下可作为通用其他状态下可作为通用I/OI/O接口,其接口,其1 1位的结构原位的结构原理如图理如图5.15.1所示,所示,P0P0口由口由8 8个这样的电路组成。个这样的电路组成。 5.1.1 P05.1.1 P0口口 图图5.15.1.1 P05.1.1 P0口口 P0P0口是一个多功能口是一个多功能8 8位口,可以字节访问,也可位口,可以字节访问,

6、也可位访问,字节访问地址为位访问,字节访问地址为80H80H,位访问地址为位访问地址为80H87H80H87H。(1) P0(1) P0口用于口用于I/OI/O口是准双向口是准双向I/OI/O口。口。 作作为为I/OI/O口口使使用用时时,控控制制信信号号应应为为“0”0”,多多路路开开关关接接通通输输出出锁锁存存器器的的 端端。同同时时与与门门关关闭闭,上上拉拉FETFET截截止止,形形成成P0P0口口的的输输出出电电路路为为漏漏极极开开路路输输出出。需需要外接上拉电阻。要外接上拉电阻。a)a)作输出口时:作输出口时: 不需要条件,可以正确的输出不需要条件,可以正确的输出b)b)作输入口时:

7、作输入口时:当当CPUCPU复位后进行输入操作时,输入信息是正确的。复位后进行输入操作时,输入信息是正确的。 当当P0P0口的某位(或整个口的某位(或整个P0P0口)先进行了输出操作,口)先进行了输出操作,而后要由输出变成输入操作方式时,必须先用输出而后要由输出变成输入操作方式时,必须先用输出指令将锁存器置指令将锁存器置“1”1”,才能保证输入信息正确。,才能保证输入信息正确。 (即是准双向的含义)(即是准双向的含义)5.1.1 P05.1.1 P0口口(2 2)P0P0口用于地址口用于地址/ /数据分时复用时是真正双向数据分时复用时是真正双向I/OI/O口。口。当控制当控制=1=1时,时,M

8、UXMUX接通地址接通地址/ /数据输出端。数据输出端。a)a)当当地地址址/ /数数据据输输出出线线置置1 1时时,“与与”门门输输出出为为1 1,上上拉拉FETFET导导通通,同同时时地地址址/ /数数据据输输出出通通过过反反相相器器输输出出0 0,控控制制下下拉拉FETFET截止,这样截止,这样A A点电位上拉,地址点电位上拉,地址/ /数据输出线为数据输出线为1 1。b)b)当当地地址址/ /数数据据输输出出线线置置0 0时时,“与与”门门输输出出为为0 0,上上拉拉FETFET截截止止,同同时时地地址址/ /数数据据输输出出通通过过反反相相器器输输出出1 1,控控制制下下拉拉FETF

9、ET导通,这样导通,这样A A点电位下拉,地址点电位下拉,地址/ /数据输出线为数据输出线为0 0。输输入入数数据据,控控制制=0=0,分分析析同同(1 1)中中的的输输入入中中的的第第一一种种情况。情况。 通通过过上上述述分分析析可可以以看看出出,此此时时的的输输出出状状态态随随地地址址/ /数数据据线线而而变变。因因此此,P0P0口口可可以以作作为为地地址址/ /数数据据复复用用总总线线使使用用(需要加地址锁存器)。此时的(需要加地址锁存器)。此时的P0P0口相当一个双向口。口相当一个双向口。5.1.2 P15.1.2 P1口口vP1P1口是一个口是一个8 8位口,可以字节也可按位访问,位

10、口,可以字节也可按位访问,其字节地址为其字节地址为90H90H,位访问地址为位访问地址为90H97H90H97H。vP1P1口是一个准双向口是一个准双向I/OI/O口,其口,其1 1位的内部结位的内部结构如图构如图5.25.2所示。所示。 5.1.2 P15.1.2 P1口口图图5.25.1.2 P15.1.2 P1口口 它在结构上与P0口的区别在于输出驱动部分,其输出驱动部分由场效应管V1与内部上拉电阻组成。当其某位输出为1时,使输出驱动器中的场效应管截止,该位的输出由内部等效的上拉电阻拉成高电平,输出1。当输出为0时,输出场效应管导通则输出引脚为低电平,输出为0。不必像P0口那样需要外接上

11、拉电阻。5.1.2 P15.1.2 P1口口v在8051/80C51单片机中,P1口只有通用I/O接口一种功能,它的每一位可以分别定义为输入或输出,其输入输出原理特性与P0口作为通用I/O接口使用时一样。P1口具有驱动4个LSTTL负载的能力。v在8052/80C52单片机中,P1口P1.0与P1.1除作为通用I/O接口线外,还具有第二功能,即P1.0可作为定时器/计数器2的外部计数脉冲输入端T2,P1.1可作为定时器/计数器2的外部控制输入端T2EX。5.1.3 P25.1.3 P2口口 P2口也是一个准双向I/O口,其1位内部结构见图5.3。在访问外部存储器时,P2口作为高8位地址输出口,

12、在其他时候作为一般I/O接口使用。5.1.3 P25.1.3 P2口口图图5.35.1.3 P25.1.3 P2口口v当作为准双向通用I/O口使用时,控制信号为低电平无效,多路转换器MUX接通锁存器Q端,锁存器Q端经反相器3接控制场效应管V1,其工作原理与P1相同,负载能力也与P1相同。v当作为外部扩展存储器的高8位地址总线使用时,控制信号应为高电平“1”有效,多路转换开关MUX接通地址信号,来自程序计数器PC的高8位地址PCH,或数据指针DPTR的高8位地址DPH经反相器3和V1反相后复原在P2.x口的引脚上,输出高8位地址A8A15。在上述情况下,口锁存器的内容不受影响,所以,取指或访问外

13、部存储器结束后,由于转换开关又接至左侧,使输出驱动器与锁存器Q端相连,引脚上将恢复原来的数据。5.1.4 P35.1.4 P3口口 P3口是一个多功能的8位口,可以字节访问也可位访问,其字节访问地址为B0H,位访问地址为B0HB7H。P3P3口的功能:口的功能: (1)可作I/O口使用,为准双向口。这方面的功能与P1口一样。 (2)每一位均具有第2功能。 5.1.4 P35.1.4 P3口口图图5.45.1.4 P35.1.4 P3口口v当P3口作为通用I/O接口时,要求第2功能输出线保持高电平,使与非门3的输出取决于口锁存器的状态。在这种情况下,P3口仍是1个准双向口,它的工作方式、负载能力

14、均与P1、P2口相同。 v当P3口作为第2功能(各引脚功能见表5.1)使用时就不能再做通用输出口使用,其锁存器Q端必须为高电平,以允许第2功能输出,在做第2功能输入时,虽仍做通用输入口,但已无实际意义。 5.1.5 5.1.5 接口的使用原则接口的使用原则1. I/O1. I/O接口的读、写、修改接口的读、写、修改每每个个I/OI/O口口均均有有两两种种“读读”方方式式:读读引引脚脚和和读读锁锁存器。存器。读引脚:读引脚:是读外部接口的电平信号,读引脚信号是读外部接口的电平信号,读引脚信号有效。真正读引脚的指令只有有效。真正读引脚的指令只有 MOV AMOV A,PxPx读读锁锁存存器器:是是

15、将将接接口口锁锁存存器器的的Q Q端端信信号号读读回回,写写锁存器信号有效。锁存器信号有效。 读读锁锁存存器器指指令令主主要要用用于于读读修修改改写写指指令令。如下列这些指令:如下列这些指令:如如: ORL ORL 、XRL XRL 、JBC JBC 、CPL CPL 、INC INC 、DEC DEC 、DJNZ DJNZ 、MOV MOV PxPx ,y ,y 、 CLR CLR Px.yPx.y和和SET SET Px.yPx.y。5.1.5 5.1.5 接口的使用原则接口的使用原则2. 使用原则vMCS-51单片机中的4个I/O口在实际使用中,一般遵循以下用法:P0口一般做系统扩展地址

16、低8位/数据复用口,P1口一般做I/O扩展口,P2口做系统扩展地址高8位和I/O口扩展的地址译码用,P3口做中断输入、串行通用口使用。v在各个口的带负载能力和接口要求上,由于P0口的输出级与P1P3口的输出级在结构上不同,所以,要求也不同。P0口的每一位可驱动8个TTL输入,在做通用I/O口使用时,输出级是开漏电路,故需外部加上拉电阻。在做地址/数据总线使用时,不需要外接上拉电阻。P1P3的输出级内部有高效的上拉电阻,每一位输出可驱动4个TTL输入。v在实际使用中,一般用户在I/O扩展时,很难计算I/O的负载能力。对扩展集成芯片,如74LS系列的一些大规模集成芯片(如8155、8255、825

17、3、8259等),都可与MCS-51直接接口。其他一些扩展用芯片,使用中可参考器件手册及典型电路。v对于一些线性元件,如键盘、码盘及LED显示等输入/输出设备,由于MCS-51单片机提供不了足够的驱动电流,应尽量设计驱动部分。5.1.5接口的使用原则接口的使用原则5.2 MCS-515.2 MCS-51单片机中断系统单片机中断系统 5.2 MCS-515.2 MCS-51单片机中断系统单片机中断系统一、中断的基本概念一、中断的基本概念“中断中断”是处理事件的一个是处理事件的一个“过程过程”,这一,这一过程一般是由计算机内部或外部某种紧急事件引过程一般是由计算机内部或外部某种紧急事件引起并向主机

18、发出请求处理的信号,主机在允许情起并向主机发出请求处理的信号,主机在允许情况下响应请求,暂停正在执行的程序,保存好况下响应请求,暂停正在执行的程序,保存好“断点断点”处的现场,转去执行中断处理程序,处理处的现场,转去执行中断处理程序,处理完后恢复现场,自动返回到原断点处,继续执行完后恢复现场,自动返回到原断点处,继续执行原程序。这一处理过程就称为原程序。这一处理过程就称为“中断中断”。 5.2 MCS-515.2 MCS-51单片机中断系统单片机中断系统中断程序与子程序的区别:中断程序与子程序的区别:调用中断服务程序的过程类似于调用子程序,调用中断服务程序的过程类似于调用子程序,其区别在于调用

19、子程序在程序中是事先安排其区别在于调用子程序在程序中是事先安排好的,而何时调用中断服务程序事先却无法好的,而何时调用中断服务程序事先却无法确定,因为确定,因为“中断中断”的发生是由外部因素决的发生是由外部因素决定的,程序中无法事先安排调用指令,因此,定的,程序中无法事先安排调用指令,因此,调用中断服务程序的过程是由硬件自动完成调用中断服务程序的过程是由硬件自动完成的。的。5.2.1 中断的基本概念图图5.5中断执行过程中断执行过程1. 1. 中断源:中断源就是中断请求信号的来源。中断源:中断源就是中断请求信号的来源。2. 2. 中断响应与返回中断响应与返回3. 3. 优先级控制优先级控制图图5

20、.6二级中断嵌套的中断过程二级中断嵌套的中断过程5.2.1 中断的基本概念二、二、 中断源和中断请求标志中断源和中断请求标志 中断源是指在计算机系统中向中断源是指在计算机系统中向CPUCPU发出中断请发出中断请求的来源求的来源, , 中断可以人为设定中断可以人为设定, , 也可以是为响应也可以是为响应突发性随机事件而设置。通常有突发性随机事件而设置。通常有I/OI/O设备、实时设备、实时控制系统中的随机参数和信息故障源等。可分为控制系统中的随机参数和信息故障源等。可分为外部中断和内部中断。外部中断和内部中断。5.2.2 中断源和中断请求标志5.2.2 中断源和中断请求标志图图5.7 5.7 中

21、断系统结构中断系统结构IT0(IT1)IT0(IT1):外部中断:外部中断0(0(或或1)1)触发方式控制位。触发方式控制位。IT0(IT0(或或IT1)=0IT1)=0,则选择外部中断为电平触发方式,低电平有效;则选择外部中断为电平触发方式,低电平有效;IT0(IT0(或或IT1)=1IT1)=1,则选择外部中断为边沿触发方式,负跳沿有效。则选择外部中断为边沿触发方式,负跳沿有效。这两位由用户用根据需要用这两位由用户用根据需要用软件编程软件编程写入写入“1 1”或或“0 0”,进而控制,进而控制外中断请求信号方式。可以使用字节操指令,也可用位操作指令:外中断请求信号方式。可以使用字节操指令,

22、也可用位操作指令:CLR IT0 CLR IT0 ; 定义外中断定义外中断0 0为电平触发方式。为电平触发方式。ORL TCON ORL TCON ,#05H#05H; 定义两外中断均为脉冲触发方式定义两外中断均为脉冲触发方式5.2.2 中断源和中断请求标志1 1外部中断外部中断由由P3.2P3.2、 P3.3P3.3输入中断请求信号,外部中断请求有两种触发方式:输入中断请求信号,外部中断请求有两种触发方式:电平触发及边沿触发电平触发及边沿触发。用户可以通过对特殊功能寄存器。用户可以通过对特殊功能寄存器TCONTCON中中IT0IT0和和IT1IT1位的编程来选择。相应位定义格式如下:位的编程

23、来选择。相应位定义格式如下: IE0(IE1)IE0(IE1):外部中断外部中断0(0(或或1)1)的中断请求标志位。的中断请求标志位。( (硬件置硬件置位、硬件复位位、硬件复位) ) IE0(IE1)=1 IE0(IE1)=1,表示表示 ( )( )检测到有效检测到有效的中断请求信号;的中断请求信号; IE0(IE1)=0IE0(IE1)=0,表示表示 ( )( )上无有效的中上无有效的中断请求信号。断请求信号。5.2.2 中断源和中断请求标志2 2内部中断内部中断内部中断有:内部中断有:定时器定时器/ /计数器计数器T0/T1T0/T1的溢出中断,的溢出中断,串行口的发送串行口的发送/ /

24、接收中断。接收中断。 T0/T1T0/T1的溢出中断标志位的溢出中断标志位TF0TF0、 TF1TF1 :对外部脉冲计:对外部脉冲计数由数由P3.4 P3.4 、P3.5P3.5输入脉冲信号。当输入脉冲信号。当T0/T1T0/T1计数到由全计数到由全1 1变变为全为全0 0时,由时,由硬件自动置位硬件自动置位TCONTCON的的TF0TF0或或TF1TF1,向,向CPUCPU申请申请中断。中断。 CPUCPU响应中断后能自动撤除中断请求信号响应中断后能自动撤除中断请求信号( (硬件复硬件复位位) )。 5.2.2 中断源和中断请求标志 串行口的中断标志位串行口的中断标志位TI TI 、RIRI

25、 :当串行口发送完或接:当串行口发送完或接收完一帧信息后,通过接口硬件收完一帧信息后,通过接口硬件自动置位自动置位SCONSCON的的TITI或或RIRI位向位向CPUCPU申请的。当申请的。当CPUCPU响应中断后,需用户采用响应中断后,需用户采用软件方软件方法清零法清零,以便撤除中断请求信号。,以便撤除中断请求信号。5.2.2 中断源和中断请求标志串行口控制器串行口控制器SCONSCONTITI:串行口发送中断源。发送完一帧,由串行口发送中断源。发送完一帧,由硬件置位硬件置位。响应。响应中断后,必须用中断后,必须用软件清软件清0 0。RIRI:串行口接收中断源。接收完一帧,由串行口接收中断

26、源。接收完一帧,由硬件置位硬件置位。响应。响应中断后,必须用中断后,必须用软件清软件清0 0。5.2.2 中断源和中断请求标志三、三、中断系统控制中断系统控制1 1中断允许控制寄存器中断允许控制寄存器 MCS-51MCS-51单片机对各中断源的中断开放单片机对各中断源的中断开放( (允许允许) )或关闭或关闭( (屏屏蔽蔽) )是由内部的中断允许寄存器是由内部的中断允许寄存器IEIE的各位来进行两级控制的各位来进行两级控制的。所谓两级控制是指各个中断源的允许控制位与一个中的。所谓两级控制是指各个中断源的允许控制位与一个中断允许总控位断允许总控位EAEA配合实现对中断请求的控制。配合实现对中断请

27、求的控制。 EAEA(IE.7IE.7):允许禁止全部中断。当允许禁止全部中断。当EA=0EA=0,则禁止所有则禁止所有中断的响应;当中断的响应;当EAEA1 1,则各中断源的响应与否取决于各自则各中断源的响应与否取决于各自的中断控制位的状态。的中断控制位的状态。5.2.3 中断系统控制5.2.3 中断系统控制 X(IE.6X(IE.6):):保留位,无意义。保留位,无意义。ET2(IE.5ET2(IE.5):定时计数器定时计数器2 2(80528052型单片机)的溢出或捕型单片机)的溢出或捕获中断响应控制位。获中断响应控制位。ET2=0ET2=0则禁止中断响应(关中断);则禁止中断响应(关中

28、断);ET2=1ET2=1为允许中断响应(开中断)。为允许中断响应(开中断)。ESES(IE.4IE.4):串行通信接收发送中断响应控制位。串行通信接收发送中断响应控制位。ESES0 0,禁止中断响应(关中断)禁止中断响应(关中断) ; ES=1ES=1,允许中断响应允许中断响应(开中断)(开中断) 。ETiETi(IE.3, IE.1 IE.3, IE.1 ):定时器计数器定时器计数器i(i=0i(i=0、1)1)的溢出的溢出中断响应控制位。中断响应控制位。ETiETi=0=0,禁止中断响应(关中断)禁止中断响应(关中断) ;ETiETi=1=1,则允许中断响应(开中断)则允许中断响应(开中

29、断) 。EXiEXi(IE.2 IE.2 、IE.0 IE.0 ):外部中断外部中断i i( )中断响应控制)中断响应控制位。位。 EXiEXi=0=0,禁止中断响应(关中断)禁止中断响应(关中断) ; EXiEXi=1=1则允则允许中断响应(开中断)许中断响应(开中断) 。5.2.3 中断系统控制例如例如: :要使要使INT0INT0开中开中( (其余关中其余关中) ),可执行下列指令:,可执行下列指令: MOV IEMOV IE,#1000000lB #1000000lB ; 或者:或者: SETB EA SETB EA ; SETB EX0 SETB EX0 ;5.2.3 中断系统控制

30、2 2中断优先级控制中断优先级控制 CPUCPU同一时间只能响应一个中断请求。若同时来了两同一时间只能响应一个中断请求。若同时来了两个或两个以上中断请求,就必须有先有后。个或两个以上中断请求,就必须有先有后。MCS-51MCS-51单片机单片机的中断源有两个用户可控的中断优先级,即的中断源有两个用户可控的中断优先级,即高、低中断优高、低中断优先级先级,从而实现中断嵌套。,从而实现中断嵌套。5.2.3 中断系统控制CPUCPU响应中断的原则是:响应中断的原则是:1 1)先高后低)先高后低 如果多个中断请求同时出现,如果多个中断请求同时出现,CPUCPU首先响应优先级别最首先响应优先级别最高的中断

31、请求;高的中断请求;2 2)高可断低)高可断低 高优先级的中断请求可中断正在执行的低优先级中断服高优先级的中断请求可中断正在执行的低优先级中断服务程序,实现中断嵌套;务程序,实现中断嵌套;3 3)同低不断)同低不断 同级或低优先级的中断请求不能中断正在执行的中断服同级或低优先级的中断请求不能中断正在执行的中断服务程序。如果有两个或两个以上的同一优先级别的中断源务程序。如果有两个或两个以上的同一优先级别的中断源同时向同时向CPUCPU申请中断,则这些同级中断源的中断优先权按申请中断,则这些同级中断源的中断优先权按CPUCPU对内部硬件的查询次序决定对内部硬件的查询次序决定 。5.2.3 中断系统

32、控制IPIP寄存器的格式如下:寄存器的格式如下: ( (可通过软件设置,定义各中断可通过软件设置,定义各中断源的中断优先级别源的中断优先级别) )、(IP.6IP.6、IP.7IP.7):保留位,无定义。):保留位,无定义。PT2PT2(IP.5IP.5):T2T2的中断优先级设置位。通过编程设置的中断优先级设置位。通过编程设置 PT2=1PT2=1,则定义为高优先级中断;设置,则定义为高优先级中断;设置PT2=0PT2=0,则定,则定义为低优先级中断。义为低优先级中断。PSPS(IP.4IP.4):串行通信中断优先级设置位。软件设置:串行通信中断优先级设置位。软件设置 PS=1PS=1,则定

33、义为高优先级中断;设,则定义为高优先级中断;设PS=0PS=0,则定义为,则定义为低优先级中断。低优先级中断。5.2.3 中断系统控制PTiPTi(IP.3IP.3、IP.1IP.1):TiTi中断优先级设置位。软件设置中断优先级设置位。软件设置PTiPTi=1=1,则定义为高优先级中断;设置则定义为高优先级中断;设置PTiPTi=0=0,则则定义为低优先级中断。定义为低优先级中断。 PXiPXi(IP.2IP.2、IP.0IP.0):外部中断外部中断i i中断优先级设置位。中断优先级设置位。软件设置软件设置PXiPXi=1=1,则定义为高优先级中断;设置则定义为高优先级中断;设置PXiPXi

34、=0=0,则定义为低优先级中断。则定义为低优先级中断。例如例如:若要将若要将INT1INT1、串行口设置为高优先级,其余中断、串行口设置为高优先级,其余中断源设置为低优先级,可执行下列指令:源设置为低优先级,可执行下列指令: MOV IPMOV IP,#00010100B#00010100B;5.2.3 中断系统控制 当同时有两个或两个以上优先级相同的中断请求时,当同时有两个或两个以上优先级相同的中断请求时,则由内部按查询优先顺序来确定该响应的中断请求,其优则由内部按查询优先顺序来确定该响应的中断请求,其优先顺序由高向低顺序排列。优先顺序排列如下:先顺序由高向低顺序排列。优先顺序排列如下: 中

35、断优先原则:中断优先原则:1 1、低级不打断高级、低级不打断高级2 2、高级不睬低级、高级不睬低级3 3、同级不能打断、同级不能打断4 4、同级、同时中断,、同级、同时中断,事先约定。事先约定。 5.2.4 中断处理过程四、四、 中断处理过程中断处理过程中断处理过程大致可分为四步:中断请求、中断响中断处理过程大致可分为四步:中断请求、中断响应、中断服务、中断返回。应、中断服务、中断返回。1. 1. 中断请求中断请求中断源发出中断请求信号,相应的中断请求标志位中断源发出中断请求信号,相应的中断请求标志位( (在中在中断允许控制寄存器断允许控制寄存器IEIE中中) )置置“1 1”。5.2.4 中

36、断处理过程2 2中断响应中断响应1)1)响应的条件响应的条件 CPUCPU在每个机器周期的在每个机器周期的S6S6按照优先级查询按照优先级查询中断标志位,当相应中断源有中断请求且满足如下条件之中断标志位,当相应中断源有中断请求且满足如下条件之一时,一时,MSC-51MSC-51单片机响应中断。单片机响应中断。(1)(1)无同级或高级中断正在处理或无同级或高级中断正在处理或CPUCPU处在非中断响应状态,处在非中断响应状态,CPUCPU处于开中断处于开中断( (即即EA=1)EA=1)状态且相应中断是开放的状态且相应中断是开放的( (中断允中断允许寄存器许寄存器IEIE相应位置相应位置1)1)。

37、(2)(2)若若CPUCPU正在响应某一中断请求时又来了新的中断请求,正在响应某一中断请求时又来了新的中断请求,则应满足高级中断可以中断低级中断,实现中断嵌套;低则应满足高级中断可以中断低级中断,实现中断嵌套;低级中断只能等待现有中断服务完成后再被响应的原则。级中断只能等待现有中断服务完成后再被响应的原则。(3)(3)若若CPUCPU现行执行的指令为现行执行的指令为RETIRETI或任何访问或任何访问IEIE、IP(IP(如如SETB EA)SETB EA)的指令时,则执行完该指令且紧随其后的另一的指令时,则执行完该指令且紧随其后的另一条指令也已执行完毕后才响应该中断请求。条指令也已执行完毕后

38、才响应该中断请求。5.2.4 中断处理过程2)2)中断响应过程中断响应过程 首先首先,根据中断源的优先级高低,对相应的优先级状,根据中断源的优先级高低,对相应的优先级状态触发器置态触发器置1 1; 然后然后,保护断点,把当前程序计数器,保护断点,把当前程序计数器PCPC的内容压入堆的内容压入堆栈。栈。 其次其次,封锁同级和低级中断,以防在响应中断期间受其,封锁同级和低级中断,以防在响应中断期间受其他中断的干扰,清除相应的中断请求标志位(串行口中断他中断的干扰,清除相应的中断请求标志位(串行口中断请求标志请求标志RIRI和和TITI除外)除外) ; 最后最后,根据中断源入口地址,转入执行相应中断

39、服务程,根据中断源入口地址,转入执行相应中断服务程序,各中断服务程序的入口地址见表序,各中断服务程序的入口地址见表5.15.1。 5.2.4 中断处理过程中断源入口地址INT00003HT0000BHINT10013HT1001BHRI/TI0023H表表5.1 5.1 中断源入口地址中断源入口地址5.2.4 中断处理过程3)3)中断响应时间中断响应时间 所谓中断响应时间是指所谓中断响应时间是指CPUCPU检测到中断请求信号到转检测到中断请求信号到转入中断服务程序入口所需要的机器周期数。入中断服务程序入口所需要的机器周期数。 MCS-51MCS-51单片机响应中断的最短时间为单片机响应中断的最

40、短时间为3 3个机器周期,个机器周期,时间最长需要时间最长需要8 8个机器周期。个机器周期。 5.2.4 中断处理过程3 3 执行中断服务程序执行中断服务程序 中断服务程序应包含以下几部分:中断服务程序应包含以下几部分: 保护现场:保护现场: 中断时刻单片机存储单元中的数据或状态中断时刻单片机存储单元中的数据或状态. . (2)(2)允许中断和禁止中断允许中断和禁止中断 在在CPUCPU执行当前中断服务程序的过程中,往往又会执行当前中断服务程序的过程中,往往又会 有其它中断源的中断请求出现。有其它中断源的中断请求出现。 (3)(3)执行中断服务程序主体,完成相应操作执行中断服务程序主体,完成相

41、应操作 (4)(4)恢复现场恢复现场5.2.4 中断处理过程4 4 中断返回中断返回 在中断服务程序最后,必须安排一条中断返回指令在中断服务程序最后,必须安排一条中断返回指令RETIRETI,当,当CPUCPU执行执行RETIRETI指令后,自动完成下列操作:指令后,自动完成下列操作: 恢复断点地址。恢复断点地址。 开放同级中断,以便允许同级中断源请求中断。开放同级中断,以便允许同级中断源请求中断。5.2.5 中断请求的撤除五、中断请求的撤除五、中断请求的撤除 中断源发出中断请求,相应中断请求标志置中断源发出中断请求,相应中断请求标志置“1 1”。 CPUCPU响应中断后,响应中断后,必须必须

42、清除中断请求清除中断请求“1 1”标志。否则中断标志。否则中断响应返回后,将再次进入该中断,引起死循环出错。响应返回后,将再次进入该中断,引起死循环出错。 对定时对定时/ /计数器计数器T0T0、T1T1中断,外中断边沿触发方式,中断,外中断边沿触发方式,CPUCPU响应中断时就用响应中断时就用硬件自动清除硬件自动清除了相应的中断请求标志。了相应的中断请求标志。 对外中断电平触发方式,需要采取对外中断电平触发方式,需要采取软硬结合软硬结合的方法消除的方法消除后果。后果。 对串行口中断,用户应在串行中断服务程序中用对串行口中断,用户应在串行中断服务程序中用软件清软件清除除TITI或或RIRI。5

43、.2.6 中断的应用及编程六、中断的应用及编程六、中断的应用及编程 中断初始化中断初始化 设置堆栈指针设置堆栈指针SPSP 定义中断优先级定义中断优先级 定义外中断触发方式定义外中断触发方式 开放中断开放中断 安排好等待中断或中断发生前主程序应完安排好等待中断或中断发生前主程序应完成的操作内容。成的操作内容。5.2.6 中断的应用及编程 中断服务主程序中断服务主程序 在中断服务入口地址设置一条跳转指令,转在中断服务入口地址设置一条跳转指令,转移到中断服务程序的实际入口处。移到中断服务程序的实际入口处。 根据需要保护现场。根据需要保护现场。 中断源请求中断服务要求的操作。中断源请求中断服务要求的

44、操作。 恢复现场。与保护现场相对应,注意先进后恢复现场。与保护现场相对应,注意先进后出、后进先出操作原则。出、后进先出操作原则。 中断返回,最后一条指令必须是中断返回,最后一条指令必须是RETIRETI。5.2.6 中断的应用及编程例例5-15-1若要求外部中断若要求外部中断 引脚为边沿触发方式,以及引脚为边沿触发方式,以及处于高中断优先级,编写中断系统初始化程序。处于高中断优先级,编写中断系统初始化程序。解:解:程序的编制有两种方法,一种是采用位操作指令进行程序的编制有两种方法,一种是采用位操作指令进行编制,另一种是字节型指令编制。程序分别如下。编制,另一种是字节型指令编制。程序分别如下。方

45、法一:方法一:SETB EASETB EASETBSETBEX1EX1; ;开开INT1INT1中断中断SETB PX1SETB PX1; ;令令INT1INT1为高优先级为高优先级SETBSETBIT1IT1; ;令令INT1INT1为边沿触发方式为边沿触发方式方法二:方法二:MOVMOVIE,IE,#84H#84H; ;开开INT1INT1中断中断ORLORLIP,IP,#04H#04H; ;令令INT1INT1为高优先级为高优先级ORL TCON, #04HORL TCON, #04H; ;令令INT1INT1为边沿触发方式为边沿触发方式5.2.6 中断的应用及编程例例5-25-2: 单

46、片机单片机通过通过P1P1口以中断方式向外设输出数据,当外设准口以中断方式向外设输出数据,当外设准备好接收数据时,就发出选通信号,经触发器和非门至备好接收数据时,就发出选通信号,经触发器和非门至INT0INT0,如下图所示。请编制相应程序。如下图所示。请编制相应程序。P1口P3.0QDCP SD外设选通信号接地INT0数据至外设80315.2.6 中断的应用及编程解解:当当外外设设准准备备好好接接收收一一个个数数据据后后,发发出出选选通通信信号号,使使触触发发器器输输出出高高电电平平后后经经非非门门至至INT0INT0引引脚脚,向向CPUCPU发发出出中中断断请请求求,CPUCPU响响应应这这

47、个个中中断断请请求求后后,在在中中断断处处理理程程序序中中先先撤撤除除中中断断请请求求信信号号,( (通通过过P3.0=1P3.0=1,使使INT0=1)INT0=1)再再由由P1P1口口将将单单片片机内部的数据输出到外设。机内部的数据输出到外设。 ORG 0000HORG 0000HSTART: LJMP MAINSTART: LJMP MAIN ORG 0003H ORG 0003H LJMP IINT0 LJMP IINT0 ORG 0030H ; ORG 0030H ;主程序主程序MAIN: CLR IT0 ;MAIN: CLR IT0 ;低电平触发低电平触发 SETB EASETB

48、EA SETB EX0 ; SETB EX0 ;开中断开中断 SETB PX0SETB PX0 ;优先级设置;优先级设置 MOV DPTR, #1000H MOV DPTR, #1000H ;外设首地址;外设首地址 .5.2.6 中断的应用及编程 ORG 0100HORG 0100HIINT0: IINT0: PUSH PSW ; PUSH PSW ;中断处理程序中断处理程序 PUSH ACCPUSH ACC CLR P3.0 CLR P3.0 NOP NOP NOP NOP SETB P3.0 ; SETB P3.0 ;撤除撤除INT0INT0 MOV A, P1 ; MOV A, P1 ;

49、输入数据输入数据 MOVX DPTR, A ;MOVX DPTR, A ;保存数据保存数据 INC DPTRINC DPTR . . POP ACC ; POP ACC ;恢复现场恢复现场 POP PSWPOP PSW RETI ; RETI ;返回主程序返回主程序5.3 MCS-515.3 MCS-51单片机定时器单片机定时器/ /计数器计数器5.3 MCS-515.3 MCS-51单片机定时器单片机定时器/ /计数器计数器软件定时:循环程序,定时准确,无需硬件电软件定时:循环程序,定时准确,无需硬件电路,但增加路,但增加CPUCPU开销开销硬件定时:硬件电路实现,不占用硬件定时:硬件电路实

50、现,不占用CPUCPU时间,时间,使用不够方便使用不够方便可编程定时可编程定时/ /计数器:对系统计数器:对系统时钟脉冲时钟脉冲的计数的计数定时,计数值通过程序设定,定时准确,使用定时,计数值通过程序设定,定时准确,使用灵活方便灵活方便5.3 MCS-515.3 MCS-51单片机定时器单片机定时器/ /计数器计数器 定时器定时器/ /计数器可以是独立的集成芯片,也计数器可以是独立的集成芯片,也可以构成于单片机内部,但无论何种形式都具可以构成于单片机内部,但无论何种形式都具有以下共性:有以下共性:1 1、定时、计数器的核心部件是一个、定时、计数器的核心部件是一个加加1 1计数器计数器。两种工作

51、方式的区别在于计数脉冲来。两种工作方式的区别在于计数脉冲来源源, ,定时器定时器/ /计数器可以工作于计数方式也可以计数器可以工作于计数方式也可以工作于定时方式。书工作于定时方式。书P81P812 2、定时器、定时器/ /计数器的计数值在范围内是计数器的计数值在范围内是可变的,这取决于可变的,这取决于计数器的位数计数器的位数。计数的最大。计数的最大值也就限定了定时的最大值。书值也就限定了定时的最大值。书P85P853 3、在到达设定的定时或计数值时发出、在到达设定的定时或计数值时发出溢溢出中断申请出中断申请,实现定时控制。,实现定时控制。PPT 5.2PPT 5.2节节5.3MCS-51单片机

52、定时器单片机定时器/计数器计数器 在在MCS-51MCS-51单片机内部有两个单片机内部有两个1616位定时器位定时器/ /计数器计数器T0T0和和T1T1,它们均可作为定时器或计数它们均可作为定时器或计数器使用,均具有器使用,均具有4 4种不同的工作方式,用户可种不同的工作方式,用户可通过对特殊功能寄存器的编程,方便地选择通过对特殊功能寄存器的编程,方便地选择适当的工作方式及设定适当的工作方式及设定T0T0或或T1T1工作于定时器工作于定时器还是计数器。还是计数器。(1 1):何时控制启动计数器?):何时控制启动计数器? 问题:问题: (2 2):如何控制是定时还是计数?):如何控制是定时还

53、是计数?(3 3):如何控制定时):如何控制定时/ /计数的长短?计数的长短?5.3.1T0、T1的结构的结构一、T0、T1的结构1 1内部结构内部结构外部输入脉冲图图5.85.8 1 1 加法计数器的初值可以由程序设定,设置的初加法计数器的初值可以由程序设定,设置的初值不同,加法器达到溢出所需的计数值或定时值不同,加法器达到溢出所需的计数值或定时时间就不同。时间就不同。 2 2 对定时器对定时器/ /计数器工作模式、工作方式的设定计数器工作模式、工作方式的设定及控制是通过方式选择寄存器及控制是通过方式选择寄存器TMODTMOD和控制寄存和控制寄存器器TCONTCON这两个特殊功能寄存器来完成

54、的。这两个特殊功能寄存器来完成的。 5.3.1T0、T1的结构的结构2 2定时器定时器/ /计数器方式选择寄存器计数器方式选择寄存器TMODTMOD 定时器定时器/ /计数器计数器T0T0、T1T1都有都有4 4种工作方式,可通过程种工作方式,可通过程序对序对TMODTMOD的编程来设置。其位定义如下:的编程来设置。其位定义如下:5.3.1T0、T1的结构的结构C/ :定时或计数功能选择位,定时或计数功能选择位,“1”1”时为计数方式;时为计数方式;“0”0”时为定时方式。时为定时方式。M1、M0:定时器定时器/ /计数器工作方式选择位,计数器工作方式选择位,5.3.1T0、T1的结构的结构5

55、.3.1T0、T1的结构的结构GATE:门控位,用于控制定时器门控位,用于控制定时器/ /计数器的启动是计数器的启动是否受外部引脚中断请求信号的影响。否受外部引脚中断请求信号的影响。当当GATE=0GATE=0时,时,TRxTRx=1=1,启动,启动TxTx计数;计数;TRxTRx=0=0,停止,停止TxTx计数。计数。当当GATE=1GATE=1时,仅当时,仅当TRxTRx=1=1且且 =1=1时,才允许时,才允许TxTx计数,该位由软件进行设置。计数,该位由软件进行设置。 GATE=0 GATE=0 TRxTRx=1=1 一般情况下,选用该方法一般情况下,选用该方法 3 3定时器定时器/

56、/计数器控制寄存器计数器控制寄存器TCONTCONTF0(TF1):T0(T1)T0(T1)溢出中断标志位。当溢出中断标志位。当T0/T1T0/T1启动计数启动计数后,从初值开始加后,从初值开始加1 1计数,当计数,当T0(T1)T0(T1)计数溢出时,由硬件计数溢出时,由硬件将该位置位,并在允许中断的情况下,向将该位置位,并在允许中断的情况下,向CPUCPU发出中断请发出中断请求信号,求信号,CPUCPU响应中断转向中断服务程序时,由硬件自动响应中断转向中断服务程序时,由硬件自动将该位清零,将该位清零,TF0(TF1)TF0(TF1)也可以由程序查询或清零。也可以由程序查询或清零。5.3.1

57、T0、T1的结构的结构5.3.1T0、T1的结构的结构TR0(TR1)TR0(TR1):T0(T1)T0(T1)运行控制位。运行控制位。当当GATE=0GATE=0时,时,TRxTRx=1=1,启动启动TxTx计数;计数;TRxTRx=0=0,停停止计数。止计数。当当GATE=1GATE=1时,仅当时,仅当TRxTRx=1=1且且 =1=1时,才允许时,才允许TxTx计数,该位由软件进行设置。计数,该位由软件进行设置。控制字中其余用于控制字中其余用于 中断控制。中断控制。5.3.2T0、T1的的4种工作方式种工作方式 二、二、T0T0、T1T1的的4 4种工作方式种工作方式 T0T0和和T1T

58、1都具有都具有4 4种工作方式,当工作于方式种工作方式,当工作于方式0 0、1 1、2 2时,时,T0T0和和T1T1功能相同,但工作在功能相同,但工作在3 3时,时,其功能不同。下面分别介绍这其功能不同。下面分别介绍这4 4种工作方式。种工作方式。1 1工作方式工作方式0 0(M1M0=00M1M0=00) 定时定时/ /计数方式计数方式0 0是是1313位计数器,即位计数器,即THxTHx高高8 8位位( (作计数器作计数器) )和和TLxTLx的低的低5 5位位(32(32分频的定标器分频的定标器) )构成,构成, TLxTLx的高的高3 3位未用。位未用。(x=0(x=0或或1)1)

59、计数时,计数时,TLxTLx的低的低5 5位溢出后向位溢出后向THxTHx进位,进位, THxTHx溢出后将溢出后将TFxTFx置位,并向置位,并向CPUCPU申请中断。申请中断。图图5.9 5.9 定时定时/ /计数方式计数方式0 0:1313位计数器示意图位计数器示意图5.3.2T0、T1的的4种工作方式种工作方式2 2工作方式工作方式1 (M1M0=01)1 (M1M0=01) 由由THxTHx和和TLxTLx组成组成1616位计数器。其组成结构与定位计数器。其组成结构与定时计数方式时计数方式0 0完全相同,但计数范围比定时计完全相同,但计数范围比定时计数方式数方式0 0扩大了很多。扩大

60、了很多。 计数信号从计数信号从TLxTLx的低位输入,计数每溢出一次,的低位输入,计数每溢出一次,THxTHx计数器加计数器加1 1。当。当1616位由全位由全“1 1”变成全变成全“0 0”时,时,最高位产生溢出,置位最高位产生溢出,置位TFxTFx,向主机请求中断向主机请求中断。图图5.10 5.10 定时计数方式定时计数方式1 1:1616位计数器示意图位计数器示意图5.3.2T0、T1的的4种工作方式种工作方式5.3.2T0、T1的的4种工作方式种工作方式模式模式0 0、1 1的特点:的特点:v1313位和位和1616位的计数器模式。位的计数器模式。v启动后,从某一个初值的基础上进行启

61、动后,从某一个初值的基础上进行“加一加一”计数。当计到计数。当计到“全全”时再来一时再来一个计数脉冲,计数器就会产生一个个计数脉冲,计数器就会产生一个“溢溢出出”即即TFxTFx=1=1,此时计数器本身为,此时计数器本身为“全全零零”。v如果需要重复性的完成某一值的定时或如果需要重复性的完成某一值的定时或计数,需要在每一次计数前不断的重新计数,需要在每一次计数前不断的重新预装初值,称之为预装初值,称之为“软件重装初值软件重装初值”。5.3.2 T0、T1的4种工作方式3 3工作方式工作方式2 (M1M0=10)2 (M1M0=10) TLxTLx自动设置初始值自动设置初始值a)a)由由TLxT

62、Lx作为作为8 8位计数器,位计数器,THxTHx作为计数初值寄存作为计数初值寄存器,设置初值时同时送器,设置初值时同时送THxTHx和和TLxTLx。b)b)TLxTLx进行加进行加1 1计数,在计数溢出时,不仅置溢出计数,在计数溢出时,不仅置溢出标志标志TFxTFx,还自动将还自动将THxTHx中的内容自动送入中的内容自动送入TLxTLx,使,使TLxTLx重新从初值开始计数。重新从初值开始计数。THxTHx的内容可由的内容可由软件置入,且在计数器工作期间其值不变。非软件置入,且在计数器工作期间其值不变。非常适合进行重复性定时的场合,如产生连续方常适合进行重复性定时的场合,如产生连续方波信

63、号等。编成中省去了软件重装初值的麻烦波信号等。编成中省去了软件重装初值的麻烦 。c)c)方式方式2 2适用于产生固定时间间隔的控制脉冲,适用于产生固定时间间隔的控制脉冲,也可以做为串口波特率发生器。也可以做为串口波特率发生器。5.3.2 T0、T1的4种工作方式图图5.11 5.11 定时定时/ /计数方式计数方式2 2:8 8位自动再装入计数器示意图位自动再装入计数器示意图5.3.2 T0、T1的4种工作方式4 4工作方式工作方式3 (M1M0=113 (M1M0=11)()(只有只有T0T0有方式有方式3)3)a)a)将定时器计数器将定时器计数器T0T0分成两个独立的分成两个独立的8 8位

64、计数器,用位计数器,用TL0TL0组成完整的组成完整的8 8位定时器计数器(既可以定时,又位定时器计数器(既可以定时,又可以计数),用可以计数),用TH0TH0组成只能定时的组成只能定时的8 8位定时器。位定时器。TL0TL0占占用原用原T0T0的各个控制位、引脚和中断标志;的各个控制位、引脚和中断标志;TH0TH0分别借用分别借用了定时器了定时器T1T1的的TR1TR1、TF1TF1和和ET1ET1为自己服务,使为自己服务,使TH0TH0能象能象TL0TL0那样用那样用TR1TR1启动定时,并用启动定时,并用TF1TF1来作为来作为TH0TH0的溢出中的溢出中断的标志。断的标志。T1T1无方

65、式无方式3 3,若硬设为方式,若硬设为方式3 3,则,则T1T1立即停立即停止计数。止计数。 b)b)T0T0为方式为方式3 3时,时,T1T1可为方式可为方式0202,仅用,仅用T1T1的的C/TC/T位进行控位进行控制,计数器溢出时,只能将输出送入串口或不用于中制,计数器溢出时,只能将输出送入串口或不用于中断的场合。适用场合:断的场合。适用场合:T0T0较少选用方式较少选用方式3 3,只在,只在T1T1用作用作波特率发生器时,波特率发生器时,T0T0才选作方式才选作方式3 3,T1T1常设为方式常设为方式2 2的的波特率发生器。波特率发生器。5.3.2 T0、T1的4种工作方式图图5.12

66、 5.12 定时定时/ /计数方式计数方式3 3:二个:二个8 8位计数器示意图位计数器示意图5.3.2 T0、T1的4种工作方式图图5.13 5.13 计数格式计数格式5.3.3 定时器/计数器应用举例三、定时器三、定时器/ /计数器应用举例计数器应用举例1. 1. 初始化步骤初始化步骤通常情况下设置顺序大致如下:通常情况下设置顺序大致如下:(1 1)工作方式控制字()工作方式控制字(TMODTMOD)的设置;的设置;(2 2)计数初值的计算及装入)计数初值的计算及装入TLxTLx、THxTHx;(3 3)中断允许位)中断允许位ETxETx、EAEA的设置,使主机开放中的设置,使主机开放中断

67、;断;(4 4)给中断优先级寄存器)给中断优先级寄存器IPIP选送中断优先级字,选送中断优先级字,以设定中断优先级以设定中断优先级 ;(5 5)启停位)启停位TRxTRx的设置等。的设置等。 5.3.3 定时器/计数器应用举例2. 2. 计数器初值计算方法计数器初值计算方法 假设将计数器计满为假设将计数器计满为0 0所需要的计数值为所需要的计数值为N N,应装入的计数初值为应装入的计数初值为X X,n n为计数器的位数,则:为计数器的位数,则:X=2X=2n n-N -N 其中其中n n与计数器工作方式有关与计数器工作方式有关。在方式。在方式0 0时时n=13n=13,在方式在方式1 1时时n

68、=16n=16,在方式在方式2 2和方式和方式3 3时时n=8n=8。5.3.3 定时器/计数器应用举例3. 3. 定时器初值计算方法定时器初值计算方法假设定时时间为假设定时时间为T T,机器周期为机器周期为TpTp,即,即12/12/晶振频晶振频率。率。X X为定时器的定时初值,则:为定时器的定时初值,则: T=(2T=(2n n-X)Tp -X)Tp X=2 X=2n n-T/Tp (n-T/Tp (n同上同上) ) 再将计算出的初值转换为二进制数再将计算出的初值转换为二进制数TBTB,然后再分别然后再分别送入送入THiTHi、TLiTLi(对于对于T0T0,i=0i=0;对于对于T1T1

69、,i=1i=1)5.3.3 定时器/计数器应用举例例例5-35-3:设定时时间:设定时时间T=5msT=5ms,机器周期机器周期TpTp=2s=2s,则则可求得计数次数(可求得计数次数(T/TPT/TP)为)为5ms/2 s=25005ms/2 s=2500次。次。P85 P85 例例5-25-2v选用方式选用方式0 0: n=13n=13,应设置计数初值应设置计数初值X=2X=21313-(T/Tp)=8192-2500=5692,-(T/Tp)=8192-2500=5692,变成二进制数为变成二进制数为(1011000111100)B(1011000111100)B MOV THi,#0B

70、1H MOV THi,#0B1H ;送高送高8 8位位 MOV TLi,#1CH MOV TLi,#1CH ;送低送低5 5位位( (高高3 3位为位为0)0)5.3.3 定时器/计数器应用举例v选用方式选用方式1 1: n=16n=16,设置计数初值为:设置计数初值为:X=2X=21616-(T/Tp)=65536-(T/Tp)=65536-2500=63036,2500=63036,变成二进制数为变成二进制数为(1111011000111100)B(1111011000111100)B MOV THi,#F6HMOV THi,#F6H;送高送高8 8位位 MOV TLi,#3CHMOV T

71、Li,#3CH;送低送低8 8位位5.3.3 定时器/计数器应用举例v在本例中,不能选方式在本例中,不能选方式2 2,因为因为 2 28 8=2562500=2562500。 假设需要计数假设需要计数100100次,则可选方式次,则可选方式2 2:256-100=156256-100=156,变成二,变成二进制数为进制数为(10011100)B,(10011100)B,变成十六进制数为变成十六进制数为9CH9CH,MOV THi,#9CHMOV THi,#9CH;送高送高8 8位位 MOV TLi,#9CHMOV TLi,#9CH;送低送低8 8位位5.3.3 定时器/计数器应用举例例例5-4

72、 5-4 :方式方式0 0应用:利用定时器应用:利用定时器/ /计数器计数器T0T0在在P1.0P1.0引脚输引脚输出周期为出周期为2ms2ms的方波,设时钟频率为的方波,设时钟频率为6MHz6MHz,编写相应的程序。,编写相应的程序。P86 P86 例例5-45-4可采用定时中断的方式,每可采用定时中断的方式,每1ms1ms产生一次中断,在中断服务产生一次中断,在中断服务程序中将输出信号取反即可。程序中将输出信号取反即可。定时器定时器T0T0的中断入口地址为的中断入口地址为000BH000BH。初值计算初值计算。 因因T=(2T=(2n n-X)/Tp-X)/Tp,则计数初值为:则计数初值为

73、:X=2X=2n n-T/Tp=2-T/Tp=21313-500=8192-500=7692=1111000001100B-500=8192-500=7692=1111000001100B则则TH0=F0HTH0=F0H,TL0=0CHTL0=0CH。5.3.3 定时器/计数器应用举例确定初始化控制字确定初始化控制字。主要对。主要对IPIP,IEIE,TCONTCON,TMODTMOD的相的相应位进行正确的设置,本例假设从系统复位开始。应位进行正确的设置,本例假设从系统复位开始。 TMOD=00000000B=00HTMOD=00000000B=00H,TCON=0TCON=0。程序设计程序设

74、计:T0T0的中断服务程序,除了产生要求的方波的中断服务程序,除了产生要求的方波外,还要注意将时间常数送入定时器中,为下一次外,还要注意将时间常数送入定时器中,为下一次产生中断做准备。产生中断做准备。5.3.3 定时器/计数器应用举例ORG 000BH ORG 000BH ;T0;T0中断服务程序入口中断服务程序入口LJMP ZD LJMP ZD ; ;转至转至INTINT处处ORG 2000H ORG 2000H ; ;主程序主程序MOV TMOD,MOV TMOD,00H 00H ; ;置置T0T0为定时方式为定时方式0 0 MOV TH0,MOV TH0,0F0H 0F0H ; ;设置计

75、数初值设置计数初值 MOV TL0,MOV TL0,0CH0CHSETB EA SETB EA ;CPU;CPU开中断开中断SETB ET0 SETB ET0 ; ;允许允许T0T0中断中断SETB TR0 SETB TR0 ; ;启动启动T0T0HALT:HALT: SJMP $ SJMP $ ; ;暂停暂停, ,等待中断等待中断 ZD: CPL P1.0 ZD: CPL P1.0 ; ;输出方波输出方波MOV TH0,MOV TH0,0F0H 0F0H ; ;重新装入计数初值重新装入计数初值MOV TL0,MOV TL0,0CH0CHRETI RETI ; ;中断返回中断返回5.3.3 定

76、时器/计数器应用举例例例5-55-5 方式方式2 2应用:应用: 假设,有一个周期为假设,有一个周期为10ms10ms的脉冲信号,加在引的脉冲信号,加在引脚脚T0/P3.4T0/P3.4上。现要求该引脚每发生一次负跳变,上。现要求该引脚每发生一次负跳变,P1.0P1.0端就输出端就输出1 1个个2ms2ms脉宽的同步负脉冲,如图所示。脉宽的同步负脉冲,如图所示。假设单片机晶振频率为假设单片机晶振频率为12MHz12MHz。5.3.3 定时器/计数器应用举例解解:可将可将T0T0设定为方式设定为方式2 2计数方式,初值可设为计数方式,初值可设为FFHFFH,即外即外部脉冲由部脉冲由P3.4P3.

77、4口发生一次负跳变时,计数器加口发生一次负跳变时,计数器加1 1即产生溢即产生溢出,并向出,并向CPUCPU发中断。程序在发中断。程序在T0T0产生一次负跳变后,使产生一次负跳变后,使P1.0P1.0产生产生2ms2ms的同步负脉冲,可利用的同步负脉冲,可利用T1T1采用方式采用方式1 1产生产生2ms2ms定时生成(初值计算)。程序如下(定时生成(初值计算)。程序如下(中断方式中断方式):):ORG 0000HORG 0000H AJMP MAINAJMP MAINORGORG000BH000BH;T0;T0中断入口地址中断入口地址AJMPAJMPLOOP1LOOP1ORG ORG 001B

78、H 001BH ;T1;T1中断入口地址中断入口地址AJMPAJMPITIPITIPORG ORG MAINMAINMAIN: MOV TMOD, #16H ;T0MAIN: MOV TMOD, #16H ;T0初始化程序初始化程序MOV TL0, #0FFH ;T0MOV TL0, #0FFH ;T0初值初值MOV TH0, #0FFHMOV TH0, #0FFHSETB TR0 ;SETB TR0 ;启动启动T0T0T1T0000101105.3.3 定时器/计数器应用举例SETB ET0 SETB ET0 ; ;允许允许T0T0中断中断SETB EA ;SETB EA ;开中断开中断MO

79、V TL1, #30H MOV TL1, #30H ;T1;T1置初值置初值MOV TH1, #0F8HMOV TH1, #0F8H SETB SETBP1.0P1.0;P1.0P1.0初始为高电平初始为高电平MOV IPMOV IP,HERE: HERE: AJMP HERE AJMP HERE ;等待;等待TL0/T1TL0/T1中断中断 LOOP1:LOOP1:CPL P1.0 CPL P1.0 ;T0;T0中断服务程序中断服务程序SETB TR1 SETB TR1 ; ;启动启动T1T1SETB ET1 SETB ET1 ; ;允许允许T1T1中断中断RETIRETIITIP: ITI

80、P: MOV TL1, #30HMOV TL1, #30H;T1;T1中断服务程序中断服务程序MOV TH1, #F8HMOV TH1, #F8HCPL P1.0 CPL P1.0 ;P1.0;P1.0取反取反 CLRCLRET1ET1; ;屏蔽屏蔽T1T1中断中断RETIRETI5.3.3 定时器/计数器应用举例程序如下(程序如下(查询方式查询方式):):首先选首先选T0T0为方式为方式2 2,外部事件计数方式。当,外部事件计数方式。当P3.4P3.4(T0T0)引脚上的电平发生负跳变时,引脚上的电平发生负跳变时,T0T0计数器加计数器加1 1,溢出标志,溢出标志TF0TF0置置1 1;然后

81、改变;然后改变T0T0为为2ms2ms定时功能,采用方式定时功能,采用方式1 1,使,使P1.0P1.0输出由输出由1 1变变为为0 0。T0T0定时到产生溢出,使定时到产生溢出,使P1.0P1.0引脚恢复输出高电平。引脚恢复输出高电平。T0T0先先计数,后定时,分时操作。计数,后定时,分时操作。 STARTSTART:MOVMOV TMOD TMOD,#06H#06H ;T0T0方式方式2 2,外部计数方,外部计数方式式 MOVMOV TH0 TH0,#0FFH#0FFH ;T0T0计数初值计数初值 MOVMOV TL0 TL0,#0FFH#0FFH SETB SETB TR0 TR0 ;启

82、动;启动T0T0计数计数 MOV IEMOV IE,#00H#00H ;关中断;关中断 SETBSETB P1.0P1.0 ;P1.0P1.0初始为高电平初始为高电平LOOPlLOOPl:JBCJBC TF0 TF0,PTF01PTF01 ;查询;查询T0T0溢出标志,溢出标志,TF0TF01 1时时转移,且转移,且TF0TF00(0(查查P3.4P3.4负跳变负跳变) )5.3.3 定时器/计数器应用举例 SJMP SJMP LOOPlLOOPl ;等待;等待T0T0计数溢出中断计数溢出中断PTF01PTF01:CLR TR0CLR TR0 ;停止计数;停止计数 MOVMOV TMOD TM

83、OD,#01H#01H ;T0T0方式方式1 1,定时,定时 MOVMOV TH0 TH0,#0F8H#0F8H ;T0T0定时定时2ms2ms初值初值 MOVMOV TL0 TL0,#30H#30H CLR CLR P1.0 P1.0 ;P1.0P1.0清清0 0 SETB SETB TR0 TR0 ;启动定时;启动定时2ms2msLOOP2LOOP2:JBCJBC TF0 TF0,PTF02PTF02;查询溢出标志,定时到;查询溢出标志,定时到TF0=lTF0=l转转移,且移,且TF0TF00(0(第一个第一个2ms2ms到到否否?)?) SJMPSJMP LOOP2 LOOP2 ;等待;

84、等待T0T0定时溢出中断定时溢出中断PTF02PTF02:SETBSETB P1 P1 ;P1.0P1.0置置1(1(到了第一个到了第一个500s)500s) CLR CLR TR0 TR0 ;停止计数;停止计数 SJMPSJMP START START5.3.3 定时器/计数器应用举例例例5-65-6 方式方式3 3应用:设晶振频率为应用:设晶振频率为6MHz6MHz,定时定时/ /计数器计数器T0T0工作于工作于方式方式3 3,TL0TL0和和TH0TH0作为两个独立的作为两个独立的8 8位定时器,通过位定时器,通过TL0TL0和和TH0TH0的中断分别使的中断分别使P1.0P1.0和和P

85、1.1P1.1产生产生400s400s和和800s800s的方波的方波。解解:当采用方式:当采用方式3 3时,对于时,对于TH0TH0来说,需要借用定时器来说,需要借用定时器T1T1的控制的控制信号。信号。计算计数初值计算计数初值:X0=2X0=28 8-200/2=156=9CH-200/2=156=9CHX1=2X1=28 8-400/2=56=38H-400/2=56=38H确定确定TMODTMOD方式字:对定时器方式字:对定时器T0T0来说,来说,M1M0=11M1M0=11、C/T=0C/T=0、GATE=0GATE=0,定时器定时器T1T1不用,取为全不用,取为全0 0。则。则TM

86、OD=00000011B=03HTMOD=00000011B=03H。5.3.3 定时器/计数器应用举例程序如下程序如下: ORG MAIN ;ORG MAIN ;主程序主程序MAIN: MAIN: MOV TMOD, MOV TMOD, 03H03H;T0;T0工作于方式工作于方式3 3MOV TL0, MOV TL0, 9CH9CH; ;置计数初值置计数初值MOV TH0, MOV TH0, 38H38HSETB TR0 ;SETB TR0 ;启动启动TL0TL0SETB ET0 ;SETB ET0 ;允许允许T0T0中断中断( (用于用于TL0)TL0) SETB TR1 SETB TR

87、1 ; ;启动启动TH0TH0SETB ET1 SETB ET1 ; ;允许允许T1T1中断中断( (用于用于TH0)TH0)SETB EA ;CPUSETB EA ;CPU开中断开中断HALT: SJMP HALT HALT: SJMP HALT ; ;暂停,等待中断暂停,等待中断ORG 000BH ORG 000BH ;TL0;TL0中断服务程序中断服务程序CPL P1.0 CPL P1.0 ;P1.0;P1.0取反取反 MOV TL0, MOV TL0, 9CH 9CH ; ;重新装入计数初值重新装入计数初值 RETIRETI; ;中断返回中断返回 ORG 001BHORG 001BH;

88、TH0;TH0中断服务程序中断服务程序 CPL P1.1 CPL P1.1 ;P1.1P1.1取反取反 MOV TH0, MOV TH0, 38H38H; ;重新装入计数初值重新装入计数初值 RETI RETI ; ;中断返回中断返回5.3.3 定时器/计数器应用举例注意:注意:运行中读定时计数器运行中读定时计数器可随时读写可随时读写THxTHx和和TLxTLx,比如实时显示计数,比如实时显示计数值等,但要注意读取时由于分时读值等,但要注意读取时由于分时读THxTHx和和TLxTLx所带所带来的特殊性,例如先读来的特殊性,例如先读THxTHx再读再读TLxTLx,由于读取过,由于读取过程中程中

89、TxTx一直在计数,可能会出现一直在计数,可能会出现TLxTLx向向THxTHx进位的进位的情况,读的值就不正确。反之亦然,因此,先读情况,读的值就不正确。反之亦然,因此,先读THxTHx再读再读TLxTLx,然后再重读,然后再重读THxTHx,若两次读取的,若两次读取的THxTHx一致,则正确,反之要全部重读。一致,则正确,反之要全部重读。5.4 MCS-51单片机串行接口 5.4 MCS-515.4 MCS-51单片机串行接口单片机串行接口 基础知识基础知识 所谓通信是指计算机与计算机或计算机与外设之间的所谓通信是指计算机与计算机或计算机与外设之间的数据传输,这里的数据传输,这里的“信信”

90、是指信息,即是由数字和构是指信息,即是由数字和构成一个或一批数据。数据通信通常有两种方式,即并行通成一个或一批数据。数据通信通常有两种方式,即并行通信和串行通信。并行通信的特点是所有的数据位被同时发信和串行通信。并行通信的特点是所有的数据位被同时发送或接收,数据传送速度快,但并行通信需要多条(送或接收,数据传送速度快,但并行通信需要多条(8 8、1616条)数据线和控制线,传送成本高,传送距离短;串行条)数据线和控制线,传送成本高,传送距离短;串行通信的数据传送是按位进行传送的,只需两条线,一条用通信的数据传送是按位进行传送的,只需两条线,一条用于发送数据,另一条用于接收数据,传送成本很低,且

91、通于发送数据,另一条用于接收数据,传送成本很低,且通信距离远,但比并行通信传输速度慢。信距离远,但比并行通信传输速度慢。5.4 .0 MCS-51单片机的串行口 按数据的通路和传送方向不同,串行通信可分为按数据的通路和传送方向不同,串行通信可分为单工、单工、半双工、全双工半双工、全双工3 3种方式。种方式。书书P169P169 单工方式(单工方式(simplexsimplex) :数据仅向一个方向传送,:数据仅向一个方向传送,即一方始终为发送端,另一方始终为接收端,中需一根数即一方始终为发送端,另一方始终为接收端,中需一根数据线即可完成数据传送。据线即可完成数据传送。 半双工方式(半双工方式(

92、half duplexhalf duplex) :数据可双向传送,但:数据可双向传送,但在任一时刻只能由其中的一方发送数据,另一方接收数据,在任一时刻只能由其中的一方发送数据,另一方接收数据,即发送和接收数据不能同时进行。半双工方式可用一条线即发送和接收数据不能同时进行。半双工方式可用一条线或两条线实现。或两条线实现。 全双工方式(全双工方式(full duplexfull duplex) :数据可以同时双向传:数据可以同时双向传送,即发送和接收数据同时进行,必须用两条线才能实现。送,即发送和接收数据同时进行,必须用两条线才能实现。5.4 .0 MCS-51单片机的串行口发发送送方方A接接收收

93、方方BTXDRXD发发送送方方A接接收收方方BTXDRXDTXDRXD发发送送方方A接接收收方方BTXDRXDTXDRXD5.4 .0 MCS-51单片机的串行口按传送的数据格式不同,串行通信又可分成按传送的数据格式不同,串行通信又可分成异步串异步串行通信和同步串行通信。行通信和同步串行通信。1.1.异步通信传送方式:异步通信传送方式:在物理结构上,异步通信的双方只有数据线而没有时钟在物理结构上,异步通信的双方只有数据线而没有时钟传输线。传输线。A A、B B双方都以自己的时钟源控制着发送的速率双方都以自己的时钟源控制着发送的速率或对接收进行采样;或对接收进行采样;由于通讯双方系统时钟往往不同

94、,所以在异步通信中,由于通讯双方系统时钟往往不同,所以在异步通信中,要想保证通信的成功必须保证两点:要想保证通信的成功必须保证两点:通信双方必须保持相同的传送、接收速率(波特率);通信双方必须保持相同的传送、接收速率(波特率);双方必须遵守相同的数据格式(字符帧)。双方必须遵守相同的数据格式(字符帧)。5.4 .0 MCS-51单片机的串行口将要传送的数据由一个将要传送的数据由一个0 0点平的点平的“起始位起始位”引导,中间引导,中间为为8 8位(或位(或9 9位)的位)的数据位数据位,后面有一个高电平的,后面有一个高电平的“停停止位止位”数据帧格式。数据帧格式。异步通信的字符帧格式由于添加了

95、异步通信的字符帧格式由于添加了“起始位起始位”和和“停停止位止位”,占用了传输时间,降低了传输效率,因此仅,占用了传输时间,降低了传输效率,因此仅适用于远距离的数据通信。适用于远距离的数据通信。D0D0D1D1D2D2D3D3D4D4D5D5D6D6D7D7起始位起始位停止位停止位01MCS-51MCS-51单片机的一个字符帧的格式单片机的一个字符帧的格式5.4 .0 MCS-51单片机的串行口2.2.同步传送模式:同步传送模式:在物理结构上,通信双方除了通信的数据线外还增加在物理结构上,通信双方除了通信的数据线外还增加了一个通信用的了一个通信用的“时钟传输线时钟传输线clock”clock”

96、。由主控方提。由主控方提供时钟信号供时钟信号clockclock。由于有了时钟信号来由于有了时钟信号来“同步同步”发送或接收操作,所以发送或接收操作,所以被传送的数据不再使用被传送的数据不再使用“起始位起始位”和和“停止位停止位”,因,因而提高了传送速度。因此同步通信常被用于系统内部而提高了传送速度。因此同步通信常被用于系统内部各芯片之间的接口设计。各芯片之间的接口设计。由于同步通信多了一条由于同步通信多了一条“时钟线时钟线”,因此不太适合远,因此不太适合远距离的通信。距离的通信。5.4 .0 MCS-51单片机的串行口同步发送、接收示意图同步发送、接收示意图主主控控方方被被控控方方datac

97、lock主主控控方方被被控控方方dataclock主控方发送数据主控方发送数据 主控方接收数据主控方接收数据 5.4 .0 MCS-51单片机的串行口串行通信的传输速率:串行通信的传输速率:用于表征串行通信速率的参数称为用于表征串行通信速率的参数称为“波特率波特率”;波特率的单位为:位波特率的单位为:位/ /秒(秒(bit / sbit / s););波特率取值范围一般为:波特率取值范围一般为: 0 0 9600 bit/s9600 bit/s。影响波。影响波特率的主要因素取决于传输线的分布电容、通信电平标特率的主要因素取决于传输线的分布电容、通信电平标准和传送距离;准和传送距离;5.4 .0

98、 MCS-51单片机的串行口串行通信的串行通信的电平标准电平标准:书:书P172P172为了增加串行通信的距离,可以采用为了增加串行通信的距离,可以采用RS-232RS-232、RS-485RS-485的的通信标准。其中:通信标准。其中:TTLTTL电平(电平(0 05V5V):):1010英尺以内。英尺以内。RS-232RS-232标准(标准(+12V+12V-12V-12V):):5050英尺。英尺。RS-485RS-485标准(差分输入输出):标准(差分输入输出):10001000英尺以上。英尺以上。5.4 .0 MCS-51单片机的串行口MCS-51 TXD(甲) RXD RXD MC

99、S-51 TXD (乙)TXDRXDRXDTXDRS-232或485RS-232或485TXDRXDRS-232PC机COM1,COM2单片机甲单片机甲、乙之间近距离的直接通讯乙之间近距离的直接通讯单片机甲乙两地之间远距离通讯单片机甲乙两地之间远距离通讯单片机与单片机与PCPC机之间的数据通讯机之间的数据通讯5.4 .0 MCS-51单片机的串行口 MCS-51MCS-51系列单片机内部有系列单片机内部有1 1个功能很强的全双工串行个功能很强的全双工串行口,可同时发送和接收数据。它具有口,可同时发送和接收数据。它具有4 4种工作方式,可应种工作方式,可应用于所需的不同场合。串行通信所需的波特率

100、可由片内定用于所需的不同场合。串行通信所需的波特率可由片内定时时/ /计数器或系统时钟产生并可通过软件设置波特率值。计数器或系统时钟产生并可通过软件设置波特率值。接收、发送过程均可工作在查询方式或中断方式,使用十接收、发送过程均可工作在查询方式或中断方式,使用十分灵活。分灵活。MCS-51MCS-51的串行口既可以做的串行口既可以做UART(UART(通过异步接收发通过异步接收发送器送器) )使用,也可以作为同步移位寄存器使用,方便地构使用,也可以作为同步移位寄存器使用,方便地构成成1 1个或多个并行输入个或多个并行输入/ /输出口,或作串并转换,用来驱动输出口,或作串并转换,用来驱动键盘与显

101、示器。键盘与显示器。5.4.1 MCS-51单片机的串行口一、一、 串行口的基本构成串行口的基本构成MCS-51MCS-51单片机串行口的结构主要由数据发送单片机串行口的结构主要由数据发送/ /接收部接收部分、波特率发生器和串行通信控制寄存器等组成。图分、波特率发生器和串行通信控制寄存器等组成。图5.145.14给出了串行口内部结构框图。给出了串行口内部结构框图。5.4.1 MCS-51单片机的串行口图图5.14 MCS-515.14 MCS-51系列单片机串行口内部结构图框图系列单片机串行口内部结构图框图检测起始停检测起始停止位止位MOV SBUF, AMOV SBUF, AMOV A,SB

102、UFMOV A,SBUF5.4.1 MCS-51单片机的串行口图图5.15 5.15 串行口信号采样图串行口信号采样图 P172 P172 图图10.410.45.4.1 MCS-51单片机的串行口1 1 数据发送和接收部分数据发送和接收部分如图如图5.145.14所示,数据发送部分主要由所示,数据发送部分主要由发送数据缓冲寄存发送数据缓冲寄存器器“SBUF(SBUF(发送发送) )”、“零检测器零检测器”和和“发送控制器发送控制器”等部分等部分组成;数据接收部分由接收数据缓冲寄存器组成;数据接收部分由接收数据缓冲寄存器“SBUF(SBUF(接收接收) )”、“接收移位寄存器接收移位寄存器”、

103、“接收控制器接收控制器”及及“位检测器位检测器”等等组成。组成。 在串行接收时,串行数据经过在串行接收时,串行数据经过RXD(P3.0)RXD(P3.0)引脚进入,经引脚进入,经过接收移位寄存器将串行数据转换成并行数据后,移入过接收移位寄存器将串行数据转换成并行数据后,移入SBUF(SBUF(接收接收) ),此时,此时,CPUCPU可执行可执行MOV A, SBUFMOV A, SBUF指令,产生指令,产生“读读SBUF(SBUF(接收接收) )”脉冲,把脉冲,把“SBUF(SBUF(接收接收) )”中接收到的数据通过中接收到的数据通过内部总线并行传送到累加器内部总线并行传送到累加器A A中,

104、完成数据在此部分的串入中,完成数据在此部分的串入并出。数据接收部分采用双缓冲结构,并出。数据接收部分采用双缓冲结构,避免了接收过程中出避免了接收过程中出现数据重叠错误。现数据重叠错误。5.4.1 MCS-51单片机的串行口在串行发送时,串行数据通过在串行发送时,串行数据通过TXD(P3.1)TXD(P3.1)引脚送出,引脚送出,与接收不同,发送数据过程与接收不同,发送数据过程CPUCPU是主动的,当是主动的,当CPUCPU执行执行MOV MOV SBUF, ASBUF, A指令时,产生指令时,产生“写写SBUF(SBUF(发送发送) )”脉冲,累加器脉冲,累加器A A中的字符数据写入中的字符数

105、据写入SBUF(SBUF(发送发送) )缓冲寄存器。在发送控制缓冲寄存器。在发送控制器的作用下,将数据串行发出。完成数据在此部分的并器的作用下,将数据串行发出。完成数据在此部分的并入串出。为提高数据发送速度,发送器采用单缓冲结构。入串出。为提高数据发送速度,发送器采用单缓冲结构。 在接收和发送部分包含有两个在接收和发送部分包含有两个SBUFSBUF,一个是,一个是“SBUFSBUF( (发送发送) )”,用于存放将要发送的字符数据;另一个是,用于存放将要发送的字符数据;另一个是“SBUF (SBUF (接收接收) )”用于存放接收到的字符数据。它们是在用于存放接收到的字符数据。它们是在物理结构

106、上完全独立的两个物理结构上完全独立的两个8 8位缓冲寄存器,但共用一个位缓冲寄存器,但共用一个端口地址端口地址SBUF(99H)SBUF(99H),这个重叠地址靠这个重叠地址靠CPUCPU执行不同指令执行不同指令区分区分。同时,串行口对外也有两条独立的收发信号线。同时,串行口对外也有两条独立的收发信号线RXDRXD和和TXDTXD,因此可以同时发送和接收数据,因此可以同时发送和接收数据,实现全双工传送实现全双工传送。5.4.1 MCS-51单片机的串行口波特率发生器主要由内部定时器波特率发生器主要由内部定时器/ /计数器、系统时钟计数器、系统时钟信号及一些控制开关和分频器组成。它提供串行口的发

107、信号及一些控制开关和分频器组成。它提供串行口的发送时钟送时钟TXCTXC和接收时钟和接收时钟RXCRXC。但值得注意的是,波特率发但值得注意的是,波特率发生器产生的采样脉冲须经生器产生的采样脉冲须经1616倍频,才是串行口的发送和倍频,才是串行口的发送和接收移位时钟。接收移位时钟。 串行口的接收过程基于采样脉冲串行口的接收过程基于采样脉冲( (接收时钟的接收时钟的1616倍倍) )对对RXDRXD线的监视。当线的监视。当“1 1到到0 0跳变检测器跳变检测器”连续连续8 8次采样到次采样到RXDRXD线上为低电平时,则可确认线上为低电平时,则可确认RXDRXD线上出现了接收数据的起线上出现了接

108、收数据的起始位。随后,接收控制器就从下一个数据位开始对第始位。随后,接收控制器就从下一个数据位开始对第7 7、8 8、9 9三个脉冲即信号中央采样三个脉冲即信号中央采样RXDRXD线线( (图图5.15)5.15),并遵守三,并遵守三中去二的原则来决定数据值。中去二的原则来决定数据值。 5.4.1 MCS-51单片机的串行口 2. 2. 串行口通信控制寄存器串行口通信控制寄存器在在MCS-51MCS-51系列单片机的特殊功能寄存器中,有系列单片机的特殊功能寄存器中,有4 4个与串行通个与串行通信有关,分别为信有关,分别为SCONSCON,PCONPCON,IEIE和和IPIP,它们对应的地址分

109、它们对应的地址分别是别是98H98H,87H87H,A8HA8H和和B8HB8H,其中其中SCONSCON和和PCONPCON直接控制串行直接控制串行口的工作方式。口的工作方式。 (1)(1)串行控制寄存器串行控制寄存器SCONSCON(2)(2)串行口控制寄存器串行口控制寄存器SCONSCON的格式如下:的格式如下:D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8T1RISM0SM0、SM1SM1:用于选择串行口用于选择串行口4 4种工作方式,可由软件置种工作方式,可由软件置位或清零。其状态组合与对应的工作方式见表位或清零。其状态组合与对应的工作方式见表5.25.2。5.

110、4.1 MCS-51单片机的串行口SM0SM0SM1SM1工作方式工作方式功功 能能波特率波特率0 00 0方式方式0 0移移位位寄寄存存器器方方式式,用用于于并行并行I/OI/O扩展扩展f foscosc /12/120 01 1方式方式1 11010位位通通用用异异步步接接收收器器/ /发送器发送器定时器控制可变定时器控制可变1 10 0方式方式2 21111位位通通用用异异步步接接收收器器/ /发送器发送器f foscosc /32 /32或或 f foscosc /64/641 11 1方式方式3 31111位位通通用用异异步步接接收收器器/ /发送器发送器定时器控制可变定时器控制可变

111、表表5.2 SM05.2 SM0、SM1SM15.4.1 MCS-51单片机的串行口SM2SM2:多机通信控制位。在方式多机通信控制位。在方式2 2和方式和方式3 3中,如置中,如置SM2=1SM2=1,则则 接收到的第接收到的第9 9位数据即位数据即RB8=0RB8=0时,不启动接收中时,不启动接收中断标志断标志RI(RI(即即RI=0)RI=0),并且将接收到的前并且将接收到的前8 8位数据丢弃;位数据丢弃;RB8=1RB8=1时,才将接收到的前时,才将接收到的前8 8位数据送入位数据送入SBUFSBUF,并置位并置位RIRI,产生中断请求。当置产生中断请求。当置SM2=0SM2=0时,则

112、不论第时,则不论第9 9位数据为位数据为0 0或或1 1,都将前都将前8 8位数据装入位数据装入SBUFSBUF中,并产生中断请求。因多机通中,并产生中断请求。因多机通信只能选择工作于方式信只能选择工作于方式2 2和方式和方式3 3,所以,所以SM2SM2主要用于这两主要用于这两种工作方式。在方式种工作方式。在方式0 0时该位不用,必须设置为时该位不用,必须设置为0 0。RENREN:允许串行接收控制位。若允许串行接收控制位。若REN=0REN=0,则禁止接收;则禁止接收;REN=1REN=1,则允许接收,该位由软件置位或复位。则允许接收,该位由软件置位或复位。TB8TB8:发送数据发送数据D

113、8D8位。在方式位。在方式2 2和方式和方式3 3时,时,TB8TB8为所为所要发送的第要发送的第9 9位数据位数据( (格式信息格式信息) )。在多机通信中,以。在多机通信中,以TB8TB8位位的状态表示主机发送的是地址还是数据:的状态表示主机发送的是地址还是数据:TB8=0TB8=0为数据,为数据,TB8=1TB8=1为地址;也可用作数据的奇偶校验位。该位由软件为地址;也可用作数据的奇偶校验位。该位由软件置位或复位置位或复位。5.4.1 MCS-51单片机的串行口RB8RB8:接收数据接收数据D8D8位。在方式位。在方式2 2和方式和方式3 3时,接收到的时,接收到的第第9 9位数据(格式

114、信息),可作为奇偶校验位或地址帧或位数据(格式信息),可作为奇偶校验位或地址帧或数据帧的标志。方式数据帧的标志。方式1 1时,若时,若SM2=0SM2=0,则,则RB8RB8是接收到的停是接收到的停止位。在方式止位。在方式0 0时,不使用时,不使用RB8RB8位。位。 TITI:发送中断标志位。在方式发送中断标志位。在方式0 0时,当发送数据第时,当发送数据第8 8位位结束后,或在其他方式发送停止位后,由内部硬件使结束后,或在其他方式发送停止位后,由内部硬件使TITI置置位,向位,向CPUCPU请求中断。请求中断。CPUCPU在响应中断后,必须用软件清零。在响应中断后,必须用软件清零。此外,此

115、外,TITI也可供查询使用。也可供查询使用。 RIRI:接收中断标志位。在方式接收中断标志位。在方式0 0时,当接收数据的第时,当接收数据的第8 8位结束后,或在其他方式接收到停止位的中间由内部硬件位结束后,或在其他方式接收到停止位的中间由内部硬件使使RIRI置位,向置位,向CPUCPU请求中断。同样,在请求中断。同样,在CPUCPU响应中断后,也响应中断后,也必须用软件清零。必须用软件清零。RIRI也可供查询使用。也可供查询使用。5.4.1 MCS-51单片机的串行口(2) (2) 电源控制寄存器电源控制寄存器PCONPCONPCONPCON的格式如下:的格式如下:D7D6D5D4D3D2D

116、1D0SMOD-CF1CF0PDIDLPCONPCON的最高位的最高位SMODSMOD是串行口波特率系数控制位。是串行口波特率系数控制位。SMOD=1SMOD=1时,波特率增大一倍。时,波特率增大一倍。当系统复位时,当系统复位时,SMOD=0SMOD=0。控制字中其余各位与串行口无关。控制字中其余各位与串行口无关。5.4.1 MCS-51单片机的串行口(3) (3) 中断允许控制寄存器中断允许控制寄存器IEIEIEIE曾在定时器曾在定时器/ /计数器一节有所提及,其中的计数器一节有所提及,其中的ESES位与串行位与串行通信有关,现说明如下:通信有关,现说明如下:ES=0ES=0,禁止串行中断;

117、禁止串行中断;ES=1ES=1,允许串行中断。允许串行中断。(4) (4) 中断优先级控制寄存器中断优先级控制寄存器IPIP IE IE也在定时器也在定时器/ /计数器一节有所提及,其中的计数器一节有所提及,其中的PSPS位与串行位与串行通信有关,现说明如下:通信有关,现说明如下:PS=0PS=0,串行口中断为低优先级;串行口中断为低优先级;PS=1PS=1,串行口中断为高优先级。串行口中断为高优先级。5.4.2 串行口的工作方式二、串行口的工作方式二、串行口的工作方式1. 1. 方式方式0 0在工作方式在工作方式0 0下,下,SBUFSBUF用作同步移位寄存器,其波特率用作同步移位寄存器,其

118、波特率是固定的,为是固定的,为foscfosc( (振荡频率振荡频率) )的的1/121/12。数据由芯片的。数据由芯片的RXD/P3.0RXD/P3.0引脚进行发送和接收,移位同步脉冲由引脚进行发送和接收,移位同步脉冲由TXD/ TXD/ P3.1P3.1引脚输出。发送引脚输出。发送/ /接收的是接收的是8 8位数据。低位在先,顺位数据。低位在先,顺序发送。帧格式如下:序发送。帧格式如下:D0D1D2D3D4D5D6D7在方式在方式0 0中,由于中,由于SCONSCON的的SM2SM2,RB8RB8和和TB8TB8不用,均置不用,均置成成0 0。串行口方式。串行口方式0 0的结构如图的结构如

119、图5.165.16所示。所示。图图5.16 5.16 串行口方式串行口方式0 0结构示意图结构示意图5.4.2 串行口的工作方式发送过程:发送过程:当当CPUCPU执行一条写执行一条写SBUFSBUF的指令,如的指令,如MOV SBUF, MOV SBUF, A A,就启动了发送过程。就启动了发送过程。TXDTXD引脚输出同步移位脉冲引脚输出同步移位脉冲, ,发送发送数据缓冲器中的数据逐位串行输出数据缓冲器中的数据逐位串行输出, ,每一个机器周期从每一个机器周期从RXDRXD上发送一位数据,故波特率为上发送一位数据,故波特率为fosc/12fosc/12。8 8位数据位数据( (一一帧帧) )

120、发送完毕后,发送控制器发送完毕后,发送控制器SENDSEND恢复低电平状态,停止恢复低电平状态,停止发送数据,且发送控制器硬件置发送中断标志发送数据,且发送控制器硬件置发送中断标志TI=1TI=1,向,向CPUCPU申请中断。申请中断。CPUCPU响应中断后,先用软件将响应中断后,先用软件将TITI清零,并清零,并再次执行写再次执行写SBUFSBUF指令。发送时,指令。发送时,SBUF(SBUF(发发) )相当于一个并相当于一个并入串出的移位寄存器。入串出的移位寄存器。5.4.2 串行口的工作方式接收过程:接收过程:在在RI=0RI=0,REN(SCON.4)REN(SCON.4)置置1 1的

121、条件下启动。此时的条件下启动。此时RXDRXD为串行数据接收端,为串行数据接收端,TXDTXD依然输出同步移位脉冲。依然输出同步移位脉冲。在串行口方式在串行口方式0 0工作时,并非是一个同步通信方式。它主工作时,并非是一个同步通信方式。它主要用途是和外部同步移位寄存器要用途是和外部同步移位寄存器( (如如CD4094CD4094或或CD4014CD4014等等) )外外接,达到扩展一个并行口的目的。例如将串行口作为并行接,达到扩展一个并行口的目的。例如将串行口作为并行输出口使用时,可采用如下图所示的方法。输出口使用时,可采用如下图所示的方法。5.4.2 串行口的工作方式2. 2. 方式方式1

122、1 在方式在方式1 1时,串行口被设置为波特率可变的时,串行口被设置为波特率可变的8 8位异步位异步通信接口。通信接口。 其波特率取决于定时器其波特率取决于定时器T1T1的溢出率和特殊功能寄存器的溢出率和特殊功能寄存器PCONPCON中中SMODSMOD的值,即方式的值,即方式1 1的波特率的波特率=(2SMOD/32)=(2SMOD/32)定时定时器器T1T1的溢出率。引脚的溢出率。引脚TXD/P3.1TXD/P3.1发送数据、发送数据、RXD/P3.0RXD/P3.0接收接收数据,为全双工接收数据,为全双工接收/ /发送方式。其结构如图发送方式。其结构如图5.175.17。在方式在方式1

123、1时,发送时,发送/ /接收一帧信息共接收一帧信息共1010位:位:1 1位起始位位起始位(0)(0)、8 8位数据位位数据位(D0D8)(D0D8)和一位停止位和一位停止位(1)(1)。帧格式如下:。帧格式如下:停止起启D0D1D2D3D4D5D6D75.4.2 串行口的工作方式图图5.17 5.17 串行口方式串行口方式1 1、2 2、3 3结构示意图结构示意图5.4.2 串行口的工作方式 当当CPUCPU执行一条写执行一条写SBUFSBUF指令便启动了串行口发送,指令便启动了串行口发送,在指令执行期间,在指令执行期间,CPUCPU发出的发出的“写写SBUFSBUF”信号将并行数信号将并行

124、数据送入据送入SBUFSBUF,同时通知发送控制器启动发送。发送控同时通知发送控制器启动发送。发送控制器在发送时钟的作用下自动在发送字符前添加起始制器在发送时钟的作用下自动在发送字符前添加起始位,发送控制端的位,发送控制端的SENDSEND、DATADATA相继有效,通过输出控相继有效,通过输出控制门从制门从TXDTXD上逐位输出数据。上逐位输出数据。“写写SBUFSBUF”信号同时将信号同时将1 1装入发送移位寄存器的第装入发送移位寄存器的第9 9位位(D(D触发器触发器) ),即停止位,即停止位1 1的的自动插入,一帧信息发送完毕后,自动插入,一帧信息发送完毕后,SENDSEND、DATA

125、DATA失效,失效,发送控制器硬件置发送中断标志发送控制器硬件置发送中断标志TI=1TI=1,向,向CPUCPU申请中断。申请中断。5.4.2 串行口的工作方式允许接收控制位允许接收控制位REN=1REN=1和和RI=0RI=0,就启动了接收过程,就启动了接收过程,跳变检测器以所选波特率的跳变检测器以所选波特率的1616倍速率采样倍速率采样RXDRXD引脚上的电引脚上的电平。当采样到从平。当采样到从1 1到到0 0的负跳变时,启动接收控制器接收的负跳变时,启动接收控制器接收数据。由于发送、接受双方各自使用自己的时钟,两者数据。由于发送、接受双方各自使用自己的时钟,两者的频率总有少许差异。为了避

126、免这种情况所带来的影响,的频率总有少许差异。为了避免这种情况所带来的影响,控制器将控制器将1 1位的传送时间分成位的传送时间分成1616等份,位检测器在等份,位检测器在7 7、8 8、9 9三个状态,也就是在信号中央采样三个状态,也就是在信号中央采样RXDRXD三次。而且,三三次。而且,三次采样中至少两次相同的值被确认为数据,这是为了减次采样中至少两次相同的值被确认为数据,这是为了减少干扰的影响。如果接收到的起始位的值不是少干扰的影响。如果接收到的起始位的值不是0 0,则起始,则起始位无效,复位接收电路。如果起始位为位无效,复位接收电路。如果起始位为0 0,则开始接收本,则开始接收本帧其他各位

127、数据。帧其他各位数据。 5.4.2 串行口的工作方式控制器发出内部移位脉冲将控制器发出内部移位脉冲将RXDRXD上的数据逐位移入移上的数据逐位移入移位寄存器,当位寄存器,当8 8位数据及停止位全部移入后,根据以下位数据及停止位全部移入后,根据以下状态,进行相应操作。状态,进行相应操作。 如果如果RI=0RI=0、SM2=0SM2=0,接收控制器发出接收控制器发出“装载装载SBUFSBUF”信信号,将号,将8 8位数据装入接收数据缓冲器位数据装入接收数据缓冲器SBUFSBUF,停止位装入停止位装入RB8RB8,并置并置RI=1RI=1,向,向CPUCPU申请中断。申请中断。 如果如果RI=0RI

128、=0、SM2=1SM2=1,那么只有停止位为那么只有停止位为1 1才发生上述才发生上述操作。操作。 RI=0RI=0、SM2=1SM2=1且停止位为且停止位为0 0,所接收的数据不装入,所接收的数据不装入SBUFSBUF,数据将会丢失。数据将会丢失。 如果如果RI=1RI=1,则所接收的数据在任何情况下都不装入则所接收的数据在任何情况下都不装入SBUFSBUF,即数据丢失。即数据丢失。无论出现哪一种情况,跳变检测器将继续采样无论出现哪一种情况,跳变检测器将继续采样RXDRXD引脚引脚的负跳变,以便接收下一帧信息。的负跳变,以便接收下一帧信息。5.4.2 串行口的工作方式3. 3. 方式方式2

129、2 串行口工作于方式串行口工作于方式2 2时,被定义为时,被定义为9 9位异步通信接口。发送位异步通信接口。发送数据由数据由TXD(P3.1)TXD(P3.1)引脚输出,接收数据由引脚输出,接收数据由RXD(P3.0)RXD(P3.0)引脚引入,引脚引入,其结构如图其结构如图5.175.17。其发送。其发送/ /接收一帧信息为接收一帧信息为1111位,其中位,其中1 1位起始位起始位位(0)(0)、8 8位数据位位数据位( (先低位后高位先低位后高位) )、1 1位可控位为位可控位为1 1或或0 0的第的第9 9位位数据、数据、1 1位停止位。帧格式如下:位停止位。帧格式如下:停止起启D0D1

130、D2D3D4D5D6D7D85.4.2 串行口的工作方式方式方式2 2的波特率的波特率=(2=(2SMODSMOD/64)/64)foscfosc,附加的第附加的第9 9位数据位数据值取决于值取决于SCONSCON中的中的TB8TB8,它可由软件置位或清它可由软件置位或清0 0,在实际应,在实际应用中该位作为多机通信中地址用中该位作为多机通信中地址/ /数据信息的标志位,也可数据信息的标志位,也可作为数据通信的奇偶校验位。下面是一个实际的以作为数据通信的奇偶校验位。下面是一个实际的以TB8TB8作作为奇偶校验位的发送中断服务程序,为奇偶校验位的发送中断服务程序,R0R0中存放着发送数据中存放着

131、发送数据区起始地址。区起始地址。 PIPL:PIPL:PUSH PSWPUSH PSW ; ;保护现场保护现场 PUSH A PUSH A CLR TI CLR TI ; ;清发送中断标志清发送中断标志 MOV A, R0 ;MOV A, R0 ;取数据取数据 MOV C, P ;MOV C, P ;奇偶位送奇偶位送C C MOV TB8, C ;MOV TB8, C ;奇偶位送奇偶位送TB8TB8 MOV SBUF, A ;MOV SBUF, A ;数据写入发送缓冲器数据写入发送缓冲器, ,启动发送启动发送 INC R0 ;INC R0 ;数据指针加数据指针加1 1 POP A ;POP A

132、 ;恢复现场恢复现场 POP PSWPOP PSW RETI ;RETI ;中断返回中断返回5.4.2 串行口的工作方式4. 4. 方式方式3 3方式方式3 3为波特率可变的为波特率可变的9 9位异步通信方式,除了波特率位异步通信方式,除了波特率有所区别之外,其余方式都与方式有所区别之外,其余方式都与方式2 2相同。方式相同。方式3 3的波特率的波特率= =(2(2SMODSMOD/32)/32)( (定时器定时器T1T1的溢出率的溢出率) )。 方式方式2 2与方式与方式3 3都是都是9 9位异步通信接口,发送或接收一帧位异步通信接口,发送或接收一帧1111位的信息。方式位的信息。方式2 2

133、与方式与方式3 3的不同之处仅在于波特率,方的不同之处仅在于波特率,方式式2 2的波特率与振荡器频率有关为的波特率与振荡器频率有关为fosc/32(SMOD=1fosc/32(SMOD=1时时) )或或fosc/64(SMOD=0fosc/64(SMOD=0时时) ),而方式,而方式3 3的波特率由定时器的波特率由定时器/ /计数器计数器T1T1及及SMODSMOD决定。决定。 在方式在方式2 2、方式、方式3 3时,发送、接收数据的过程与方式时,发送、接收数据的过程与方式1 1基基本相同,所不同的仅在于对第本相同,所不同的仅在于对第9 9位数据的处理上。发送时,位数据的处理上。发送时,第第9

134、 9位数据由位数据由SCONSCON中的中的TB8TB8位提供。接收数据时,当第位提供。接收数据时,当第9 9位位数据移入移位寄存器后,将数据移入移位寄存器后,将8 8位数据装入位数据装入SBUFSBUF,第,第9 9位数据位数据装入装入SCONSCON中的中的RB8RB8。串行口工作方式的比较如表串行口工作方式的比较如表5.35.3所示。所示。5.4.2 串行口的工作方式5.4.3 波特率设置三、波特率设置三、波特率设置 串行通信的串行通信的4 4种工作方式种工作方式对应着对应着3 3种波特率种波特率。(1 1)对于方式)对于方式0 0,波特率是固定的,为单片机时钟的十二分之一,即,波特率是

135、固定的,为单片机时钟的十二分之一,即fosc/12fosc/12。(2 2)对于方式)对于方式2 2,波特率有两种可供选择,即,波特率有两种可供选择,即fosc/32fosc/32和和fosc/64fosc/64。对对应于以下公式:应于以下公式: 波特率波特率=fosc=fosc2 2SMODSMOD/64/64用户对用户对PCONPCON中的中的SMODSMOD位的设置来选择确定波特率值。位的设置来选择确定波特率值。(3 3)对于方式)对于方式1 1和方式和方式3 3,波特率都由定时器,波特率都由定时器T1T1的溢出率来决定,对应的溢出率来决定,对应于以下公式:于以下公式: 波特率波特率=(

136、2=(2SMODSMOD/32)/32)( (定时器定时器T1T1的溢出率的溢出率) )而定时器而定时器T1T1的溢出率则和所采用的定时器工作方式有关,并可用以下的溢出率则和所采用的定时器工作方式有关,并可用以下公式表示:公式表示: 定时器定时器T1T1的溢出率的溢出率=fosc/12=fosc/12(2(2n n-X) -X) 其中其中X X为定时器为定时器T1T1的计数初值,的计数初值,n n为定时器为定时器T1T1的位数,对于定时器方式的位数,对于定时器方式0 0,取,取n=13n=13;对于定时器方式对于定时器方式1 1,取,取n=16n=16;对于定时器方式对于定时器方式2 2、3

137、3,取,取n=8n=8。5.4.3 波特率设置在实际应用中,定时器在实际应用中,定时器T1T1通常采用方式通常采用方式2 2,即自动重装方式。,即自动重装方式。此时,此时,TL1TL1和和TH1TH1分别为两个分别为两个8 8位的计数器,当位的计数器,当TL1TL1从全从全“1 1”变为变为全全“0 0”时,时,TH1TH1中所保存的初值自动装入中所保存的初值自动装入TL1TL1中。这样,不仅简中。这样,不仅简化了操作,也避免了因重装初值而带来的定时误差。表化了操作,也避免了因重装初值而带来的定时误差。表5.45.4给出给出了常用波特率与定时器了常用波特率与定时器T1T1初值之间的关系。初值之

138、间的关系。表表5.45.4常用波特率与定时器常用波特率与定时器T1T1初值初值5.4.4 多机通信图图5.18 5.18 主从式多机通信系统主从式多机通信系统四、多机通信四、多机通信5.4.4 多机通信主从多机通信的具体过程如下:主从多机通信的具体过程如下:(1) (1) 使所有的从机的使所有的从机的SM2SM2位置位置1 1,以便接收主机发来的地,以便接收主机发来的地址。址。(2) (2) 主机发出一帧地址信息,其中包括主机发出一帧地址信息,其中包括8 8位需要与之通信位需要与之通信的从机地址,第的从机地址,第9 9位为位为1 1。(3) (3) 所有从机接收到地址帧后,各自将所接收到的地址

139、所有从机接收到地址帧后,各自将所接收到的地址与本机地址相比较,对于地址相同的从机,使与本机地址相比较,对于地址相同的从机,使SM2SM2位清零位清零以接收主机随后发来的所有信息;对于地址不符合的从以接收主机随后发来的所有信息;对于地址不符合的从机,仍保持机,仍保持SM2=1SM2=1的状态,对主机随后发来的数据不予理的状态,对主机随后发来的数据不予理睬,直至发送新的地址帧。睬,直至发送新的地址帧。(4) (4) 主机给已被寻址的从机发送控制指令和数据主机给已被寻址的从机发送控制指令和数据( (数据帧数据帧的第的第9 9位为位为0)0)。5.4.5 串行口的应用与编程MCS-51MCS-51系列

140、单片机串行通信有两种方式,相应编程系列单片机串行通信有两种方式,相应编程亦有两种方式:查询方式和中断方式。两种方式中当发送亦有两种方式:查询方式和中断方式。两种方式中当发送和接收数据后都要清和接收数据后都要清TITI和和RIRI。 串行口方式串行口方式1 1和方式和方式3 3都是异步通信方式,方式都是异步通信方式,方式1 1为为8 8位位数据位,方式数据位,方式3 3为为9 9位数据位,两种方式的波特率都是受定位数据位,两种方式的波特率都是受定时器时器T1T1的溢出率控制。的溢出率控制。五、串行口的应用与编程五、串行口的应用与编程5.4.5 串行口的应用与编程例例5-75-7如图如图5.195

141、.19所示,利用所示,利用CD4094CD4094串入并出的功能,编串入并出的功能,编制能使与制能使与CD4094CD4094相接的相接的8 8支发光二极管自左至右轮流被支发光二极管自左至右轮流被点亮并反复循环的程序。相连的二极管为共阴极。书点亮并反复循环的程序。相连的二极管为共阴极。书P96 P96 例例5-75-7图图5.19 5.19 单片机驱动单片机驱动LEDLED系统连接图系统连接图5.4.5 串行口的应用与编程解解:CD4094CD4094是一种串入并出的同步移位寄存器,是一种串入并出的同步移位寄存器,CLKCLK为同为同步脉冲。步脉冲。STBSTB为控制端:当为控制端:当STB=

142、0STB=0时,禁止时,禁止8 8位并行数据的位并行数据的输出,允许串行数据从输出,允许串行数据从DATADATA端输入;当端输入;当STB=1STB=1时,允许并时,允许并行数据输出,禁止串行数据输入。行数据输出,禁止串行数据输入。 若串行口采用查询方式输出,二极管的点亮时间若串行口采用查询方式输出,二极管的点亮时间由延时子程序决定。由延时子程序决定。5.4.5 串行口的应用与编程程序如下:程序如下:ORG 1000HORG 1000HMOV SCON, MOV SCON, 00H ;00H ;串行口初始化为方式串行口初始化为方式0 0CLR ES ;CLR ES ;关中断关中断MOV A,

143、 MOV A, 80H ;80H ;起始显示码起始显示码BEGIN:CLR P1.0 ;BEGIN:CLR P1.0 ;关闭关闭CD4094CD4094并行输出并行输出MOV SUBF, A ;MOV SUBF, A ;允许串行口数据串行输出允许串行口数据串行输出LOOP:LOOP:JNB TI, LOOP ;JNB TI, LOOP ;状态查询并等待串行口数据输出完成状态查询并等待串行口数据输出完成SETB P1.0 ;SETB P1.0 ;允许允许CD4094CD4094并行输出点亮二极管并行输出点亮二极管 LCALL DELAY ;LCALL DELAY ;调用延时以保证点亮一段时间调用

144、延时以保证点亮一段时间CLR TI ;CLR TI ;清除发送标志清除发送标志RR A ;RR A ;准备点亮下一个发光二极管准备点亮下一个发光二极管SJMP BEGIN ;SJMP BEGIN ;循环循环DELAY EQU 0500H ;DELAY EQU 0500H ;延时子程序入口地址延时子程序入口地址ENDEND5. 5 思考与练习题1 1 简述中断、中断源、中断源的优先级及中断嵌套的含义。简述中断、中断源、中断源的优先级及中断嵌套的含义。答答: : 当当CPUCPU正正在在处处理理某某项项事事件件的的时时,如如果果外外界界或或内内部部发发生生了了紧紧急急情情况况,要要求求CPUCPU

145、暂暂停停正正在在处处理理的的工工作作转转而而去去处处理理这这个个紧紧急急情情况况,待待处处理理完完以以后后再再回回到到原原来来被被中中断断的的地地方方,继继续续执执行行原原来来被被中中断断了了的的程程序序,这这样样的的过过程称为中断。程称为中断。向向CPUCPU提出中断请求的源称为中断源。提出中断请求的源称为中断源。当系统有多个中断源时,就可能出现同时有几个中断源申请中当系统有多个中断源时,就可能出现同时有几个中断源申请中断,而断,而CPUCPU在一个时刻只能响应并处理中断优先高的请求。在一个时刻只能响应并处理中断优先高的请求。在实际应用系统中,当在实际应用系统中,当CPUCPU正在处理某个中

146、断源,即正在执行中断服务正在处理某个中断源,即正在执行中断服务程序时,会出现优先级更高的中断源申请中断。为了使更紧急的级别程序时,会出现优先级更高的中断源申请中断。为了使更紧急的级别高的中断源及时得到服务,需要暂时中断(挂起)当前正在执行的级高的中断源及时得到服务,需要暂时中断(挂起)当前正在执行的级别较低的中断服务程序,去处理级别更高的中断源,待处理完以后,别较低的中断服务程序,去处理级别更高的中断源,待处理完以后,再返回到被中断了的中断服务程序继续执行,但级别相同或级别低的再返回到被中断了的中断服务程序继续执行,但级别相同或级别低的中断源不能中断级别高的中断服务,这就是所谓的中断嵌套。中断

147、源不能中断级别高的中断服务,这就是所谓的中断嵌套。5. 5 思考与练习题2 2 MCS-51MCS-51单单片片机机能能提提供供几几个个中中断断源源?几几个个中中断断优优先先级级?各各个个中中断断的的源源的优先级怎样确定?在同一优先级中各个中断源的优先级怎样确定?的优先级怎样确定?在同一优先级中各个中断源的优先级怎样确定?答答: : MCS-51 MCS-51单片机能提供五个中断源,两个中断优先级。中断优先级单片机能提供五个中断源,两个中断优先级。中断优先级是由片内的中断优先级寄存器是由片内的中断优先级寄存器IPIP(特殊功能寄存器)控制的。(特殊功能寄存器)控制的。 PSPS:串串行行口口中

148、中断断优优先先级级控控制制位位。PS=1PS=1,串串行行口口定定义义为为高高优优先先级级中中断源;断源;PS=0PS=0,串行口定义为低优先级中断源。,串行口定义为低优先级中断源。 PT1PT1:T1T1中断优先级控制位。中断优先级控制位。PT1=1PT1=1,定时器,定时器/ /计数器计数器1 1定义为高优定义为高优先级中断源;先级中断源;PT1=0PT1=0,定时器,定时器/ /计数器计数器1 1定义为低优先级中断源。定义为低优先级中断源。 PX1PX1:外部中断:外部中断1 1中断优先级控制位。中断优先级控制位。PX1=1PX1=1,外中断,外中断1 1定义为高优定义为高优先级中断源;

149、先级中断源;PX1=0PX1=0,外中断,外中断1 1定义为低优先级中断源。定义为低优先级中断源。 PT0PT0:定时器:定时器/ /计数器计数器0 0(T0T0)中断优先级控制位,功能同)中断优先级控制位,功能同PT1PT1。PX0PX0:外部中断:外部中断0 0中断优先级控制位,功能同中断优先级控制位,功能同PX1PX1。 在同一优先级中在同一优先级中, ,循环轮流排队。不分级别高低,所有中断源优循环轮流排队。不分级别高低,所有中断源优先级都一律平等,先级都一律平等,CPUCPU轮流响应各个中断源的中断请求。轮流响应各个中断源的中断请求。 5. 5 思考与练习题3 3 简述简述MCS-51

150、MCS-51单片机中断响应过程。单片机中断响应过程。答答:CPUCPU在每个机器周期的在每个机器周期的S5P2S5P2时刻采样中断标志,而在下一个机器时刻采样中断标志,而在下一个机器周期对采样到的中断进行查询。如果在前一个机器周期的周期对采样到的中断进行查询。如果在前一个机器周期的S5P2S5P2有中断有中断标志,则在查询周期内便会查询到并按优先级高低进行中断处理,中标志,则在查询周期内便会查询到并按优先级高低进行中断处理,中断系统将控制程序转入相应的中断服务程序。断系统将控制程序转入相应的中断服务程序。5-4 MCS-515-4 MCS-51单片机外部中断有哪两种触发方式?如何选择?对外部中

151、单片机外部中断有哪两种触发方式?如何选择?对外部中断源的触发脉冲或电平有何要求?断源的触发脉冲或电平有何要求?答:答:MCS-51MCS-51单片机外部中断有:负边沿触发方式和电平触发方式。外单片机外部中断有:负边沿触发方式和电平触发方式。外部中断部中断1()1()触发方式控制位。如果触发方式控制位。如果IT1IT1为为1 1,则外中断,则外中断1 1为负边沿触发方为负边沿触发方式(式(CPUCPU在每个机器周期的在每个机器周期的S5P2S5P2采样脚的输入电平,如果在一个周期采样脚的输入电平,如果在一个周期中采样到高电平,在下个周期中采样到低电平,则硬件使中采样到高电平,在下个周期中采样到低

152、电平,则硬件使IE1IE1置置1 1,向,向CPUCPU请求中断);如果请求中断);如果IT1IT1为为0 0,则外中断,则外中断1 1为电平触发方式。采用电平为电平触发方式。采用电平触发时,输入到的外部中断源必须保持低电平有效,直到该中断被响触发时,输入到的外部中断源必须保持低电平有效,直到该中断被响应。同时在中断返回前必须使电平变高,否则将会再次产生中断。应。同时在中断返回前必须使电平变高,否则将会再次产生中断。5. 5 思考与练习题5 5 在在MCS-51MCS-51单片机的应用系统中,如果有多个外部中断源,怎样单片机的应用系统中,如果有多个外部中断源,怎样进行处理?进行处理?答:答:当

153、系统有多个中断源时,就可能出现同时有几个中断源申请当系统有多个中断源时,就可能出现同时有几个中断源申请中断,而中断,而CPUCPU在一个时刻只能响应并处理一个中断请求,为此,在一个时刻只能响应并处理一个中断请求,为此,要进行排队。排队的方式有:要进行排队。排队的方式有:(1 1)按优先级排队。)按优先级排队。(2 2)循环轮流排队。)循环轮流排队。MCS-51MCS-51单片机优先级比较简单,只有两级,单片机优先级比较简单,只有两级,可以通过优先级控制寄存器设置不同的优先级。当优先级相同时,可以通过优先级控制寄存器设置不同的优先级。当优先级相同时,约定有约定有5 5个中断源优先级顺序由高到低分

154、别为:外部中断个中断源优先级顺序由高到低分别为:外部中断0 0、定时、定时器器/ /计数器计数器0 0溢出、外部中断溢出、外部中断1 1、定时器、定时器/ /计数器计数器1 1溢出、串行口中溢出、串行口中断。断。 5. 5 思考与练习题6 6 MCS-51MCS-51单单片片机机响响应应外外部部中中断断的的典典型型时时间间是是多多少少?在在哪哪些些情况下,情况下,CPUCPU将推迟对外部中断请求的响应?将推迟对外部中断请求的响应?答答:响响应应外外部部中中断断的的典典型型时时间间是是至至少少需需要要3 3个个完完整整的的机机器器周周期。期。1 1、外外部部中中断断和和的的电电平平在在每每个个机

155、机器器周周期期的的S5P2S5P2时时被被采采样样并并锁锁存存到到IE0IE0和和IE1IE1中中,这这个个置置入入到到IE0IE0和和IE1IE1的的状状态态在在下下一一个个机机器器周周期期才才被被其其内内部部的的查查询询电电路路查查询询,未未产产生生了了一一个个中中断断请请求求。2 2、没有满足响应的条件,、没有满足响应的条件,CPUCPU没有响应中断。没有响应中断。3 3、没没有有由由硬硬件件生生成成一一条条长长调调用用指指令令转转到到相相应应的的服服务务程程序序入入口。口。5. 5 思考与练习题7 80517 8051单片机内设有几个可编程的定时器单片机内设有几个可编程的定时器/ /计

156、数器?它们可以有计数器?它们可以有4 4种工作方式,如何选择和设定?各有什么特点?种工作方式,如何选择和设定?各有什么特点?答:答:MCS-51MCS-51单片机内部有两个单片机内部有两个1616位可编程的定时器位可编程的定时器/ /计数器,即定计数器,即定时器时器T0T0和定时器和定时器T1T1 M1 M0 M1 M0:定时器:定时器/ /计数器四种工作方式选择计数器四种工作方式选择 M1M0M1M0方方 式式 式式特点特点0 00 00 01313位定时器位定时器/ /计数器计数器0 10 11 11616位定时器位定时器/ /计数器计数器1 01 02 2自动装入时间常数的自动装入时间常

157、数的8 8位定时器位定时器/ /计数器计数器1 11 13 3对对T0T0分分为为两两个个8 8位位独独立立计计数数器器;对对T1T1置置方方式式3 3时停止工作(无中断重装时停止工作(无中断重装8 8位计数器)位计数器)5. 5 思考与练习题8 8定时器定时器/ /计数器测量某正单脉冲的宽度,采用何种方式可得到最大量程计数器测量某正单脉冲的宽度,采用何种方式可得到最大量程?若时钟频率为?若时钟频率为6MHz6MHz,求允许测量的最大脉冲宽度是多少?,求允许测量的最大脉冲宽度是多少?答:答:采用方式采用方式1 1可得到最大量程。最大脉宽可得到最大量程。最大脉宽=2us=2us655366553

158、69 9 定时器定时器/ /计数器作为外部中断源使用时,需要如何初始化,以计数器作为外部中断源使用时,需要如何初始化,以T0T0为例为例通过程序说明。通过程序说明。答答: 初始化初始化 MOV TMOD,#06HMOV TMOD,#06H MOV TL0,#0FFHMOV TL0,#0FFH MOV TH0,#0FEH MOV TH0,#0FEH SETB TR0 SETB TR0 SETB EA SETB EA SETB ET0 SETB ET05. 5 思考与练习题10 10 波特率的含义是什么?波特率的含义是什么?答答:所谓波特率是每秒钟传送信号的数量,单位为波特(:所谓波特率是每秒钟传

159、送信号的数量,单位为波特(Baud Baud )。)。11 11 什么是串行异步通信?它有哪些特征?什么是串行异步通信?它有哪些特征?答答:通信时接收器和发送器有各自的时钟。:通信时接收器和发送器有各自的时钟。特征:异步通信的优点是不需要传送同步脉冲,可靠性高,所需设备特征:异步通信的优点是不需要传送同步脉冲,可靠性高,所需设备简单,缺点是字符帧中因包含有起始位和停止位而降低了有效数据的简单,缺点是字符帧中因包含有起始位和停止位而降低了有效数据的传输速率传输速率1212单片机的串行接口由哪些功能部件组成?各有什么作用?单片机的串行接口由哪些功能部件组成?各有什么作用?答答:MCS-51MCS-

160、51单片机串行口主要由两个物理上独立的串行数据缓冲寄存单片机串行口主要由两个物理上独立的串行数据缓冲寄存器器SBUFSBUF、发送控制器、接收控制器、输入移位寄存器和输出控制门组、发送控制器、接收控制器、输入移位寄存器和输出控制门组成。成。 作用:作用:SBUFSBUF为串行口的收发缓冲寄存器,它是可寻址的专用寄存器,为串行口的收发缓冲寄存器,它是可寻址的专用寄存器,其中包含了发送寄存器其中包含了发送寄存器SBUF SBUF (发送)和接收寄存器(发送)和接收寄存器SBUF SBUF (接收),(接收),可以实现全双工通信。可以实现全双工通信。 5. 5 思考与练习题13 13 简述串行接口接

161、收和发送数据的过程。简述串行接口接收和发送数据的过程。答答:发送:发送操作是在:发送:发送操作是在TI=0TI=0下进行的,此时发送缓冲寄存器下进行的,此时发送缓冲寄存器“SBUFSBUF(发送)(发送)”相当于一个并入串出的移位寄存器。相当于一个并入串出的移位寄存器。CPU CPU 通过指令通过指令MOV SBUFMOV SBUF,A A ,将数据写入,将数据写入“SBUFSBUF(发送)(发送)”,立即启动发送,将,立即启动发送,将8 8 位数据以设定波特率从位数据以设定波特率从RXD RXD 输出,低位在前,高位在后。发送完一帧输出,低位在前,高位在后。发送完一帧数据后,发送中断标志数据

162、后,发送中断标志TITI由硬件置位,并可向由硬件置位,并可向CPU CPU 发出中断请求。发出中断请求。 接收:接收过程是在接收:接收过程是在RI=0RI=0且且REN=1REN=1条件下启动的,此时接收缓冲寄条件下启动的,此时接收缓冲寄存器存器“SBUF SBUF (接收)(接收)”相当于一个串入并出的移位寄存器。接收时,相当于一个串入并出的移位寄存器。接收时,先置位允许接收控制位先置位允许接收控制位RENREN,此时,此时,RXDRXD为串行数据输入端。当为串行数据输入端。当RI=0 RI=0 和和REN=1 REN=1 同时满足时,开始接收。当接收到第同时满足时,开始接收。当接收到第8

163、8 位数据时,将数据移位数据时,将数据移入接收缓冲寄存器入接收缓冲寄存器“SBUFSBUF(接收)(接收)” ,并由硬件置位,并由硬件置位RI RI ,同时向,同时向CPU CPU 发出中断请求。发出中断请求。CPU CPU 查到查到RI=1 RI=1 或响应中断后,通过指令或响应中断后,通过指令MOV AMOV A,SBUFSBUF,将,将“ SBUF SBUF (接收)(接收)”接收到的数据读入累加器接收到的数据读入累加器A A 。5. 5 思考与练习题14 8051 14 8051 串行接口有几种工作方式?有几种帧格式?各工作方式的波串行接口有几种工作方式?有几种帧格式?各工作方式的波特

164、率如何确定?特率如何确定?答:答:方式方式0 0、1 1、2 2、3. 83. 8帧帧 1010帧帧 1111帧帧 三种格式。三种格式。波特率:波特率: 方式方式0 0的波特率固定为系统晶振频率的的波特率固定为系统晶振频率的1/12 1/12 ,其值为,其值为fosc/12 fosc/12 。其中,其中,foscfosc为系统主机晶振频率。为系统主机晶振频率。 方式方式2 2的波特率由的波特率由PCONPCON中的选择位中的选择位SMODSMOD来决定,可由下式表示:来决定,可由下式表示:即:当即:当SMOD =l SMOD =l 时,波特率为时,波特率为fosc/32fosc/32;当脚;当

165、脚SMOD=0SMOD=0时,波特率为时,波特率为fosc/64fosc/64。 方式方式1 1 和方式和方式3 3 的波特率由定时器的波特率由定时器TlTl 的溢出率控制。因而波特率的溢出率控制。因而波特率是可变的。是可变的。定时器定时器TI TI 作为波特率发生器,相应公式如下:作为波特率发生器,相应公式如下: 波特率波特率= = 定时器溢出率定时器溢出率 溢出率溢出率=T1=T1计数率计数率/ /产生溢出所需的周期数产生溢出所需的周期数= =式中式中K K:定时器:定时器T1T1的位数,的位数,K K的值等于的值等于8 8、1313、1616;TCTC:定时器:定时器T1T1的预置初值。

166、的预置初值。5.4.5 串行口的应用与编程1515串行口以全双工方式收发由串行口以全双工方式收发由7 7位二进制数组成的字位二进制数组成的字符,数据第符,数据第8 8位用来作奇偶校验位,采用偶校验方式,假位用来作奇偶校验位,采用偶校验方式,假设传送的波特率为设传送的波特率为12001200波特、时钟频率波特、时钟频率foscfosc=6MHz=6MHz、发送发送缓冲区首址为缓冲区首址为BLOCK1BLOCK1,接收缓冲区首址为接收缓冲区首址为BLOCK2BLOCK2,试编试编写有关的通信程序。写有关的通信程序。解解:可采用串行口工作方式可采用串行口工作方式1 1的方式传输由的方式传输由7 7位

167、字符和位字符和1 1位位偶校验所构成的偶校验所构成的8 8位数据。位数据。MCS-51MCS-51单片机的奇偶校验位单片机的奇偶校验位P P是当累加器是当累加器A A中中“1 1”的个数为奇数时的个数为奇数时P=1P=1,为偶数时,为偶数时P=0P=0。故可直接把故可直接把P P的值放入传输数据的最高位的值放入传输数据的最高位( (奇偶校验位奇偶校验位) ),构成偶校验。构成偶校验。5.4.5 串行口的应用与编程计算计数初值计算计数初值:传输数据的波特率可由定时器传输数据的波特率可由定时器T1T1产生,将其设定为工作方式产生,将其设定为工作方式2 2,避免计,避免计数溢出时重装定时初值。数溢出

168、时重装定时初值。取取SMOD=0SMOD=0:定时器定时器T1T1的溢出率的溢出率= =波特率波特率32/232/2SMODSMOD=1200=120032/232/20 0=38400=38400其对应的计数初值为:其对应的计数初值为:X=2X=2n n-(fosc/T1-(fosc/T1的溢出率的溢出率12) =212) =28 8- -(6(610106 6/38400/3840012) =243=F3H12) =243=F3H另一种方法是通过查表另一种方法是通过查表5.55.5确定确定X=F4HX=F4H。确定方式字:确定方式字:对于对于SCONSCON:SM0SM0、SM1=01SM

169、1=01时为方式时为方式1 1,在,在SM2=0SM2=0和和REN=1REN=1条件下,允许接条件下,允许接收数据,其余各位均取收数据,其余各位均取0 0。则。则SCON=01010000B=50HSCON=01010000B=50H。对于对于PCONPCON:由于由于SMOD=0SMOD=0,所以所以PCON=00H(PCON=00H(同系统复位以后的状态,可不同系统复位以后的状态,可不赋值赋值) )。对于对于TMODTMOD:由于只用由于只用T1T1,且为定时方式且为定时方式2 2,所以,所以TMOD=00100000B=20HTMOD=00100000B=20H。5.4.5 串行口的应

170、用与编程程序如下程序如下。主程序:主程序:MOV TMOD, MOV TMOD, 20H 20H ; ;定时器定时器T1T1设为方式设为方式2 2MOV TL1, MOV TL1, F3H F3H ; ;装入定时器初值装入定时器初值MOV TH1,MOV TH1,F3H F3H ;8;8位重装值位重装值SETB TR1 SETB TR1 ; ;启动定时器启动定时器T1T1MOV SCON,MOV SCON,50H 50H ; ;串行口设为方式串行口设为方式1 1MOV R0,MOV R0,BLOCK1H BLOCK1H ; ;发送缓冲区首址发送缓冲区首址MOV R1,MOV R1,BLOCK2

171、H BLOCK2H ; ;接收缓冲区首址接收缓冲区首址SETB EA SETB EA ; ;开中断开中断SETB ES SETB ES ; ;允许串行口中断允许串行口中断LCALL SOUT LCALL SOUT ; ;先输出先输出1 1个字符个字符SJMP $ SJMP $ ; ;等待中断等待中断 5.4.5 串行口的应用与编程中断服务程序:中断服务程序:ORG 0023H ORG 0023H ; ;串行中断入口串行中断入口LJMP SF1 LJMP SF1 ; ;转至中断服务程序转至中断服务程序SF1:SF1:JNB R1, SOUT JNB R1, SOUT ; ;不是接收则转不是接收则

172、转LCALL REVE LCALL REVE ; ;是接收,则调用接收子程序是接收,则调用接收子程序SJMP NEXT ;SJMP NEXT ;转至统一出口转至统一出口SOUT:SOUT:LCALL SEND LCALL SEND ; ;是发送,则调用发送子程序是发送,则调用发送子程序NEXT:NEXT:RETI RETI ; ;中断返回中断返回发送子程序:发送子程序:SEND:SEND:MOV A, R0 MOV A, R0 ; ;取发送数据到取发送数据到A AMOV C, P MOV C, P ; ;奇偶校验位赋于奇偶校验位赋于C CMOV A.7, C MOV A.7, C ; ;送入送

173、入ASCIIASCII码最高位中码最高位中INC R0 INC R0 ; ;修改发送数据指针修改发送数据指针MOV SBUF, A MOV SBUF, A ; ;发送数据发送数据CLR TI CLR TI ; ;清发送中断标志清发送中断标志RET RET ; ;返回主程序返回主程序 5.4.5 串行口的应用与编程接收子程序:接收子程序:REVE: REVE: MOV A, SUBF ;MOV A, SUBF ;读入接收缓冲区内容读入接收缓冲区内容MOV C, P ;MOV C, P ;取出奇偶校验位取出奇偶校验位ANL C, /A.7 ;ANL C, /A.7 ;进行偶校验进行偶校验MOV 0

174、1H, C ;MOV 01H, C ;奇偶位与接收到的奇偶位进行异或奇偶位与接收到的奇偶位进行异或CPL C ;CPL C ;相同无错,否则有错相同无错,否则有错ANL C, A.7ANL C, A.7ORL C, 01HORL C, 01HJC ERROR ;JC ERROR ;传输有错误,则转至错误处理程序段传输有错误,则转至错误处理程序段ANL A, ANL A, 7FH ;7FH ;删去奇偶校验位删去奇偶校验位MOV R1, A ;MOV R1, A ;存入接收缓冲区存入接收缓冲区INC R1 ;INC R1 ;修改接收缓冲区指针修改接收缓冲区指针CLR RI ;CLR RI ;清接收

175、中断标志清接收中断标志REEORREEOR:RET ;RET ;返回主程序返回主程序 5.4.5 串行口的应用与编程1616 现甲机在外部数据存储器现甲机在外部数据存储器BLOCK1BLOCK1开始区域中存有开始区域中存有LENLEN个个8 8位数据,希望正确发送给乙机并存到乙机外部数据存储位数据,希望正确发送给乙机并存到乙机外部数据存储器的器的BLOCK2BLOCK2区域。见图区域。见图5.205.20,请编出相应程序。,请编出相应程序。解解:为正确将数据从甲机发送到乙机,可在传输过程中采:为正确将数据从甲机发送到乙机,可在传输过程中采用奇偶校验方法。可将甲、乙两台单片机设置在工作方式用奇偶

176、校验方法。可将甲、乙两台单片机设置在工作方式2 2、全双工串行通信方式,甲机发送的数据每帧为、全双工串行通信方式,甲机发送的数据每帧为1111位,位,可编程的第可编程的第9 9位数据作为奇偶校验位。数据传输过程如下:位数据作为奇偶校验位。数据传输过程如下:每发送每发送1 1帧信息,乙机对接收的数据进行奇偶校验,若正帧信息,乙机对接收的数据进行奇偶校验,若正确,则乙机向甲机发出确,则乙机向甲机发出“00H00H”,甲机接收该信号后再发甲机接收该信号后再发送下送下1 1字节;若奇偶校验错,则乙机发出字节;若奇偶校验错,则乙机发出“AAHAAH”,甲机接甲机接收该信号后将再次发送原数据,直至发送正确

177、为止。图收该信号后将再次发送原数据,直至发送正确为止。图5.215.21给出了甲、乙两机在全双工通信方式下的流程图。给出了甲、乙两机在全双工通信方式下的流程图。5.4.5 串行口的应用与编程图图5.20 5.20 全双工串行通信连接图全双工串行通信连接图5.4.5 串行口的应用与编程图图5.21 (a)5.21 (a)甲机发送流程图甲机发送流程图; ;5.4.5 串行口的应用与编程图图5.21 (b)5.21 (b)乙机发送流程图乙机发送流程图5. 5 思考与练习题计数器震荡器1/12TF0中断计数控制T0 引脚TR0GATEINT0C/T=0C/T=1MCS-51INT017 17 测量外部

178、脉宽测量外部脉宽如果如果GATE=1, TR=1GATE=1, TR=1时电路是否计数取决于时电路是否计数取决于/INT0/INT0:/INTE0=1 /INTE0=1 时开始计数;时开始计数;/INTE0=0,/INTE0=0,电路停止计数。电路停止计数。利用这一特点,可以实现测量外部脉冲的宽度。利用这一特点,可以实现测量外部脉冲的宽度。5. 5 思考与练习题解题步骤:解题步骤:1.1.将外部脉冲接到将外部脉冲接到P3.2P3.2(/INT0/INT0)上,使用)上,使用T0T0且且C/T=0C/T=0,且令,且令GATE=1GATE=1;2.2.计数器计数器TH0TH0、TL0TL0原始初

179、值为原始初值为00H,00H,且设为模式且设为模式1(161(16位位) ) ;3.3.在在/INT0=0/INT0=0时启动时启动T0T0计数器(计数器(TR0=1TR0=1););4.4.当当/INT0=1/INT0=1时,定时器时,定时器T0T0自动开始计数;自动开始计数;5.5.当当/INT0=0/INT0=0时计数自动停止计数,此时时计数自动停止计数,此时TH0TH0、TL0TL0中的计数值就是与脉中的计数值就是与脉冲宽度相对应得数据冲宽度相对应得数据。 MCS-51INT0 SETB TR0 T0开始计数 计数停止 (TR0=1) (/INT0=1) (/INT0=0) 准备阶段

180、计数阶段 完成计数外部脉冲5. 5 思考与练习题MOV TMOD,#09HMOV TMOD,#09H ; ;设定设定T0T0为模式为模式1 1且且GATE0=1GATE0=1MOV TH0, #00HMOV TH0, #00HMOV TL0, #00HMOV TL0, #00H ; ;计数器原始清零计数器原始清零MOV R0, #20HMOV R0, #20H ; ;设置数据区指针并原始赋初值设置数据区指针并原始赋初值JB INT0,$JB INT0,$ ; ;等待等待P3.2P3.2引脚上的脉冲变低引脚上的脉冲变低, ,寻找准备阶段寻找准备阶段SETB TR0SETB TR0 ;INT0 ;

181、INT0变低后,变低后,TR0TR0置一置一 ( 但不计数)但不计数)JNB INT0,$JNB INT0,$ ; ;若若INT0INT0低电平则等待,准备计数阶段低电平则等待,准备计数阶段JB INT0,$JB INT0,$ ; ;若若INT0INT0高电平则等待高电平则等待 (硬件开始计数)(硬件开始计数)CLR TR0CLR TR0 ;INT0 ;INT0变低后,关闭变低后,关闭T0 T0 ( 停止计数)停止计数) MOV R0,TH0MOV R0,TH0INC R0INC R0MOV R0,TL0MOV R0,TL0 ; ;保存计数器保存计数器T0T0的计数值的计数值5. 5 思考与练习题程序流程图程序流程图设定T1模式模式1,GATE=1TH1、TL1原始清零数据指针R0赋初值INT1=0?SETB TR1INT1=0?INT1=1?CLR TR1取TH、TL值NNN等待低电平Y准备计数等待高电平高电平是自动计数并等待低YY低电平时完成计数 设设fosc=12MH,则脉宽则脉宽T=(THL、TL0)1

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

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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