片微机原理第四章411定时、中断、串行.ppt
第四章第四章 定时、中断、串行口系统及应用定时、中断、串行口系统及应用第一节第一节 定时定时/计数系统及应用计数系统及应用主讲人:吴雪主讲人:吴雪 本章要点要点:1、定时器的结构、工作方式、初始化、编程应用2、中断系统的结构、中断的概念、中断的标志、中断优先级、中断响应、中断程序设计3、串行口的结构、串行通信的特点、串行通信的工作方式、波特率的设定难点:1、定时器的工作方式的设定和初始化2、中断响应及中断系统程序设计3、串行口的波特率的设定4.1.1 8051单片微机定时单片微机定时/计数器结构计数器结构8051单片微机内部有两两个个16位位可可编编程程的的定定时时计计数数器器(T0和和T1),可用作定时器定时,也可作为计数器记录外部脉冲个数。用指令可以设定其工作方式、定时时间、启动、停止等。T0由TH0和TL0两个8位寄存器组成;T1由TH1和TL1两个8位寄存器组成。T0和T1的工作方式通过8位寄存器TMOD设定;T0和T1的启、停由8位寄存器TCON控制。一、定时一、定时/计数器工作原理计数器工作原理两种功能:两种功能:定时定时 计数计数记录外脉冲的个数记录外脉冲的个数1、定时原理、定时原理定时器工作前先装入初值先装入初值,利用送数指令将初值装入TH0和TL0或TH1和TL1,高位数装入TH0和TH1,低位数装入TL0和TL1。当发出启动命令后,装初值寄存器开始计数,连续当发出启动命令后,装初值寄存器开始计数,连续加加1,每一个机器周期加,每一个机器周期加1一次,加到满值一次,加到满值(各位全各位全1)。若再加l则溢出,同时将初值寄存器清零。如果继续计数定时,则需要重新赋初值。一、定时一、定时/计数器工作原理计数器工作原理分析与定时有关的因数:分析与定时有关的因数:1、与与频频率率有有关关:12MHZ 一一个个机机器器周周期期1微微秒秒,6MHZ为为2微秒。微秒。2、与初值有关:、与初值有关:3、与定时器的大小有关、与定时器的大小有关2、计数原理:、计数原理:下降沿计数下降沿计数 检测一个检测一个1至至0的跳变需要二个机器的跳变需要二个机器周期,所以最高计数频率为振荡频率的周期,所以最高计数频率为振荡频率的1/24。二、方式寄存器二、方式寄存器TMOD(89H)TMOD各位的功能如下:各位的功能如下:1GATE门控位。门控位。GATE0,用启动命令启动,用启动命令启动 GATEl,门门脉脉冲冲控控制制。可可实实现现由由外外部部控控制制定定时时器的启停器的启停2定时计数方式选择位定时计数方式选择位C/T C/T0,T0或或T1为定时方式为定时方式 C/T1,T0或或T1为计数方式为计数方式GATEC/T M1M0GATEC/T M1 M0控制控制T1控制控制T0D7D6D5D4D3D2D1D0TMOD用来设定定时器工作方式,其格式如下:M1、M0两两位位可可组组合合成成4种种状状态态,控控制制定定时时器器的的4种种工工作作方方式式。每种方式的功能如表每种方式的功能如表41所列所列3方式选择位方式选择位M1、M0三、控制及标志寄存器三、控制及标志寄存器TCON外部中断0触发方式外部中断0中断标志位外部中断1触发方式选择外部中断1中断标志位定时器T0启、停控制位定时器T0溢出标志位定时器T1启、停控制位定时器T1溢出标志位TCON是一个八位寄存器。它控制定时器的启、停、溢出、中断等。有些位是控制设置,有些是标志位,各位都有对应地址,故可位寻址。TCON格式如下:格式如下:8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 位地址位地址TF1TR1 TF0TR0IE1IT1IE0 IT0TCON中各位均是中各位均是“1”有效。有效。利利用用程程序序把把TR1或或TR0置置“l”则则启启动动定定时时器器,否否则则定定时器处于关闭状态。时器处于关闭状态。当当T1或或T0溢溢出出时时,由由硬硬件件把把TF1或或TF0置置“1”,作作为为溢溢出标志,出标志,TF1和和TF0则还可作为中断申请标志。则还可作为中断申请标志。中断位中断位IE1、IT0、IT1、IT0在介绍中断时详细说明。在介绍中断时详细说明。4.1.2 定时器初始化定时器初始化初初始始化化:使使用用定定时时器器时时,必必须须先先利利用用指指令令对对其其进进行行正正确确设设置置,这种设置过程称为初始化这种设置过程称为初始化。一、定时器初始化的主要内容一、定时器初始化的主要内容1选择工作方式选择工作方式2给定时器赋初值给定时器赋初值3根据需要设置中断控制字根据需要设置中断控制字4启动定时器启动定时器 1选择工作方式选择工作方式选择工作方式,通过对方式寄存器TMOD进行设置。例如,欲设置T0为定时方式1,TMOD状态应置为:0 0 0 0 0 0 0 1其状态字为01H。MOV TMOD,#0lH,把TMOD设置成T0方式l状态。若设置T1为计数方式l,只需C/T=1,M0l,则用指令MOV TMOD,#50H可达此目的。注意:TMOD不能位寻址不能位寻址GATEC/T M1M0GATEC/TM1 M0 例例 T0初值初值3CB0H,T1初值初值00FFH。利用指令:利用指令:MOV TH0,#3CH ;送;送T0初值初值 MOV TL0,#0B0H MOV TH1,#00H ;送;送T1初值初值 MOV TL1,#0FFH2给定时器赋初值给定时器赋初值3根据需要设置中断控制字根据需要设置中断控制字对中断允许寄存器IE和优先级寄存器IP设置,详细在中断中介绍赋初值即把初始常数装入赋初值即把初始常数装入TH0、TL0或或TH1、TL14启动定时器启动定时器例例 SETB TR0 ;启动;启动T0 SETB TR1 ;启动;启动T1 设定时器设定时器T1为方式为方式l,初值,初值3CB0H,若未用中断,初始化,若未用中断,初始化程序如下:程序如下:MOV TMOD,#10H MOV TH1,#3CH MOV TL1,#0B0H SETB TR1二、定时器初值设定方法二、定时器初值设定方法定时时间和定定时时器器工工作作方方式式、初初值值及及时时钟钟周周期期均有关系均有关系,欲设定准确时间,必须会计算定时值。即使同样的时间,工作方式不同,初值则不同;时钟频率不同即使工作方式相同,初值也不同。一般设定初值分几步考虑。1根据定时长短,选择工作方式根据定时长短,选择工作方式 因为工作方式不同,溢出一次计数最大值不同。设用因为工作方式不同,溢出一次计数最大值不同。设用M表示最大计数值,则各种方式计数最大值如下:表示最大计数值,则各种方式计数最大值如下:方式方式0 M2138192 方式方式l M=21665536 方式方式2 M28256 方式方式3 M28256 原则上:原则上:定时时间长选用定时时间长选用16位或位或13位计数器,位计数器,即方式即方式0或方式或方式1。若时间短选若时间短选8位,位,即方式即方式2和方式和方式3,如果需要自动装入初值,只能选择方如果需要自动装入初值,只能选择方式式2。2定时初值计算定时初值计算设设初初值值为为x,最最大大计计数数值值为为M。初初值值X与与机机器器周周期期Tm、定时时间定时时间T的关系如下:的关系如下:(M-X)TmTTm=12个时钟周期12/foscXM-T/Tm因为因为 Tm12/fosc 当当fosc6MHz时,时,Tm=2s fosc12MHz时,时,Tm1s 例如例如:设采用定时器设采用定时器T1,方式,方式l,定时,定时50ms,计算定,计算定时初值。已知晶振频率时初值。已知晶振频率fosc12MHz 解:解:fosc12MHz Tm1s 定时方式定时方式1时时 M21665536 XM-T/Tm 65536-50000/1 15536 3CB0H 把定时器把定时器T1装入初值装入初值3CB0H,定时器计满溢出一,定时器计满溢出一次的时间就是次的时间就是50MS,若需要继续定时,应再装入初,若需要继续定时,应再装入初值。值。溢出信号使溢出信号使TCON寄存器中的溢出标志位寄存器中的溢出标志位TF1置置“1”,称硬件置位。,称硬件置位。4.1.3 定时计数器应用程序设计定时计数器应用程序设计一、定时程序设计例例编写用定时器延时1分钟的子程序。设fosc=12MHz。程序如下:DELAY:MOVR0,#20;送延时1s常数MOVR1,#60;送延时1min常数MOVTMOD,#0lH;T0为方式1,送方式字MOVTH0,#3CH;送初值高字节MOVTL0,#0B0H;送初值低字节SETBTR0;启动T0LP:JBC TF0 LP1 ;判断溢出标志;判断溢出标志TF0l转转LP1 SJMP LP ;继续查询;继续查询50ms LP1:MOV TH0,#3CH MOV TL0,#0B0H DJNZ R0,LP ;R00继续查询继续查询 MOV R0,#20 ;R00重装循环常数重装循环常数 DJNZ R1,LP ;R10继续循环定时继续循环定时 MOV R1,#60 RET ;R1=0,1min到返回到返回 无论定时多长,编程方法类似,只是改变定时初值和循环常无论定时多长,编程方法类似,只是改变定时初值和循环常数而已。数而已。二、计数程序设计二、计数程序设计定定时时/计计数数器器作作为为计计数数器器方方式式,记记录录外外部部输输入入脉脉冲冲个个数数,外外部部脉脉冲冲每下跳变一次计数器加每下跳变一次计数器加1。例例 编写每记录编写每记录100个脉冲,将取反一次的程序。个脉冲,将取反一次的程序。初值X 28 -100 1569CH 最大值最大值 脉冲个数脉冲个数 程序程序 MOV TMOD,#60H ;T1方式方式2、计数方式、计数方式 MOV TH1,#9CH ;保存备用初值;保存备用初值 MOV TL1,#9CH ;赋初值;赋初值 SETB TR1 ;启动;启动T1LP:JBC TF1,LP1 ;查询;查询T1溢出标志溢出标志 AJMP LP ;TF11转转LP继续查询继续查询LP1:CPL P1.0 ;TF1l时时P10取反取反 AJMP LP ;转;转LP自动循环计数。自动循环计数。自动装初值的优点:免去用指令重装初值,当溢出自动装初值的优点:免去用指令重装初值,当溢出后,由硬件自动把后,由硬件自动把TH1中备用初值装入中备用初值装入TL1中。这中。这样提高了计数样提高了计数(或定时或定时)精度。精度。三、脉冲宽度测量程序设计三、脉冲宽度测量程序设计测试过程如下:图4-2门控波形图所示:脉冲宽度脉冲宽度T=计数值计数值机器周期机器周期例例测试INT0(P3.2)引脚上输入的外脉冲宽度。已知晶振频率fosc=12MHz。选选择择T0方方式式1,门门控控方方式式(GATE1),计计数数器器从从00H开开始始工工作作比比较较方方便便,计计数数器器中中的的最最后后值值则则是是总总计计数数脉脉冲值冲值。脉宽计算:脉宽计算:从从R0、R1中中读读出出计计数数结结果果(即即脉脉冲冲数数),该该值值乘乘以以机机器器周期则为脉冲宽度周期则为脉冲宽度T。程序程序 MOV TMOD,#09H ;设置设置T0方式方式l,门控方式,门控方式 MOV TH0,#00H ;初值为初值为0 MOV TL0,#00H SETB TR0 ;T0置置1,等待脉冲高电平到才启动,等待脉冲高电平到才启动 ,$;0等待高电平等待高电平 ,$;高电平到,高电平到,T0启动,测量开始启动,测量开始 CLR TR0 ;P320,关闭计数器,关闭计数器T0,停止计数,停止计数 MOV R0,TH0 ;计数值高位送人计数值高位送人R0保存保存 MOV R1,TL0 ;计数值低位送入计数值低位送入R1保存保存 脉宽计算:脉宽计算:从从R0、R1中读出计数结果中读出计数结果(即脉冲数即脉冲数),该值乘以机器周,该值乘以机器周期则为脉冲宽度期则为脉冲宽度T。