定时器15-16

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

图2-10MCS-51中断系统(p26页)优先级查询电路习题1.串行口中断标志RI/TI由置位,清零。2.外部中断0的中断入口地址为()。(A)0003H(B)000BH(C)0013H(D)001BH3.各中断源发出的中断申请信号,都会表记在MCS-51系统中的()。(A)TMOD(B)TCON/SCON(C)IE(D)IP4.中断响应的最快响应时间为3个机器周期。()硬件软件AB√5.若(IP)=00010100B,则优先级最高者为,最低者为。---PSPT1PX1PT0PX0IP00010100外部中断1T1中断6.8051单片机具有几个中断源?几个中断优先级?7.假定要开放外部中断1,写出设置IE寄存器有关的初始化程序。SETBEASETBEX1在单片机的应用中,可供选择的定时方法主要有:2.6定时器/计数器1、软件定时软件定时是靠执行一个循环程序以进行时间延迟。软件定时的特点是时间较精确,且不需外加硬件电路,实现简单。缺点:占用CPU的时间,因此软件定时的时间不宜太长。2、硬件定时对于时间较长的定时,常使用硬件电路完成。这种方法定时全部由硬件电路完成,不占用CPU时间。但需通过改变电路中的元件参数来调节定时时间,在使用上不够灵活方便。3、可编程定时器定时这种定时方法是通过对系统时钟脉冲的计数来实现的。计数值通过程序设定,改变计数值,也就改变了定时时间,使用起来既灵活又方便。定时器/计数器T0、T1的结构框图TMOD用于设置其工作方式。TCON用于控制其启动和中断申请。2.6定时器/计数器(2)作计数器用时,加法计数器对芯片引脚T0(P3.4)或T1(P3.5)上的输入脉冲计数。当检测到输入引脚上的电平由高变低时,计数器加1。(1)作定时器用时,输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的,也就是说定时器对内部机器周期脉冲计数。由于机器周期是定值,所以对机器周期脉冲的计数就是定时,计数值N乘以机器周期就是定时时间t。如晶振为12MHZ,计数值100,相当于定时100μs。区别:计数仅仅是记录脉冲的个数,而定时是把计数初值与机器脉冲周期联系起来。1.2个8位专用寄存器:用于存放定时和计数初值。TH0、TL0及TH1、TL12.定时器/计数器方式寄存器TMOD:选定定时器/计数器的工作方式。GATEC/TMIM0GATEC/TM1M0TMOD字节地址89HD7D6D5D4D3D2D1D0T1T0:定时或计数功能选择位,当C/T=1时为计数方式;当C/T=0时为定时方式。C/TM1M0工作方式方式说明00013位定时器/计数器01116位定时器/计数器102具有自动重装初值的8位定时器/计数器113对T0分为两个8位计数器:对T1置方式3时停止工作表1定时器/计数器工作方式M1、M0:定时器/计数器工作方式选择位,其值与工作方式对应关系如表1所示。GATE:定时器/计数器运行控制位,用于控制定时器/计数器的启动是否受外部中断请求信号的影响。GATE=0常称为软件启动,GATE=1常称为硬件启动。GATE=1TR0或TR1=1INT0或INT1=1允许开始计数GATE=0TR0或TR1=1允许开始计数3.定时器/计数器控制寄存器TCONTF1TR1TF0TR0IE1IT1IE0IT0TCOND7D6D5D4D3D2D1D0TF1:T1的溢出中断标志位。当T1计数溢出时,由硬件自动置1;CPU中断处理时由硬件自动清0。TR1:T1的运行控制位。当TR1=1时启动T1;TR1=0时关闭T1。该位由软件进行设置。TR0:T0的运行控制位。当TR0=1时启动T0;TR0=0时关闭T0。该位由软件进行设置。TF0:T0的溢出中断标志位。当T0计数溢出时,由硬件自动置1;CPU中断处理时由硬件自动清0。2.6.2定时器/计数器T0、T1的四种工作方式1.工作方式0图1方式0(13位计数器)=0=11011110111输入脉冲是由晶体振荡器的输出经12分频得到对外部事件计数时,接相应的外部输入引脚GATE=0,软件启动GATE=1,硬件启动TLx的低5位溢出时向THx进位,THx溢出时,置位TCON中的TFx标志,向CPU发出中断请求注意:GATE=1,TRX=1时,可用来测量INTX端出现的引脚上出现的正脉冲宽度。TR0=1INT0(P3.2)GATE=1T0从0开始计数T0停止计数设外部脉冲由INT0输入,T0工作于定时器方式0(13位T/C),GATE设为1。测试时,应在INT0为低电平时,设置TR0为1;当INT0为高电平时,就启动计数;当INT0再次变低时,停止计数。根据计数值可得被测正脉冲的宽度。如FOSC=12MHZ,它的单位恰为μS。2.工作方式1图2方式1(16位计数器)=0=110111101118与方式0的区别是计数器的位数不同GATE=0,软件启动GATE=1,硬件启动3.工作方式2振荡器÷12TLx(8位)TFx&≥11C/__TC/__Tfosc中断请求TxGATEINTxTRxTHx(8位)重装装入S1TcyS21011110111图3方式2(初值常数自动装入)方式2为自动恢复初值的(常数重装入)8位定时器/计数器,由THX作为常数缓冲器,当TLX计数溢出时,在置1溢出标志TFX的同时,还自动地将THX中的常数送至TLX,使TLX从初值重新开始计数。GATE=0,软件启动GATE=1,硬件启动注意:方式2可以省去用户软件中重装常数的程序。因此方式2除常用于定时工作,还用作串行接口的波特率发生器。4.工作方式3(只适用于T0)图3方式3(两个8位计数器)当T0设置为方式3时,将使TL0和TH0成为两个相互独立的8位计数器。也就是说增加一个附加的8位定时器。振荡器÷12TL0(8位)&≥11C/__TC/__Tfosc中断请求T0GATE_____TR0TH0(8位)S2S1TF0TF1TcyINTx1/12foscTR1TCON控制TL0的操作与方式0、方式1类似。TH0只用做定时功能,对机器周期计数,并借用了T1的控制位TR1和TF1。GATE=0,软件启动GATE=1,硬件启动因为TH0借用了T1的控制位TR1和TF1。在这种情况下TH0控制了T1的中断。这时T1还可以设置为方式0~2,用于任何不需要中断控制的场合,或用做串行接口的波特率发生器。通常,T1用作串行接口波特率发生器时,T0才定义为方式3,以增加一个8位计数器。(1)不同方式下最大计数值(以T0为例,定时初值计算)方式0:M=213=8192;t=(213-T0初值)×振荡周期×12方式1:M=216=65536;t=(216-T0初值)×振荡周期×12方式2:M=28=256;t=(28-TH0初值)×振荡周期×12方式3:定时器0分成两个8位计数器,所以M=28=256;t=(28-TH0初值)×振荡周期×12t=(28-TL0初值)×振荡周期×12方式0:TMAX=8.192ms;(晶振为12MHZ)方式1:TMAX=65.536ms方式2、3:TMAX=0.256ms2.6.3应用举例例1:T0为方式0工作时,定时时间为1ms,晶振频率为6MHZ,求计数初值。机器周期=12/FOSC=12/6MHZ=2μS,也就是说计数器每“加1”一次所需的时间为2μS。如果要产生1ms的定时,则需“加1”500次,那么500即为计数值。在方式0下工作,初值=213-计数值=213-500=7692=1E0CH=0001111000001100BF0C0MOVTL0,#0CH;低5位送TL0寄存器MOVTH0,#0F0H;高8位送TH0寄存器例2初始化程序举例:设T1作定时器,以方式1工作,定时时间为10mS;T0作计数器,以方式2工作,外界发生一次事件即溢出,晶振为6MHZ。(2)应用举例定时器/计数器的初始化:A、对TMOD赋值,以确定T0和T1的工作方式。B、计算初值,并将其写入TH0、TL0或TH1、TL1。C、中断方式时,则对IE赋值,开放中断。D、启动定时器、计数器—软件启动的话,则可把TR0、TR1置“1”;若已规定由外中断引脚电平启动(硬件启动),还需给外引脚加启动电平。解:T1的时间常数为10mS=(216-X)×(12/6MHZ)5000=65536-XX=60536=EC78H程序:MOVTMOD,#16H;T1为定时方式1,T0为计数方式2MOVTL0,#0FFHMOVTH0,#0FFHMOVTL1,#78HMOVTH1,#0ECHSETBTR0;允许T0启动计数SETBTR1;允许T1启动计数例2用定时器T0工作在方式1定时,使P1.0端电平每隔1MS变反一次,晶振为6MHZ。t=(216-T0初值)×振荡周期×121ms=(216-T0初值)×12/6MHZT0初值=216-计数值=65536-500=65036=FE0CH编程方式采用查询方式:程序一直检测TF0,若TF0=1,说明定时时间到。采用中断方式:程序初始化时,设置定时器溢出中断允许后,内部硬件自动检测到TF0=1时,自动响应中断,进入中断服务程序。ORG0000HAJMPSTARTORG000BHAJMPT0FWORG0030HSTART:MOVTMOD,#01H;T0工作在方式1定时MOVTL0,#0CHMOVTH0,#0FEHSETBEA;开放所有中断SETBET0;允许T0中断;采用中断方式编程SETBTR0;启动T0计数SJMP$;跳转到当前行,继续执行,等待中断来临。T0FW:CPLP1.0;1MS变反一次MOVTL0,#0CHMOVTH0,#0FEH;不是方式2,需人为重新赋值RETIEND中断方式ORG0000HAJMPSTARTORG0030HSTART:MOVTMOD,#01HMOVTL0,#0CHMOVTH0,#0FEHSETBTR0;启动T0计数L2:JBCTF0,L1;查询计数溢出SJMPL2L1:CPLP1.0;1MS变反一次MOVTL0,#0CHMOVTH0,#0FEHSJMPL2END查询方式例3:P0口接8个发光二极管的负极,所有发光二极管的正极连接在一起接+5V,通过T1产生中断定时,每1S使发光二极管循环点亮(晶振为12MHZ,工作方式为方式1)0P0.0P0.7解:在方式1下,最大的定时时间Tmax为:显然不能满足本题目的定时时间(1S)要求,先要求T1定时50ms,此时T1的初始值X为:Tmax=65536×(12/12MHZ)=65.536ms50ms=(216-X)×(12/12MHZ)X=65536-50000=3CB0HORG0000HAJMPSTARTORG001BHAJMPT1FWORG0030HSTART:MOVA,#0FEHMOVP0,A;点亮P0.0所接发光二极管MOV50H,#20;循环次数MOVTMOD,#10H;T1方式1定时MOVTH1,#3CHMOVTL1,#0B0H;50msSETBEA;开放所有中断SETBET1;允许T1中断SETBTR1;启动T1计数SJMP$T1FW:MOVTH1,#3CHMOVTL1,#0B0HDJNZ50H,L2MOV50H,#20;1s到RLAMOVP0,A;循环点亮L2:RETIEND思考题:用定时器T0工作在方式1定时,使P0.0端电平每隔1S变反一次,晶振为12MHZ。(中断方式)解:在方式1下,最大的定时时间Tmax为:显然不能满足本题目的定时时间(1S)要求,先要求T1定时50ms,此时T1的初始值X为:Tmax=65536×(12/12MHZ)=65.536ms50ms=(216-X)×(12/12MHZ)X=65536-50000=3CB0HORG0000HAJMPSTARTORG000BHAJMPT1FWORG0030HSTART:MOV50H,#20MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBEASETBET0SETBTR0CLRP0.0SJMP$T1FW:MOVTH0,#3CH

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功