您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 金融资料 > 第4章定时计数器及中断系统
4.1定时器/计数器MCS-51单片机内部共有两个16位可编程的定时器/计数器,即定时器T0和定时器T1它们既有定时功能又有计数功能。4.4.1结构定时器/计数器的基本结构如图4.1所示。基本部件是两个8位计数器(其中TH1和TL1是T1的计数器,TH0和TL0是T0的计数器)。80511TH1TL0TH0TLTMODTCON1T0T)1(T5.3P)T(P04.3图4.1定时器/计数器结构在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的。当它用作对外部事件计数时,接相应的外部输入引脚T0(P3.4)或T1(P3.5)。4.1.2控制寄存器1.定时器控制寄存器(TCON)各位定义:位地址8FH8EH8DH8CH8BH8AH89H88H位符号TF1TR1TF0TR0IE1IT1IE0IT0TF0/TF1:查询方式:禁止中断,软件查询TF0的值,软件清“0”中断方式:硬件查询TF0的值,硬件自动清“0”2.工作方式寄存器(TMOD)功能:确定定时器的工作方式及功能选择。不能位寻址,TMOD各位的定义:T/C1M0MD7D6D5D4D3D2D1D0GATEGATET/C1M0MGATE:门控位=0:定时器/计数器仅受TR的控制=1:只有INT为高电平,且TR=1时,定时器/计数器才工作T/C:功能选择位=0:定时功能=1:计数功能1M0M:工作方式选择位=00方式0=01方式1=10方式2=11方式33.中断允许控制寄存器(1E)0AFH0AEH0ADH0ACH0ABH0AAH0A9H0A8HEA//ESET1EX1ET0EX0每一位的内容在前面已作详细介绍,在此不作赘述。查询方式时:关闭中断,使用软件查询TF0/TF1中断方式时:开放中断,使用硬件自动查询TF0/TF14.1.3工方式MCS-51的定时器/计数器共有四种工作方式。工作在方式0、方式1和方式2时,定时器/计数器0和定时器/计数器1的工作原理完全一样,现以定时器/计数器0为例介绍前三种工作方式。1.方式0(M1M0=00)(1)电路逻辑结构方式0是13位计数结构的工作方式,其计数器由TH0全部8位和TL0的低5位构成。TL0高三位弃之不用。图4.2是定时器/计数器0工作在方式0的逻辑结构。晶体振荡器0M1MTCGATE120T1TC0TC0INT00THTL0TF0TR供中断或查询使用+低五位高八位图4.2定时器/计数器方式0逻辑结构当0T/C时,多路转换开关接通振荡脉冲的12分频输出,13位计数器以此作为计数脉冲,这时实现定时功能当1T/C时,多路换开关接通计数引脚(T0),计数脉冲由外部引入,当计数脉冲发生负跳变时,计数器加1,这时实现计数功能。不管哪种功能,当13位计数发生溢出时,硬件自动把13位清零,同时硬件置位溢出标志位TF0。在这里需要说明门控位(GATE)的用途,当GATE=0时,或输出的高电平与0INT无关,此时与门的输出只受运行控制位TR0控制。如果TR0=0,则与门输出为低电平,则模拟开关断开,定时器/计数器不工作。如果TR0=1,则与门输出为高电平,则模拟开关闭合,定时器/计数器工作。当GATE=1时,只有TR0和0INT同时为高电平,定时器/计数器才工作,否则,定时器/计数器不工作。(2)定时和计数的应用计数范围:1~213计数计算公式:计数值=213-计数初值定时范围:1机器周期~213机器周期定时计算公式:定时时间=(213-定时初值)×机器周期如果晶振频率为6MHz,则最大定时时间为:213×1/6MHz×12=214()2.方式1(M1M0=01)方式1是16位计数结构的工作方式,其计数器由TH0全部8位和TL0的全部8位构成。其逻辑电路和工作情况与方式0完全相同,所不同的只是计数器的位数。MCS-51单片机之所以设置几乎完全一样的方式0和方式1,是出于与MCS-48单片机兼容的要求。因为,MCS-48单片机的定时器/计数器是13位的计数结构。s定时和计数的应用计数范围:1~216计数计算公式:计数值=216-计数初值定时范围:1机器周期~216机器周期定时计算公式:定时时间=(216-定时初值)×机器周期如果晶振频率为6MHz,则最大定时时间为:216×1/6MHz×12=217()s【例4-1】设单片机晶振频率为6MHZ,使用T1以工作方式1,产生周期为500s的等宽正方波,并由0.1P输出,以中断方式编程。分析:题目的要求可用下图来表示。0.1P250s250s8051由上图可以看出只要使0.1P的电位每隔250s取一次反即可。所s。以定时时间应取250。1)计算计数初值设计数初值为x,由定时计算公式知:H83TL,FFH0THH83FF0xB0110,1000,1111,1111xD65411xs250s2)x2(11162)专用寄存器的初始化T/C1M0MTC/1M0MD7D6D5D4D3D2D1D0GATEGATE所以,TMOD应设置为:10H开放定时器/计数器1中断,所以IE应设置为:88H3)编写程序ORG0000HSJMPMAINORG001BHAJMPORGINTT13000HMAIN:MOVTMOD,#10HMOVIE,#88HMOVTH1,#0FFHMOVTL1,#83H;初始化LOOP:SETBTR1;启动HERE:SJMPHERE;等待中断AJMPLOOPINTT1:MOVTH1,#0FFH;中断响应程序MOVTL1,#83HCPLP1.0RETI;中断返回3.方式2(M1M0=10)(1)电路逻辑结构电路逻辑结构如图6.5所示,由图可以总结出方式2具有以下特点:晶体振荡器0M1MTCGATE120T1TC0TC0INT0TL0TF0TR中断查询0TH重新装入控制+图4.3定时器/计数器方式0逻辑结构8位计数器TL0作计数器,TH0作预置寄存器使用,计数溢出时,TH0中的计数初值自动装入TL0,即TL0是一个自动恢复初值的8位计数器。在使用时,要把计数初值同时装入TL0和TH0中。优点是提高定时精度,减少了程序的复杂程度。(2)定时和计数的应用计数范围:1~28计数计算公式:计数值=28-计数初值定时范围:1机器周期~28机器周期定时计算公式:定时时间=(28-定时初值)×机器周期【例6-2】用定时器1以工作方式2实现计数,每计数100,累加器进行加1操作,以查询方式编写程序。解:1)计算计数初值CH9TLTHCH9D156x100x21182)专用寄存器初始化T/C1M0MT/C1M0MD7D6D5D4D3D2D1D0GATEGATE01100000所以,TMOD=60H使用查询方式,所以关闭中断,即IE=00H3)程序设计MOVIE,#00H;禁止中断MOVTMOD,#60H;T1工作在方式2,计数功能MOVTH1,#9CHMOVTL1,#9CH;装载计数初值START:SETBTR1;启动DEL:JBCTF1,LOOPAJMPDELLOOP:INCA;溢出响应程序AJMPSTART4.方式3(M1M0=11)前面介绍的三种工作方式对两个定时器/计数器而言,工作原理是完全一样的。但在工作方式3下,两个定时器工作原理却完全不同,因此要分开介绍。(1)工作方式3下的定时器/计数器0在方式3下,定时器/计数器0被拆为两个独立的8位的计数器TL0和TH0。其中TL0既可以作为计数功能使用,又可以作定时功能使用,享用定时器/计数器0的运行控制位TR0和溢出标志位TF0。对于TH0,只能作定时器使用,由于定时器/计数器0的运行控制位TR0和溢出标志位TF0已被TL0占用,因此TH0占用了定时器/计数器1的运行控制位TR1和溢出标志位TF1。即定时的启动和停止受TR1的状态控制,而计数溢出时则置位TF1。(2)工作方式3下的定时器/计数器1当定时器/计数器0工作在方式3时,定时器/计数器1只能工作在方式0、方式1和方式2。在这种情况下定时器/计数器1只能作波特率发生器使用,以确定串行通信的速率。作波特率发生器使用时,只要设置好工作方式,便可自动运行。如果要停止工作,只需要把定时器/计数器1设置在工作方式3就可以了。因为定时器/计数器1不能工作在方式3下,如果硬把它设置在方式3,它就会停止工作。例4.3用T0作50ms内部定时,每50ms在T1引角产生一脉冲供T1计数器作记数脉冲,若T1计数器为20,便可得到定时1秒的定时程序:MOVTMOD,#61H;T0为16位定时,T1为8位自动重载MOVDPTR,#15536;设定定时或记数初值MOVTL0,DPL;T0为50ms内定时MOVTH0,DPHMOVTL1,#236;T1计数初值MOVTH1,#236SETBTR0SETBTR1LOOP:JNBTF0,$CLRTF0MOVDPTR,#15536MOVTL0,DPLMOVTH0,DPHCLRP3.5SETBP3.5JNBTF1,LOOPCLRTF1+5V2K0.1P80515定时器举例【例6-4】通过定时器1来产生中断,控制P1.0线上的脉冲输出,并经三极管驱动扬声器,发出音调信号。1)电路设计2)程序设计ORG0000HLJMPMAINORG001BH;中断入口地址CPLP1.0RETIORG1000HMAIN:MOVR1,#00HMOVR0,#23HMOVTMOD,#20H;定时器1工作方式2MOVIE,#88H;定时器1允许中断L1:MOVDPTR,#3FFFHMOVA,R0;取数INCR0;修改指针MOVCA,@A+PC;查表JZMAINMOVR1,A;计算计数初值MOVA,#0FFHCLRCSUBBA,R1RLAMOVTH1,A;置计数初值SETBTR1;开始计数L2:CLRCMOVA,DPL;延时SUBBA,#01HMOVDPL,AMOVA,DPHSUBBA,#00HMOVDPH,AORLA,DPLJNZL2CLRTR1SJMPL1ENDORG1031H;歌曲“送别”编码DB33H,33H,3DH,33H,26HDB26H,26H,26H,2DH,2DHDB26H,2DH,33H,33H,33HDB33H,33H,33H,4DH,45HDB45H,45H45H,45H,45HDB45H,45H,33H,33H,3DHDB33H,26H,26H,26H,28HDB2DH,2DH,26H,26H,33HDB33H,33H,33H,45H,3DH4.2中断系统单片机在某一时刻只能处理一个任务,当多个任务同时要求单片机处理时,这一要求应该怎么实现呢?通过中断可以实现多个任务的资源共享。所谓的中断就是,当CPU正在处理某项事务的时候,如果外界或者内部发生了紧急事件,要求CPU暂停正在处理工作而去处理这个紧急事件,待处理完后,再回到原来中断的地方,继续执行原来被中断的程序,这个过程称作中断。从中断的定义我们可以看到中断应具备中断源、中断响应、中断返回这样三个要素。中断源发出中断请求,单片机对中断请求进行响应,当中断响应完成后应进行中断返回,返回被中断的地方继续执行原来被中断的程序。4.2.1中断源与入口地址1.外部中断源外部中断0(2.3P3.3P):来自引脚,采集到低电平或者下降沿时,产生中断请求。外部中断1(0INT):来自引脚,采集到低电平或者下降沿时,产生中断请求。1INT2.内部中断源定时器∕计数器0(0T):定时功能时,计数脉冲来自片内;计数功能时,计数脉冲来自片外4.3P引脚。发生溢出时,产生中定时器∕计数器1(1T):定时功能时,计数脉冲来自片内;计数功能时,计数脉冲来自片外5.3P引脚。发生溢出时,产生中串行口:为完成串行数据传送而设置。单片机完成接受或发送一组数据时,产生中断请求。断请求。断请求IE0和IE1——外中断请求标志位当CPU采样到0INT(或1INT)端出现有效中断请求时,IE0(IE1)位由硬件置“1”。当中断响应完成转向中断服务程序时,由硬件把IE0(或IE1)清零。
本文标题:第4章定时计数器及中断系统
链接地址:https://www.777doc.com/doc-3350894 .html