中南大学交通运输工程学院中南大学交通运输工程学院中南大学是一所学科齐全、工学和医学见长、具有优良办学传统的教育部直属全国重点大学,是首批进入国家“211工程”重点建设的高校,也是国家“985工程”部省重点共建的高水平大学。2000年4月29日,经国务院批准,由湖南医科大学、长沙铁道学院与中南工业大学合并组建而成。2004年列为中管高校。重点和难点重点和难点�定时器/计数器的初始化。�定时器/计数器与中断的综合应用�中断响应的条件和响应过程。�51单片机串行通信的基本原理。�单片机串行通信的应用。教学目的教学目的�了解定时器/计数器的结构与工作原理。�掌握定时器/计数器的四种工作方式的特点及应用。�掌握串行通信基础知识。�掌握MCS-51MCS-51MCS-51MCS-51单片机的串行通信的基本原理。�了解中断的基本概念和功能。�掌握中断系统的中断处理过程。第6666章MCSMCSMCSMCS-51515151定时////计数器、串行口及中断系统实现定时功能:�软件定时:用执行指令的时间开销来实现,如第3章中的延时函数。软件定时不占用硬件资源,但占用了CPU时间,降低了CPU的利用率。�采用时基电路定时:例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值不能由软件进行控制和修改,即不可编程。�采用可编程芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。在单片机的定时/计数器不够用时,可以考虑进行扩展。比较方便的办法是利用单片机内部的功能模块--定时/计数器。第6666章MCSMCSMCSMCS-51515151定时////计数器、串行口及中断系统6.16.16.16.1MCS-51定时/计数器计数器基本概念:数电中的一种器件,以四位计数器为例:每输入一个脉冲,电路按二进制的关系动作一次((((加计数))))Q3Q2Q1Q0Cy初值00000第1个脉冲00010第2个脉冲00100第15个脉冲11110第16个脉冲00001计数范围:0000~15(215(215(215(24444-1)-1)-1)-1)一般计数器还可以预置数,在预置数的基础上进行+1111或-1111计数6.1MCS6.1MCS--5151定时定时//计数器计数器((续续1)1)定时器:实质上还是计数器,只是其输入脉冲的频率是已知的(固定的),其计数器值×脉冲的周期=定时的时间,称为定时器。定时器/计数器用途很广,如测频率f,转速n,定时采样,事件计数。MCS-51单片机内部有2个16位定时/计数器:T0、T1。当作定时器用时,其计数脉冲来自振荡电路的12分频信号。当作计数器用时,其计数脉冲来自引脚T0(P3.4)T0(P3.4)T0(P3.4)T0(P3.4)、、、、T1(P3.5)T1(P3.5)T1(P3.5)T1(P3.5)。T0和T1是可编程的(可由指令操作控制寄存器来确定它的工作):1.确定工作方式:定时还是计数;2.预置初值,并可随时读其计数值(可以用指令访问它);3.定时时间到/计数溢出时,是否要发中断请求;4.启动、停止。6.1.1定时////计数器结构与工作原理1.结构T0T0T0T0和T1T1T1T1都是16161616位,分别由2222个8888位的计数器组成:TH0TH0TH0TH0和TL0TL0TL0TL0,TH1TH1TH1TH1和TL1TL1TL1TL1。特殊功能寄存器TMODTMODTMODTMOD中的位控制其工作方式,TCONTCONTCONTCON中的位控制它们启、停。对TL0TL0TL0TL0、TH0TH0TH0TH0、TL1TL1TL1TL1和TH1TH1TH1TH1可读、写((((预置))))。内部总线工作方式工作方式TH1TL1TH0TL0TCONTMODT1(P3.5)T0(P3.4)CPU6.1.1定时////计数器结构与工作原理2.工作原理(1)定时器:计数脉冲来自时钟的12分频率信号,+1计数(启动后)(2)计数器:计数脉冲来自引脚T0、T1,+1计数(启动后,脉冲下沿)�当计数器各位都为1时,再输入一个脉冲就使计数器回零,称为溢出。计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求。如果工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。�可见,由溢出时的计数值减去计数器初值就是加1计数器的定时时间/计数值。调整计数器初值,也就是调整了定时时间/计数值。�定时时间和计数值可以编程设定,其方法是置THx,TLx一个初值,在此初值上进行加计数。�计数频率问题:f1/24时钟频率,若12MHz时钟,则fmax=0.5MHz。�51单片机定时/计数器的工作由两个特殊功能寄存器控制:TMOD和TCON。�TMOD用于设置T/C的工作方式;�TCON用于控制T0、T1的启动与停止,并包含了T0、T1的状态。1.1.1.1.方式寄存器方式寄存器方式寄存器方式寄存器TMOD(89H)(TMOD(89H)(TMOD(89H)(TMOD(89H)(不可位寻址不可位寻址不可位寻址不可位寻址))))TMOD用于设置定时/计数器的工作方式,TMOD的高4位控制T1,低4位控制T0。其格式如下:6.1.2T/C6.1.2T/C6.1.2T/C6.1.2T/C的方式寄存器和控制寄存器(TMOD,TCON)(TMOD,TCON)(TMOD,TCON)(TMOD,TCON)GATEC/TM1M0GATEC/TM1M0D7D0TMODTMODTMODTMODT1T06.1.2T/C的方式寄存器和控制寄存器续1位:=0为定时器方式,=1为计数器方式。门控位GATE:GATE=0,若TR0(TR1)=1,则启动T0(T1)定时/计数。GATE位=1:若TR0=1与=1,则启动T0工作;若TR1=1与=1,则启动T1工作。工作方式选择位M1M0T0分成两个独立的8位计数器,T1在方式3时停止工作311自动重装入初值的8位计数器*常用21016位定时器/计数器*常用10113位定时器(TH的8位和TL的低5位)000说明方式M1M0C/TINT0INT16.1.2T/C6.1.2T/C的方式寄存器和控制寄存器续的方式寄存器和控制寄存器续222.控制寄存器TCON(88H)(可位操作)TCON控制寄存器各位的定义如下:IT0IE0IT1IE1TR0TF0TR1TF1D7D6D5D4D3D2D1D088H与外中断有关TR0(TR1)TR0(TR1)TR0(TR1)TR0(TR1):为T0(T1)T0(T1)T0(T1)T0(T1)运行控制位。TR0(TR1TR0(TR1TR0(TR1TR0(TR1)=1)=1)=1)=1时启动T0(T1),T0(T1),T0(T1),T0(T1),TR0(TR1)=0TR0(TR1)=0TR0(TR1)=0TR0(TR1)=0时停止T0(T1)T0(T1)T0(T1)T0(T1)。该位由软件进行设置。TF0(TF1)TF0(TF1)TF0(TF1)TF0(TF1):为T0(T1)T0(T1)T0(T1)T0(T1)溢出标志位。当T0(T1)T0(T1)T0(T1)T0(T1)计数溢出时,,,,由硬件置位,并在允许中断的情况下,,,,发出中断请求信号。当CPUCPUCPUCPU响应中断时,,,,由硬件自动清0000。该位也可软件清0000。6.1.3定时////计数器的工作方式T/CT/CT/CT/C有4444种工作方式,,,,由TMODTMODTMODTMOD寄存器中的M1M1M1M1、M0M0M0M0两位的二进制编码所决定。6.1.36.1.3定时定时//计数器的工作方式计数器的工作方式1.方式0为13位C/T,主要是为了兼容48系列单片机。一般不用。2.方式1(M1M0=10B)构成16位定时/计数器,其中THx(x=0,1)为高8位,TLx为低8位,满计数值为FFFFH。逻辑结构如图所示。****作定时器时,用门控位GATE=1GATE=1GATE=1GATE=1,可测量引脚INT1INT1INT1INT1的正脉冲宽度或门与门6.1.36.1.3定时定时//计数器的工作方式(续计数器的工作方式(续22))3.方式2(M1M0=10B)为一个自动重装的8位计数器:THx(x=0,1)作初值寄存器,由TLx进行8位计数。当TLx计数溢出回0时,不仅使TFx标志置1,而且还自动把THx送TLx中(THx中的初值不变)。此方式对定时很有用。T1用此方式,作为串行口的波特率发生器。逻辑结构如图所示:3.方式3只适用于T0。当T1处于方式3时相当于TR1=0,停止计数。当T0工作在方式3时,TH0和TL0被拆成2个独立的8位计数器。这时,TL0可作为定时/计数器使用,它占用T0所使用的控制位(C/T,GATE,TR0,TF0);而TH0只能作定时器用,它占用T1的两个控制信号TR1和TF1。在这种情况下,T1仍可用于方式0、1、2,但不能使用中断方式。6.1.46.1.46.1.46.1.4定时/计数器T2略52系列的单片机增加了一个16位的定时/计数器T26.1.36.1.3定时定时//计数器的工作方式(续计数器的工作方式(续33))6.1.56.1.56.1.56.1.5定时////计数器的初始化�由于MCS-51单片机的定时/计数器是可编程的,因此在使用之前需要进行初始化。在编程时主要注意两点:第一要正确写入控制字;第二进行计数初值的计算。一般情况下,包括以下几个步骤1.TMOD寄存器赋值:作定时还是计数,方式X,是否要GATE控制2.计算计数初值,对TLx,THx赋初值。3.根据需要,开放/禁止C/T中断.4.启动定时/计数:汇编指令:SETBTR0SETBTR1C51:C51:C51:C51:在在在在reg51.hreg51.hreg51.hreg51.h已有定义已有定义已有定义已有定义sbitTR0=TCONsbitTR0=TCONsbitTR0=TCONsbitTR0=TCON^^^^4;4;4;4;sbitTR1=TCONsbitTR1=TCONsbitTR1=TCONsbitTR1=TCON^^^^6;6;6;6;直接使用直接使用直接使用直接使用::::TR0=1;TR1=1;TR0=1;TR1=1;TR0=1;TR1=1;TR0=1;TR1=1;6.1.5定时/计数器的初始化(续1)初值的计算:加方式计数器:设所需的计数值为X计,初值为X初,则有X初+X计=模M①计数方式:X初=65536-X计(方式1);X初=256-X计(方式2)②定时方式:X初=65536-所需的定时时间/T(方式1);X初=256-所需的定时时间/T(方式2);T为计数周期:晶振频率为12MHZ时,T=1us;为6MHZ时,T=2us例6-1(P178):单片机的晶振频率为12MHz,要求产生500us的定时,试确定计数初值X。解:fosc=12MHz,T=1us,产生500us的定时需计数500,故采用方式1(16位定时器)。X=65536-500=10000H-1F4H=FE0CH:0xFE→THx,0x0C→TLx或THx=(-500)/256;TLx=(-500)%256;x=0,16.1.6定时////计数器应用举例1.作定时器用例6-2设晶振频率为12MHz,用T1定时,使P1.01.01.01.0引脚输出周期为2ms的方波。解:每1ms改变一次P1.0的电平,故定时时间为1ms.设T1作定时器工作在方式1,方式字TMOD=0001XXXXB=0x10。初值:65536-1000,或者-10001ms1ms1ms1ms1ms1ms1ms1msGATEC/TM1M0GATEC/TM1M0D7D0TMODTMODTMODTMODT1T06.1.6定时/计数器应用举例续1#includereg51.hsbitP1_0=P1^^^^0;//位TR1和TF1在reg51.h中