【大学课件】MCS51单片机的功能模块ppt.ppt

上传人:sccc 文档编号:5925233 上传时间:2023-09-05 格式:PPT 页数:157 大小:1.35MB
返回 下载 相关 举报
【大学课件】MCS51单片机的功能模块ppt.ppt_第1页
第1页 / 共157页
【大学课件】MCS51单片机的功能模块ppt.ppt_第2页
第2页 / 共157页
【大学课件】MCS51单片机的功能模块ppt.ppt_第3页
第3页 / 共157页
【大学课件】MCS51单片机的功能模块ppt.ppt_第4页
第4页 / 共157页
【大学课件】MCS51单片机的功能模块ppt.ppt_第5页
第5页 / 共157页
点击查看更多>>
资源描述

《【大学课件】MCS51单片机的功能模块ppt.ppt》由会员分享,可在线阅读,更多相关《【大学课件】MCS51单片机的功能模块ppt.ppt(157页珍藏版)》请在三一办公上搜索。

1、5.1 MCS-51单片机并行I/O口5.2 MCS-51单片机中断系统5.3 MCS-51单片机定时器/计数器5.4 MCS-51单片机串行接口5.5 思考与练习题,第五章 MCS-51单片机的功能模块,第五章 MCS-51单片机的功能模块,主要内容:介绍51系列单片机主要内部功能模块:有并行I/O口、中断系统、定时/计数器和串行接口。要求:1、掌握51系列单片机的各功能模块的结构和工作原理;2、各模块应用程序的编写。,5.1 MCS-51单片机并行I/O口,I/O口的作用:1 实现CPU与外设间的速度匹配;2 改变数据的传送方式(并行、串行);3 改变信号的性质(A/D)和信号的电平(TT

2、L电平与RS232电平)外设的编址:独立编址 编址范围0000H0FFFFH,有专有的传送指令;与存储器统一编址 编址范围0FF00H0FFFFH,传送指令 MOVX A,DPTR MOVX DPTR,A,5.1 MCS-51单片机并行I/O口,I/O 数据的四种传送方式无条件传送(同步传送)条件传送(异步传送)中断传送DMA传送,5.1 MCS-51单片机并行I/O口,MCS-51单片机具有4个双向的8位I/O口P0P3,P0口为三态双向口,负载能力为8个TTL电路,P1P3口为准双向口(用作输入时,口线被拉成高电平,故称为准双向口),负载能力为4个TTL电路。各口中的每一位都是由锁存器(称

3、特殊功能寄存器SFR)、输出驱动器和输入缓冲器组成。这种结构,在数据输出时可锁存,但对输入信息是不锁存的,所以从外部输入的信息必须保持到取数指令执行完为止。,5.1.1 P0口,P0口是一个三态双向口,在系统扩展时,可作为低8位地址线和数据总线的分时复用口,在其他状态下可作为通用I/O接口,其1位的结构原理如图5.1所示,P0口由8个这样的电路组成。,5.1.1 P0口,图5.1,5.1.1 P0口,P0口是一个多功能8位口,可以字节访问,也可位访问,字节访问地址为80H,位访问地址为80H87H。(1)P0口用于I/O口是准双向I/O口。作为I/O口使用时,控制信号应为“0”,多路开关接通输

4、出锁存器的 端。同时与门关闭,上拉FET截止,形成P0口的输出电路为漏极开路输出。需要外接上拉电阻。a)作输出口时:不需要条件,可以正确的输出b)作输入口时:当CPU复位后进行输入操作时,输入信息是正确的。当P0口的某位(或整个P0口)先进行了输出操作,而后要由输出变成输入操作方式时,必须先用输出指令将锁存器置“1”,才能保证输入信息正确。(即是准双向的含义),5.1.1 P0口,(2)P0口用于地址/数据分时复用时是真正双向I/O口。当控制=1时,MUX接通地址/数据输出端。a)当地址/数据输出线置1时,“与”门输出为1,上拉FET导通,同时地址/数据输出通过反相器输出0,控制下拉FET截止

5、,这样A点电位上拉,地址/数据输出线为1。b)当地址/数据输出线置0时,“与”门输出为0,上拉FET截止,同时地址/数据输出通过反相器输出1,控制下拉FET导通,这样A点电位下拉,地址/数据输出线为0。输入数据,控制=0,分析同(1)中的输入中的第一种情况。通过上述分析可以看出,此时的输出状态随地址/数据线而变。因此,P0口可以作为地址/数据复用总线使用(需要加地址锁存器)。此时的P0口相当一个双向口。,5.1.2 P1口,P1口是一个8位口,可以字节也可按位访问,其字节地址为90H,位访问地址为90H97H。P1口是一个准双向I/O口,其1位的内部结构如图5.2所示。,5.1.2 P1口,图

6、5.2,5.1.2 P1口,它在结构上与P0口的区别在于输出驱动部分,其输出驱动部分由场效应管V1与内部上拉电阻组成。当其某位输出为1时,使输出驱动器中的场效应管截止,该位的输出由内部等效的上拉电阻拉成高电平,输出1。当输出为0时,输出场效应管导通则输出引脚为低电平,输出为0。不必像P0口那样需要外接上拉电阻。,5.1.2 P1口,在8051/80C51单片机中,P1口只有通用I/O接口一种功能,它的每一位可以分别定义为输入或输出,其输入输出原理特性与P0口作为通用I/O接口使用时一样。P1口具有驱动4个LSTTL负载的能力。在8052/80C52单片机中,P1口P1.0与P1.1除作为通用I

7、/O接口线外,还具有第二功能,即P1.0可作为定时器/计数器2的外部计数脉冲输入端T2,P1.1可作为定时器/计数器2的外部控制输入端T2EX。,5.1.3 P2口,P2口也是一个准双向I/O口,其1位内部结构见图5.3。在访问外部存储器时,P2口作为高8位地址输出口,在其他时候作为一般I/O接口使用。,5.1.3 P2口,图5.3,5.1.3 P2口,当作为准双向通用I/O口使用时,控制信号为低电平无效,多路转换器MUX接通锁存器Q端,锁存器Q端经反相器3接控制场效应管V1,其工作原理与P1相同,负载能力也与P1相同。当作为外部扩展存储器的高8位地址总线使用时,控制信号应为高电平“1”有效,

8、多路转换开关MUX接通地址信号,来自程序计数器PC的高8位地址PCH,或数据指针DPTR的高8位地址DPH经反相器3和V1反相后复原在P2.x口的引脚上,输出高8位地址A8A15。在上述情况下,口锁存器的内容不受影响,所以,取指或访问外部存储器结束后,由于转换开关又接至左侧,使输出驱动器与锁存器Q端相连,引脚上将恢复原来的数据。,5.1.4 P3口,P3口是一个多功能的8位口,可以字节访问也可位访问,其字节访问地址为B0H,位访问地址为B0HB7H。P3口的功能:(1)可作I/O口使用,为准双向口。这方面的功能与P1口一样。(2)每一位均具有第2功能。,5.1.4 P3口,图5.4,5.1.4

9、 P3口,当P3口作为通用I/O接口时,要求第2功能输出线保持高电平,使与非门3的输出取决于口锁存器的状态。在这种情况下,P3口仍是1个准双向口,它的工作方式、负载能力均与P1、P2口相同。当P3口作为第2功能(各引脚功能见表5.1)使用时就不能再做通用输出口使用,其锁存器Q端必须为高电平,以允许第2功能输出,在做第2功能输入时,虽仍做通用输入口,但已无实际意义。,5.1.5 接口的使用原则,1.I/O接口的读、写、修改每个I/O口均有两种“读”方式:读引脚和读锁存器。读引脚:是读外部接口的电平信号,读引脚信号有效。真正读引脚的指令只有 MOV A,Px读锁存器:是将接口锁存器的Q端信号读回,

10、写锁存器信号有效。读锁存器指令主要用于读修改写指令。如下列这些指令:如:ORL、XRL、JBC、CPL、INC、DEC、DJNZ、MOV Px,y、CLR Px.y和SET Px.y。,5.1.5 接口的使用原则,2.使用原则MCS-51单片机中的4个I/O口在实际使用中,一般遵循以下用法:P0口一般做系统扩展地址低8位/数据复用口,P1口一般做I/O扩展口,P2口做系统扩展地址高8位和I/O口扩展的地址译码用,P3口做中断输入、串行通用口使用。在各个口的带负载能力和接口要求上,由于P0口的输出级与P1P3口的输出级在结构上不同,所以,要求也不同。P0口的每一位可驱动8个TTL输入,在做通用I

11、/O口使用时,输出级是开漏电路,故需外部加上拉电阻。在做地址/数据总线使用时,不需要外接上拉电阻。P1P3的输出级内部有高效的上拉电阻,每一位输出可驱动4个TTL输入。,在实际使用中,一般用户在I/O扩展时,很难计算I/O的负载能力。对扩展集成芯片,如74LS系列的一些大规模集成芯片(如8155、8255、8253、8259等),都可与MCS-51直接接口。其他一些扩展用芯片,使用中可参考器件手册及典型电路。对于一些线性元件,如键盘、码盘及LED显示等输入/输出设备,由于MCS-51单片机提供不了足够的驱动电流,应尽量设计驱动部分。,5.1.5 接口的使用原则,5.2 MCS-51单片机中断系

12、统,5.2 MCS-51单片机中断系统一、中断的基本概念“中断”是处理事件的一个“过程”,这一过程一般是由计算机内部或外部某种紧急事件引起并向主机发出请求处理的信号,主机在允许情况下响应请求,暂停正在执行的程序,保存好“断点”处的现场,转去执行中断处理程序,处理完后恢复现场,自动返回到原断点处,继续执行原程序。这一处理过程就称为“中断”。,5.2 MCS-51单片机中断系统,中断程序与子程序的区别:调用中断服务程序的过程类似于调用子程序,其区别在于调用子程序在程序中是事先安排好的,而何时调用中断服务程序事先却无法确定,因为“中断”的发生是由外部因素决定的,程序中无法事先安排调用指令,因此,调用

13、中断服务程序的过程是由硬件自动完成的。,5.2.1 中断的基本概念,图5.5 中断执行过程,1.中断源:中断源就是中断请求信号的来源。2.中断响应与返回3.优先级控制图5.6 二级中断嵌套的中断过程,5.2.1 中断的基本概念,二、中断源和中断请求标志 中断源是指在计算机系统中向CPU发出中断请求的来源,中断可以人为设定,也可以是为响应突发性随机事件而设置。通常有I/O设备、实时控制系统中的随机参数和信息故障源等。可分为外部中断和内部中断。,5.2.2 中断源和中断请求标志,5.2.2 中断源和中断请求标志,图5.7 中断系统结构,IT0(IT1):外部中断0(或1)触发方式控制位。IT0(或

14、IT1)=0,则选择外部中断为电平触发方式,低电平有效;IT0(或IT1)=1,则选择外部中断为边沿触发方式,负跳沿有效。这两位由用户用根据需要用软件编程写入“1”或“0”,进而控制外中断请求信号方式。可以使用字节操指令,也可用位操作指令:CLR IT0;定义外中断0为电平触发方式。ORL TCON,#05H;定义两外中断均为脉冲触发方式,5.2.2 中断源和中断请求标志,1外部中断由P3.2、P3.3输入中断请求信号,外部中断请求有两种触发方式:电平触发及边沿触发。用户可以通过对特殊功能寄存器TCON中IT0和IT1位的编程来选择。相应位定义格式如下:,IE0(IE1):外部中断0(或1)的

15、中断请求标志位。(硬件置位、硬件复位)IE0(IE1)=1,表示()检测到有效的中断请求信号;IE0(IE1)=0,表示()上无有效的中断请求信号。,5.2.2 中断源和中断请求标志,2内部中断内部中断有:定时器/计数器T0/T1的溢出中断,串行口的发送/接收中断。T0/T1的溢出中断标志位TF0、TF1:对外部脉冲计数由P3.4、P3.5输入脉冲信号。当T0/T1计数到由全1变为全0时,由硬件自动置位TCON的TF0或TF1,向CPU申请中断。CPU响应中断后能自动撤除中断请求信号(硬件复位)。,5.2.2 中断源和中断请求标志,串行口的中断标志位TI、RI:当串行口发送完或接收完一帧信息后

16、,通过接口硬件自动置位SCON的TI或RI位向CPU申请的。当CPU响应中断后,需用户采用软件方法清零,以便撤除中断请求信号。,5.2.2 中断源和中断请求标志,串行口控制器SCONTI:串行口发送中断源。发送完一帧,由硬件置位。响应中断后,必须用软件清0。RI:串行口接收中断源。接收完一帧,由硬件置位。响应中断后,必须用软件清0。,5.2.2 中断源和中断请求标志,三、中断系统控制1中断允许控制寄存器 MCS-51单片机对各中断源的中断开放(允许)或关闭(屏蔽)是由内部的中断允许寄存器IE的各位来进行两级控制的。所谓两级控制是指各个中断源的允许控制位与一个中断允许总控位EA配合实现对中断请求

17、的控制。,EA(IE.7):允许禁止全部中断。当EA=0,则禁止所有中断的响应;当EA1,则各中断源的响应与否取决于各自的中断控制位的状态。,5.2.3 中断系统控制,5.2.3 中断系统控制,X(IE.6):保留位,无意义。ET2(IE.5):定时计数器2(8052型单片机)的溢出或捕获中断响应控制位。ET2=0则禁止中断响应(关中断);ET2=1为允许中断响应(开中断)。ES(IE.4):串行通信接收发送中断响应控制位。ES0,禁止中断响应(关中断);ES=1,允许中断响应(开中断)。ETi(IE.3,IE.1):定时器计数器i(i=0、1)的溢出中断响应控制位。ETi=0,禁止中断响应(

18、关中断);ETi=1,则允许中断响应(开中断)。EXi(IE.2、IE.0):外部中断i()中断响应控制位。EXi=0,禁止中断响应(关中断);EXi=1则允许中断响应(开中断)。,5.2.3 中断系统控制,例如:要使INT0开中(其余关中),可执行下列指令:MOV IE,#1000000lB;或者:SETB EA;SETB EX0;,5.2.3 中断系统控制,2中断优先级控制 CPU同一时间只能响应一个中断请求。若同时来了两个或两个以上中断请求,就必须有先有后。MCS-51单片机的中断源有两个用户可控的中断优先级,即高、低中断优先级,从而实现中断嵌套。,5.2.3 中断系统控制,CPU响应中

19、断的原则是:1)先高后低 如果多个中断请求同时出现,CPU首先响应优先级别最高的中断请求;2)高可断低 高优先级的中断请求可中断正在执行的低优先级中断服务程序,实现中断嵌套;3)同低不断 同级或低优先级的中断请求不能中断正在执行的中断服务程序。如果有两个或两个以上的同一优先级别的中断源同时向CPU申请中断,则这些同级中断源的中断优先权按CPU对内部硬件的查询次序决定。,5.2.3 中断系统控制,IP寄存器的格式如下:(可通过软件设置,定义各中断源的中断优先级别)、(IP.6、IP.7):保留位,无定义。PT2(IP.5):T2的中断优先级设置位。通过编程设置 PT2=1,则定义为高优先级中断;

20、设置PT2=0,则定义为低优先级中断。PS(IP.4):串行通信中断优先级设置位。软件设置 PS=1,则定义为高优先级中断;设PS=0,则定义为低优先级中断。,5.2.3 中断系统控制,PTi(IP.3、IP.1):Ti中断优先级设置位。软件设置PTi=1,则定义为高优先级中断;设置PTi=0,则定义为低优先级中断。PXi(IP.2、IP.0):外部中断i中断优先级设置位。软件设置PXi=1,则定义为高优先级中断;设置PXi=0,则定义为低优先级中断。例如:若要将INT1、串行口设置为高优先级,其余中断源设置为低优先级,可执行下列指令:MOV IP,#00010100B;,5.2.3 中断系统

21、控制,当同时有两个或两个以上优先级相同的中断请求时,则由内部按查询优先顺序来确定该响应的中断请求,其优先顺序由高向低顺序排列。优先顺序排列如下:,中断优先原则:1、低级不打断高级2、高级不睬低级3、同级不能打断4、同级、同时中断,事先约定。,5.2.4 中断处理过程,四、中断处理过程中断处理过程大致可分为四步:中断请求、中断响应、中断服务、中断返回。1.中断请求 中断源发出中断请求信号,相应的中断请求标志位(在中断允许控制寄存器IE中)置“1”。,5.2.4 中断处理过程,2中断响应1)响应的条件 CPU在每个机器周期的S6按照优先级查询中断标志位,当相应中断源有中断请求且满足如下条件之一时,

22、MSC-51单片机响应中断。(1)无同级或高级中断正在处理或CPU处在非中断响应状态,CPU处于开中断(即EA=1)状态且相应中断是开放的(中断允许寄存器IE相应位置1)。(2)若CPU正在响应某一中断请求时又来了新的中断请求,则应满足高级中断可以中断低级中断,实现中断嵌套;低级中断只能等待现有中断服务完成后再被响应的原则。(3)若CPU现行执行的指令为RETI或任何访问IE、IP(如SETB EA)的指令时,则执行完该指令且紧随其后的另一条指令也已执行完毕后才响应该中断请求。,5.2.4 中断处理过程,2)中断响应过程 首先,根据中断源的优先级高低,对相应的优先级状态触发器置1;然后,保护断

23、点,把当前程序计数器PC的内容压入堆栈。其次,封锁同级和低级中断,以防在响应中断期间受其他中断的干扰,清除相应的中断请求标志位(串行口中断请求标志RI和TI除外);最后,根据中断源入口地址,转入执行相应中断服务程序,各中断服务程序的入口地址见表5.1。,5.2.4 中断处理过程,表5.1 中断源入口地址,5.2.4 中断处理过程,3)中断响应时间 所谓中断响应时间是指CPU检测到中断请求信号到转入中断服务程序入口所需要的机器周期数。MCS-51单片机响应中断的最短时间为3个机器周期,时间最长需要8个机器周期。,5.2.4 中断处理过程,3 执行中断服务程序 中断服务程序应包含以下几部分:保护现

24、场:中断时刻单片机存储单元中的数据或状态.(2)允许中断和禁止中断 在CPU执行当前中断服务程序的过程中,往往又会 有其它中断源的中断请求出现。(3)执行中断服务程序主体,完成相应操作(4)恢复现场,5.2.4 中断处理过程,4 中断返回 在中断服务程序最后,必须安排一条中断返回指令RETI,当CPU执行RETI指令后,自动完成下列操作:恢复断点地址。开放同级中断,以便允许同级中断源请求中断。,5.2.5 中断请求的撤除,五、中断请求的撤除 中断源发出中断请求,相应中断请求标志置“1”。CPU响应中断后,必须清除中断请求“1”标志。否则中断响应返回后,将再次进入该中断,引起死循环出错。对定时/

25、计数器T0、T1中断,外中断边沿触发方式,CPU响应中断时就用硬件自动清除了相应的中断请求标志。对外中断电平触发方式,需要采取软硬结合的方法消除后果。对串行口中断,用户应在串行中断服务程序中用软件清除TI或RI。,5.2.6 中断的应用及编程,六、中断的应用及编程 中断初始化 设置堆栈指针SP 定义中断优先级 定义外中断触发方式 开放中断 安排好等待中断或中断发生前主程序应完成的操作内容。,5.2.6 中断的应用及编程,中断服务主程序 在中断服务入口地址设置一条跳转指令,转移到中断服务程序的实际入口处。根据需要保护现场。中断源请求中断服务要求的操作。恢复现场。与保护现场相对应,注意先进后出、后

26、进先出操作原则。中断返回,最后一条指令必须是RETI。,5.2.6 中断的应用及编程,例5-1 若要求外部中断 引脚为边沿触发方式,以及处于高中断优先级,编写中断系统初始化程序。解:程序的编制有两种方法,一种是采用位操作指令进行编制,另一种是字节型指令编制。程序分别如下。方法一:SETB EASETBEX1;开INT1中断SETB PX1;令INT1为高优先级SETBIT1;令INT1为边沿触发方式方法二:MOVIE,#84H;开INT1中断ORLIP,#04H;令INT1为高优先级ORL TCON,#04H;令INT1为边沿触发方式,5.2.6 中断的应用及编程,例5-2:单片机通过P1口以

27、中断方式向外设输出数据,当外设准备好接收数据时,就发出选通信号,经触发器和非门至INT0,如下图所示。请编制相应程序。,5.2.6 中断的应用及编程,解:当外设准备好接收一个数据后,发出选通信号,使触发器输出高电平后经非门至INT0引脚,向CPU发出中断请求,CPU响应这个中断请求后,在中断处理程序中先撤除中断请求信号,(通过P3.0=1,使INT0=1)再由P1口将单片机内部的数据输出到外设。ORG 0000HSTART:LJMP MAIN ORG 0003H LJMP IINT0 ORG 0030H;主程序MAIN:CLR IT0;低电平触发 SETB EA SETB EX0;开中断 SE

28、TB PX0;优先级设置 MOV DPTR,#1000H;外设首地址.,5.2.6 中断的应用及编程,ORG 0100HIINT0:PUSH PSW;中断处理程序 PUSH ACC CLR P3.0 NOP NOP SETB P3.0;撤除INT0 MOV A,P1;输入数据 MOVX DPTR,A;保存数据 INC DPTR.POP ACC;恢复现场 POP PSW RETI;返回主程序,5.3 MCS-51单片机定时器/计数器,5.3 MCS-51单片机定时器/计数器软件定时:循环程序,定时准确,无需硬件电路,但增加CPU开销硬件定时:硬件电路实现,不占用CPU时间,使用不够方便可编程定时

29、/计数器:对系统时钟脉冲的计数定时,计数值通过程序设定,定时准确,使用灵活方便,5.3 MCS-51单片机定时器/计数器,定时器/计数器可以是独立的集成芯片,也可以构成于单片机内部,但无论何种形式都具有以下共性:1、定时、计数器的核心部件是一个加1计数器。两种工作方式的区别在于计数脉冲来源,定时器/计数器可以工作于计数方式也可以工作于定时方式。书P812、定时器/计数器的计数值在范围内是可变的,这取决于计数器的位数。计数的最大值也就限定了定时的最大值。书P853、在到达设定的定时或计数值时发出溢出中断申请,实现定时控制。PPT 5.2节,5.3 MCS-51单片机定时器/计数器,在MCS-51

30、单片机内部有两个16位定时器/计数器T0和T1,它们均可作为定时器或计数器使用,均具有4种不同的工作方式,用户可通过对特殊功能寄存器的编程,方便地选择适当的工作方式及设定T0或T1工作于定时器还是计数器。,(1):何时控制启动计数器?问题:(2):如何控制是定时还是计数?(3):如何控制定时/计数的长短?,5.3.1 T0、T1的结构,一、T0、T1的结构1内部结构,外部输入脉冲,图5.8,1 加法计数器的初值可以由程序设定,设置的初值不同,加法器达到溢出所需的计数值或定时时间就不同。2 对定时器/计数器工作模式、工作方式的设定及控制是通过方式选择寄存器TMOD和控制寄存器TCON这两个特殊功

31、能寄存器来完成的。,5.3.1 T0、T1的结构,2定时器/计数器方式选择寄存器TMOD 定时器/计数器T0、T1都有4种工作方式,可通过程序对TMOD的编程来设置。其位定义如下:,5.3.1 T0、T1的结构,C/:定时或计数功能选择位,“1”时为计数方式;“0”时为定时方式。M1、M0:定时器/计数器工作方式选择位,,5.3.1 T0、T1的结构,5.3.1 T0、T1的结构,GATE:门控位,用于控制定时器/计数器的启动是否受外部引脚中断请求信号的影响。当GATE=0时,TRx=1,启动Tx计数;TRx=0,停止Tx计数。当GATE=1时,仅当TRx=1且=1时,才允许Tx计数,该位由软

32、件进行设置。GATE=0 TRx=1 一般情况下,选用该方法,3定时器/计数器控制寄存器TCON,TF0(TF1):T0(T1)溢出中断标志位。当T0/T1启动计数后,从初值开始加1计数,当T0(T1)计数溢出时,由硬件将该位置位,并在允许中断的情况下,向CPU发出中断请求信号,CPU响应中断转向中断服务程序时,由硬件自动将该位清零,TF0(TF1)也可以由程序查询或清零。,5.3.1 T0、T1的结构,5.3.1 T0、T1的结构,TR0(TR1):T0(T1)运行控制位。当GATE=0时,TRx=1,启动Tx计数;TRx=0,停止计数。当GATE=1时,仅当TRx=1且=1时,才允许Tx计

33、数,该位由软件进行设置。控制字中其余用于 中断控制。,5.3.2 T0、T1的4种工作方式,二、T0、T1的4种工作方式 T0和T1都具有4种工作方式,当工作于方式0、1、2时,T0和T1功能相同,但工作在3时,其功能不同。下面分别介绍这4种工作方式。1工作方式0(M1M0=00)定时/计数方式0是13位计数器,即THx高8位(作计数器)和TLx的低5位(32分频的定标器)构成,TLx的高3位未用。(x=0或1)计数时,TLx的低5位溢出后向THx进位,THx溢出后将TFx置位,并向CPU申请中断。,图5.9 定时/计数方式0:13位计数器示意图,5.3.2 T0、T1的4种工作方式,2工作方

34、式1(M1M0=01),由THx和TLx组成16位计数器。其组成结构与定时计数方式0完全相同,但计数范围比定时计数方式0扩大了很多。计数信号从TLx的低位输入,计数每溢出一次,THx计数器加1。当16位由全“1”变成全“0”时,最高位产生溢出,置位TFx,向主机请求中断。,图5.10 定时计数方式1:16位计数器示意图,5.3.2 T0、T1的4种工作方式,5.3.2 T0、T1的4种工作方式,模式0、1的特点:,13位和16位的计数器模式。启动后,从某一个初值的基础上进行“加一”计数。当计到“全”时再来一个计数脉冲,计数器就会产生一个“溢出”即TFx=1,此时计数器本身为“全零”。如果需要重

35、复性的完成某一值的定时或计数,需要在每一次计数前不断的重新预装初值,称之为“软件重装初值”。,5.3.2 T0、T1的4种工作方式,3工作方式2(M1M0=10)TLx自动设置初始值,由TLx作为8位计数器,THx作为计数初值寄存器,设置初值时同时送THx和TLx。TLx进行加1计数,在计数溢出时,不仅置溢出标志TFx,还自动将THx中的内容自动送入TLx,使TLx重新从初值开始计数。THx的内容可由软件置入,且在计数器工作期间其值不变。非常适合进行重复性定时的场合,如产生连续方波信号等。编成中省去了软件重装初值的麻烦。方式2适用于产生固定时间间隔的控制脉冲,也可以做为串口波特率发生器。,5.

36、3.2 T0、T1的4种工作方式,图5.11 定时/计数方式2:8位自动再装入计数器示意图,5.3.2 T0、T1的4种工作方式,4工作方式3(M1M0=11)(只有T0有方式3),将定时器计数器T0分成两个独立的8位计数器,用TL0组成完整的8位定时器计数器(既可以定时,又可以计数),用TH0组成只能定时的8位定时器。TL0占用原T0的各个控制位、引脚和中断标志;TH0分别借用了定时器T1的TR1、TF1和ET1为自己服务,使TH0能象TL0那样用TR1启动定时,并用TF1来作为TH0的溢出中断的标志。T1无方式3,若硬设为方式3,则T1立即停止计数。T0为方式3时,T1可为方式02,仅用T

37、1的C/T位进行控制,计数器溢出时,只能将输出送入串口或不用于中断的场合。适用场合:T0较少选用方式3,只在T1用作波特率发生器时,T0才选作方式3,T1常设为方式2的波特率发生器。,5.3.2 T0、T1的4种工作方式,图5.12 定时/计数方式3:二个8位计数器示意图,5.3.2 T0、T1的4种工作方式,图5.13 计数格式,5.3.3 定时器/计数器应用举例,三、定时器/计数器应用举例1.初始化步骤,通常情况下设置顺序大致如下:(1)工作方式控制字(TMOD)的设置;(2)计数初值的计算及装入TLx、THx;(3)中断允许位ETx、EA的设置,使主机开放中断;(4)给中断优先级寄存器I

38、P选送中断优先级字,以设定中断优先级;(5)启停位TRx的设置等。,5.3.3 定时器/计数器应用举例,2.计数器初值计算方法,假设将计数器计满为0所需要的计数值为N,应装入的计数初值为X,n为计数器的位数,则:X=2n-N 其中n与计数器工作方式有关。在方式0时n=13,在方式1时n=16,在方式2和方式3时n=8。,5.3.3 定时器/计数器应用举例,3.定时器初值计算方法,假设定时时间为T,机器周期为Tp,即12/晶振频率。X为定时器的定时初值,则:T=(2n-X)Tp X=2n-T/Tp(n同上),再将计算出的初值转换为二进制数TB,然后再分别送入THi、TLi(对于T0,i=0;对于

39、T1,i=1),5.3.3 定时器/计数器应用举例,例5-3:设定时时间T=5ms,机器周期Tp=2s,则可求得计数次数(T/TP)为5ms/2 s=2500次。P85 例5-2选用方式0:n=13,应设置计数初值X=213-(T/Tp)=8192-2500=5692,变成二进制数为(1011000111100)B,MOV THi,#0B1H;送高8位 MOV TLi,#1CH;送低5位(高3位为0),5.3.3 定时器/计数器应用举例,选用方式1:n=16,设置计数初值为:X=216-(T/Tp)=65536-2500=63036,变成二进制数为(1111011000111100)B,MOV

40、 THi,#F6H;送高8位 MOV TLi,#3CH;送低8位,5.3.3 定时器/计数器应用举例,在本例中,不能选方式2,因为 28=2562500。假设需要计数100次,则可选方式2:256-100=156,变成二进制数为(10011100)B,变成十六进制数为9CH,MOV THi,#9CH;送高8位 MOV TLi,#9CH;送低8位,5.3.3 定时器/计数器应用举例,例5-4:方式0应用:利用定时器/计数器T0在P1.0引脚输出周期为2ms的方波,设时钟频率为6MHz,编写相应的程序。P86 例5-4可采用定时中断的方式,每1ms产生一次中断,在中断服务程序中将输出信号取反即可。

41、定时器T0的中断入口地址为000BH。初值计算。因T=(2n-X)/Tp,则计数初值为:X=2n-T/Tp=213-500=8192-500=7692=1111000001100B则TH0=F0H,TL0=0CH。,5.3.3 定时器/计数器应用举例,确定初始化控制字。主要对IP,IE,TCON,TMOD的相应位进行正确的设置,本例假设从系统复位开始。TMOD=00000000B=00H,TCON=0。程序设计:T0的中断服务程序,除了产生要求的方波外,还要注意将时间常数送入定时器中,为下一次产生中断做准备。,5.3.3 定时器/计数器应用举例,ORG 000BH;T0中断服务程序入口LJMP

42、 ZD;转至INT处ORG 2000H;主程序MOV TMOD,00H;置T0为定时方式0 MOV TH0,0F0H;设置计数初值 MOV TL0,0CHSETB EA;CPU开中断SETB ET0;允许T0中断SETB TR0;启动T0HALT:SJMP$;暂停,等待中断 ZD:CPL P1.0;输出方波MOV TH0,0F0H;重新装入计数初值MOV TL0,0CHRETI;中断返回,5.3.3 定时器/计数器应用举例,例5-5 方式2应用:假设,有一个周期为10ms的脉冲信号,加在引脚T0/P3.4上。现要求该引脚每发生一次负跳变,P1.0端就输出1个2ms脉宽的同步负脉冲,如图所示。假

43、设单片机晶振频率为12MHz。,5.3.3 定时器/计数器应用举例,解:可将T0设定为方式2计数方式,初值可设为FFH,即外部脉冲由P3.4口发生一次负跳变时,计数器加1即产生溢出,并向CPU发中断。程序在T0产生一次负跳变后,使P1.0产生2ms的同步负脉冲,可利用T1采用方式1产生2ms定时生成(初值计算)。程序如下(中断方式):,ORG 0000H AJMP MAINORG000BH;T0中断入口地址AJMPLOOP1ORG 001BH;T1中断入口地址AJMPITIPORG MAINMAIN:MOV TMOD,#16H;T0初始化程序MOV TL0,#0FFH;T0初值MOV TH0,

44、#0FFHSETB TR0;启动T0,5.3.3 定时器/计数器应用举例,SETB ET0;允许T0中断SETB EA;开中断MOV TL1,#30H;T1置初值MOV TH1,#0F8H SETBP1.0;P1.0初始为高电平MOV IP,HERE:AJMP HERE;等待TL0/T1中断 LOOP1:CPL P1.0;T0中断服务程序SETB TR1;启动T1SETB ET1;允许T1中断RETIITIP:MOV TL1,#30H;T1中断服务程序MOV TH1,#F8HCPL P1.0;P1.0取反 CLRET1;屏蔽T1中断RETI,5.3.3 定时器/计数器应用举例,程序如下(查询方

45、式):首先选T0为方式2,外部事件计数方式。当P3.4(T0)引脚上的电平发生负跳变时,T0计数器加1,溢出标志TF0置1;然后改变T0为2ms定时功能,采用方式1,使P1.0输出由1变为0。T0定时到产生溢出,使P1.0引脚恢复输出高电平。T0先计数,后定时,分时操作。START:MOV TMOD,#06H;T0方式2,外部计数方式 MOV TH0,#0FFH;T0计数初值 MOV TL0,#0FFH SETB TR0;启动T0计数 MOV IE,#00H;关中断 SETBP1.0;P1.0初始为高电平LOOPl:JBC TF0,PTF01;查询T0溢出标志,TF01时转移,且TF00(查P

46、3.4负跳变),5.3.3 定时器/计数器应用举例,SJMP LOOPl;等待T0计数溢出中断PTF01:CLR TR0;停止计数 MOV TMOD,#01H;T0方式1,定时 MOV TH0,#0F8H;T0定时2ms初值 MOV TL0,#30H CLR P1.0;P1.0清0 SETB TR0;启动定时2msLOOP2:JBC TF0,PTF02;查询溢出标志,定时到TF0=l转移,且TF00(第一个2ms到否?)SJMP LOOP2;等待T0定时溢出中断PTF02:SETB P1;P1.0置1(到了第一个500s)CLR TR0;停止计数 SJMP START,5.3.3 定时器/计数

47、器应用举例,例5-6 方式3应用:设晶振频率为6MHz,定时/计数器T0工作于方式3,TL0和TH0作为两个独立的8位定时器,通过TL0和TH0的中断分别使P1.0和P1.1产生400s和800s的方波。,解:当采用方式3时,对于TH0来说,需要借用定时器T1的控制信号。计算计数初值:X0=28-200/2=156=9CHX1=28-400/2=56=38H确定TMOD方式字:对定时器T0来说,M1M0=11、C/T=0、GATE=0,定时器T1不用,取为全0。则TMOD=00000011B=03H。,5.3.3 定时器/计数器应用举例,程序如下:ORG MAIN;主程序MAIN:MOV TM

48、OD,03H;T0工作于方式3MOV TL0,9CH;置计数初值MOV TH0,38HSETB TR0;启动TL0SETB ET0;允许T0中断(用于TL0)SETB TR1;启动TH0SETB ET1;允许T1中断(用于TH0)SETB EA;CPU开中断HALT:SJMP HALT;暂停,等待中断ORG 000BH;TL0中断服务程序CPL P1.0;P1.0取反 MOV TL0,9CH;重新装入计数初值 RETI;中断返回 ORG 001BH;TH0中断服务程序 CPL P1.1;P1.1取反 MOV TH0,38H;重新装入计数初值 RETI;中断返回,5.3.3 定时器/计数器应用举

49、例,注意:运行中读定时计数器可随时读写THx和TLx,比如实时显示计数值等,但要注意读取时由于分时读THx和TLx所带来的特殊性,例如先读THx再读TLx,由于读取过程中Tx一直在计数,可能会出现TLx向THx进位的情况,读的值就不正确。反之亦然,因此,先读THx再读TLx,然后再重读THx,若两次读取的THx一致,则正确,反之要全部重读。,5.4 MCS-51单片机串行接口,5.4 MCS-51单片机串行接口,基础知识,所谓通信是指计算机与计算机或计算机与外设之间的数据传输,这里的“信”是指信息,即是由数字和构成一个或一批数据。数据通信通常有两种方式,即并行通信和串行通信。并行通信的特点是所

50、有的数据位被同时发送或接收,数据传送速度快,但并行通信需要多条(8、16条)数据线和控制线,传送成本高,传送距离短;串行通信的数据传送是按位进行传送的,只需两条线,一条用于发送数据,另一条用于接收数据,传送成本很低,且通信距离远,但比并行通信传输速度慢。,5.4.0 MCS-51单片机的串行口,按数据的通路和传送方向不同,串行通信可分为单工、半双工、全双工3种方式。书P169 单工方式(simplex):数据仅向一个方向传送,即一方始终为发送端,另一方始终为接收端,中需一根数据线即可完成数据传送。半双工方式(half duplex):数据可双向传送,但在任一时刻只能由其中的一方发送数据,另一方

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号