第7章定时器计数器_第1页
第7章定时器计数器_第2页
第7章定时器计数器_第3页
第7章定时器计数器_第4页
第7章定时器计数器_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 在测控技术中,往往需要定时检测某个参数,在测控技术中,往往需要定时检测某个参数,或按一定的时间间隔来进行某种控制。还有一些或按一定的时间间隔来进行某种控制。还有一些控制是按对某种事件的计数结果进行的。因此几控制是按对某种事件的计数结果进行的。因此几乎所有单片机内部都设置了定时乎所有单片机内部都设置了定时/计数器,以简化计数器,以简化微机测控系统的设计。微机测控系统的设计。 MCS-51系列单片机典型产品系列单片机典型产品8051等有两个等有两个16位定时器位定时器/计数器计数器T0,T1;8052等单片机有三个等单片机有三个16位定时器位定时器/计数器计数器T0、T1和和T2。它们都可以用。

2、它们都可以用作定时器或外部事件计数器。作定时器或外部事件计数器。7.4 51内部定时计数器及其应用内部定时计数器及其应用7.4 51内部定时计数器及其应用内部定时计数器及其应用2定时与计数的概念定时与计数的概念定时的主要作用是定时的主要作用是产生各种时标间隔。产生各种时标间隔。软件延时软件延时硬件定时器硬件定时器 计数:计数:记录(外部)事件的数量。记录(外部)事件的数量。例如:例如:温度测量温度测量定时计数器的定时计数器的实质实质3p定时计数器的定时计数器的实质就是计数器,一般都具有定时兼计数实质就是计数器,一般都具有定时兼计数的功能,具体是定时还是计数主要看计数对象(即计数脉的功能,具体是

3、定时还是计数主要看计数对象(即计数脉冲)。若计数脉冲为已知固定周期的信号,则计数器就可以冲)。若计数脉冲为已知固定周期的信号,则计数器就可以看作定时器;若计数脉冲为周期不固定的或未知的信号,则看作定时器;若计数脉冲为周期不固定的或未知的信号,则计数器只能看作是计数器。计数器只能看作是计数器。通过外部通过外部引脚引脚对对外部事件外部事件计数计数通过对通过对机器周期进行计数机器周期进行计数实现实现定时定时MCS-51单片机内部定时计数器单片机内部定时计数器一、内部定时计数器结构和工作原理4 51单片机内部有两个单片机内部有两个可编程可编程16位位加加1的定时器的定时器/计数器,具有计数器,具有 两

4、种工作模式(两种工作模式(计数器计数器模式、模式、 定时定时器器模式)和模式)和四种工作方式四种工作方式( 方式方式0、方式、方式1、方式、方式2、方式、方式3),其控制字均在相应的特殊功能寄存),其控制字均在相应的特殊功能寄存器(器(SFR)中,通过对它的)中,通过对它的SFR的编程,可以方的编程,可以方便的选择工作模数和工作方式。便的选择工作模数和工作方式。1、定时、定时/计数器的结构计数器的结构5定时器定时器/计数器是一个加计数器是一个加1计数器,当计数溢出时产生计数器,当计数溢出时产生 中断申请中断申请表示定时到或计数到。表示定时到或计数到。 每输入一个脉冲,计数器加每输入一个脉冲,计

5、数器加1,当加到计数器各位,当加到计数器各位都为都为1时,时,再输入一个脉冲再输入一个脉冲,计数器各位全变为,计数器各位全变为0,溢出,中断标志置溢出,中断标志置1(SFR中中TCON的的TF0、TF1),从而向,从而向CPU申请中断。由预置计数值就可以算出申请中断。由预置计数值就可以算出从加从加1计数器启动到计满溢出所需的时间,即定时计数器启动到计满溢出所需的时间,即定时时间。时间。 8位位256;13位位8192;16位位65536计数原理计数原理 对外部脉冲计数时,当脉冲有一个对外部脉冲计数时,当脉冲有一个高电平到低高电平到低电平电平“1”“0”跳变时,计数器加跳变时,计数器加1,且在每

6、个机,且在每个机器周期的器周期的S5P2采样外部输入,若前一个机器周期采样外部输入,若前一个机器周期采样值为采样值为1,后一个机器周期采样值为,后一个机器周期采样值为0,则计数,则计数器加器加1。 由于识别一个从由于识别一个从1到到0的负跳变信号需要两个机的负跳变信号需要两个机器周期器周期(24个振荡周期),所以最高的计数频率个振荡周期),所以最高的计数频率为系统时钟频率的为系统时钟频率的1/24;两个输入脉冲的最小间;两个输入脉冲的最小间隔应不小于两个机器周期。又因为一个机器周期隔应不小于两个机器周期。又因为一个机器周期对信号采样一次,因此输入信号的电平宽度对信号采样一次,因此输入信号的电平

7、宽度至少至少应持续一个机器周期应持续一个机器周期。定时原理定时原理 输入脉冲不是外部脉冲源,而是一个晶体振荡器输入脉冲不是外部脉冲源,而是一个晶体振荡器的脉冲源。的脉冲源。 输入脉冲是由内部振荡器的输出经输入脉冲是由内部振荡器的输出经12分频送来,分频送来,所以定时器可看做对机器周期的计数。所以定时器可看做对机器周期的计数。 晶振晶振 12MHz,机器周期,机器周期 1us,定时器每接收一,定时器每接收一个脉冲是个脉冲是1us 晶振晶振6MHz, 机器周期机器周期 2us,定时器每接收一个,定时器每接收一个脉冲是脉冲是1us加法计数器的初值可以由程序设定,设置的初值不同,加法计数器的初值可以由

8、程序设定,设置的初值不同,计数值或定时时间就不同。定时时间不仅与计数初值有关,计数值或定时时间就不同。定时时间不仅与计数初值有关,而且与系统时钟频率有关。而且与系统时钟频率有关。 对于对于16位计数器,最大定时时间是位计数器,最大定时时间是216个脉冲的时个脉冲的时间。间。 则定时时间则定时时间T=(216X)*T T:输入脉冲周期,:输入脉冲周期,T=12/f s(f为晶振频率为晶振频率1.212MHz)如为如为12MHz,则,则T1s X:计数器初值(由程序输入):计数器初值(由程序输入) 对于对于12MHz晶体,晶体,T1s,最大定时,最大定时T=65.536ms;对于;对于6MHz晶体

9、,晶体,T2s,最大,最大定时定时T=131ms 常使用:常使用:X=216T/T例:例:系统时钟频率为系统时钟频率为12MHz12MHz,要产生,要产生1ms1ms定时,求初定时,求初值值X X T=12/12=1s T=12/12=1s若为若为1616位计数器位计数器 X=2 X=2161000/1=64536=0FC18H1000/1=64536=0FC18H若为若为1313位计数器位计数器 X=2 X=2131000/1=81921000/1=81921000=7192=1C18H1000=7192=1C18H 不能采用不能采用8 8位计数器位计数器二、T/C的特殊功能寄存器SFR11

10、1、16位定时位定时/计数器计数器0:核心的计数单元:核心的计数单元 由两个特殊功能寄存器由两个特殊功能寄存器TH0和和TL0组成组成2、16位定时位定时/计数器计数器1:核心的计数单元:核心的计数单元 由两个特殊功能寄存器由两个特殊功能寄存器TH1和和TL1组成组成3、定时器方式选择寄存器:定时器方式选择寄存器:TMOD4、定时器控制寄存器:定时器控制寄存器:TCONT/C的特殊功能寄存器SFR123、定时器方式选择寄存器:定时器方式选择寄存器:TMODM1 M0 方式方式说说 明明0 0013 位定时器(TH的 8 位和TL的低 5 位) 0 1116 位定时器/计数器 1 02自动重装入

11、初值的 8 位计数器 1 13 T0 分成两个独立的 8 位计数器, T1 在方式 3 时停止工作 13地址:地址:89H定时器方式选择寄存器:定时器方式选择寄存器:TMOD14GATE 门控位。门控位。 GATE = 0 启动不受启动不受 /INT0或或 /INT1的控制;的控制; GATE = 1 启动受启动受 /INT0 或或 /INT1 的控制。的控制。 C/T 外部计数器外部计数器 / 内部定时器方式选择位内部定时器方式选择位 C/T = 0 定时方式;定时方式; C /T = 1 计数方式计数方式。 4、定时器控制寄存器:、定时器控制寄存器:TCON15TF1TR1TF0TR0IE

12、1IT1IE0IT0 TCON(88H)外部中断有关外部中断有关1、TF1:定时器定时器/计数器计数器T1溢出溢出中断请求标志位。中断请求标志位。 当启动当启动T1计数后,计数后,T1从从初值初值开始开始加加1计数,计数计数,计数器最高位产生器最高位产生溢出溢出时,时,由由硬件硬件使使TF1置置1,并向,并向CPU发出中断请求。当发出中断请求。当CPU响应中断时,响应中断时,硬件硬件将将自动对自动对TF1清清0。2、TF0:定时器定时器/计数器计数器T0溢出中断请求标志位。溢出中断请求标志位。 含义与含义与TF1类同。类同。定时器控制寄存器:定时器控制寄存器:TCON16TF1TR1TF0TR

13、0IE1IT1IE0IT0 TCON(88H)外部中断有关外部中断有关TR1:T1运行控制位。运行控制位。TR1=1时,时,T1开始工作;开始工作;TR1清清0时,时,T1停止工作。停止工作。TR1由软件置由软件置1或清或清0。所以,用软件可控制定时。所以,用软件可控制定时/计数器计数器的启动与停止。的启动与停止。TR0:T0运行控制位。运行控制位。三、三、 四种工作方式四种工作方式17除了方式除了方式3,T0和和T1有完全相同的工作方式有完全相同的工作方式。1、方式018T/C0方式方式0 (13位计数器)位计数器)的逻辑结构图的逻辑结构图低低5位位高高8位位方式方式0为为13位计数位计数,

14、由,由TL0的低的低5位(高位(高3位未用)和位未用)和TH0的的8位组成。位组成。TL0的低的低5位溢出时向位溢出时向TH0进位,进位,TH0溢出时,置位溢出时,置位TCON中的中的TF0标志,向标志,向CPU发出中断请求。发出中断请求。P3.4方式019定时计数模式选择定时计数模式选择低低5位位高高8位位启动控制分析启动控制分析GATE:门控位:门控位GATE=0时,定时计数器的启停,时,定时计数器的启停,仅仅仅仅由由TR0控制,控制, 只要只要TR0=1就启动就启动 。GATE=1时,定时计数器的启停,时,定时计数器的启停,还将还将受到受到INT0引脚的控制。引脚的控制。 在在TR0=1

15、的前提下的前提下int0引脚引脚=1计数,计数,=0停止计数。停止计数。 TR0=0停止计数。停止计数。计数初值问题13X=2 -N20初值重装问题初值重装问题:用程序将:用程序将08191的某一数送入的某一数送入TH0、TL0作作为初值,为初值,TH0、TL0从初值开始加法计数,直至溢出。所以初从初值开始加法计数,直至溢出。所以初值不同,定时时间或计数值不同。必须注意的是:值不同,定时时间或计数值不同。必须注意的是:加法计数加法计数器器TH0溢出后,必须用程序重新对溢出后,必须用程序重新对TH0、TL0设置初值,设置初值,否则否则下一次下一次TH0、TL0将从将从0开始计数。开始计数。初值计

16、算问题初值计算问题:加法计数器。:加法计数器。例如:计数例如:计数1000个。个。213-1000=7192=1 1100 0001 1000 BE0送送TH18H送送TLMOV TH0MOV TH0,#0E0H#0E0HMOV TL0MOV TL0,#18H#18H 此种方式与此种方式与MCSMCS4848系列兼容,如果不是为了兼系列兼容,如果不是为了兼容的目的,一般不用方式容的目的,一般不用方式0.0. 方式方式0 0的全部功能,方式的全部功能,方式1 1都可以代替。都可以代替。 如果要重复定时或计数,则须重新设置时间常数如果要重复定时或计数,则须重新设置时间常数初值初值注意注意: :2、

17、方式122T/C0方式方式1 (16位计数器)位计数器)的逻辑结构图的逻辑结构图与与方式方式0 相似,方式相似,方式1时的时的计数长度计数长度是是2的的16次方。次方。16位的位的初初值值直接拆成高低字节,分别送入直接拆成高低字节,分别送入TH和和TL即可。即可。初值的计算公式?初值的计算公式?方式13、方式2 (计数初值自动再装入)(计数初值自动再装入)23 工作方式工作方式0和工作方式和工作方式1的最大特点就是的最大特点就是计数溢出后,计数溢出后,计数器为全计数器为全0,因而循环定时或循环计数应用时就存在因而循环定时或循环计数应用时就存在反复设置初值反复设置初值的问题,这给程序设计带来许多

18、不便,同的问题,这给程序设计带来许多不便,同时也会时也会影响计时精度影响计时精度。 工作方式工作方式2就针对这个问题而设置,它具有自动重就针对这个问题而设置,它具有自动重装载功能,即装载功能,即计数初值自动再装入计数初值自动再装入。3、方式224方式方式 2(计数初值自动再装入)结构图(计数初值自动再装入)结构图计数初值自动再装入的计数初值自动再装入的实现实现25 在工作方式在工作方式2中,中,16位位计数器计数器分为两部分,即以分为两部分,即以TL0为为计数器计数器,以,以TH0作为预置寄存器,初始化时把作为预置寄存器,初始化时把计数初值分别加载至计数初值分别加载至TL0和和TH0中,当计数

19、溢出时,中,当计数溢出时,不再象方式不再象方式0和方式和方式1那样需要那样需要“人工干预人工干预”,由软件,由软件重新赋值,而是由预置寄存器重新赋值,而是由预置寄存器TH以硬件方法自动给以硬件方法自动给计数器计数器TL0重新加载。重新加载。与方式与方式0和方式和方式1不同处:不同处: 只使用只使用TL0做做8位计数器,最大计数值位计数器,最大计数值255; 最大定时时间最大定时时间(晶振晶振12MHz时时): 256 s 用于需要重复定时和计数的场合。用于需要重复定时和计数的场合。方式方式2用于定时工作方式,定时时间由下式确定:用于定时工作方式,定时时间由下式确定:t=NTcy=(256- X

20、) Tcy计数初值计数初值X:X=256-tTcy4、 方式327方式 3(两个 8 位独立计数器)结构图只能定时不能计数。只能定时不能计数。既可以定时既可以定时也可以计数也可以计数方式 3(两个 8 位独立计数器)28(2)TH0占用了占用了T1的控制位的控制位TR1、和中断标志位、和中断标志位TF1,同时,同时占用了占用了T1的中断资源,此时,的中断资源,此时,TH0固定为一个固定为一个8位计数器,位计数器,启动受启动受TR1控制控制,只能定时不能计数。只能定时不能计数。说明:说明:(1)T0在方式在方式3时,时,TL0使用使用T0的控制位的控制位C/T、GATE、TR0、INT0,既可以

21、定时也可以计数。,既可以定时也可以计数。(3)T0工作在方式工作在方式3时,时,T1可以工作在方式可以工作在方式0、1、2。(4)T0工作在方式工作在方式3时,占用了时,占用了TR1、TF1; T1只受只受C/T位位控制,计数满时也没有溢出中断请求,控制,计数满时也没有溢出中断请求,只能将输出送到串行只能将输出送到串行口。所以此时口。所以此时T1可以作串行口波特率发生器,可以作串行口波特率发生器,如果需要如果需要T1停止计数,只需设置停止计数,只需设置T1为方式为方式3即可。即可。T0工作在方式工作在方式3时,时,T1工作在方式工作在方式2的逻辑图的逻辑图29四、应用30定时定时/计数器的应用

22、计数器的应用(1)选择定时)选择定时/计数器计数器 T0、T1选择其一,选择其一,(2)定时或外计数选择)定时或外计数选择 C/T及及GATE,(3)工)工 作作 方式方式 M1、M0(4)计)计 数数 初初 值值 加加1计数、位数计数、位数(5)计)计 数数 初初 值值 的的再装入再装入1)写)写TMOD;2)确定)确定IE、IP;3)写计数初值;)写计数初值;4)启动计数()启动计数(TRi) 编制初始化程序:编制初始化程序:中断相关寄存器31中断允许控制寄存器中断允许控制寄存器IEEA-ESET1EX1ET0EX0 IE(A8H)AFH AEH ADH ACH ABH AAH A9H A

23、8H51单片机有单片机有两个两个中断优先级。中断优先级。高高优先级或优先级或低低优先级中断。优先级中断。p中断优先级寄存器中断优先级寄存器IPPSPT1PX1PT0PX0 IP(B8H) BCH BBH BAH B9H B8H设计一个能产生设计一个能产生t=1ms的周期信号发生器,试编程的周期信号发生器,试编程.32解:解:选选T0方式方式0; C/T=0,GATE= 0 ;12MHz时钟,时钟,T=1usN = 0.5ms / T=0.5ms /1us=500初值初值=213-500=8192-500=7692=1E0CH= 0001 1110 000 0 1100B, 1E0CH01100

24、TL011110000TH0F0H0CH33 LJMP MAIN ORG 000BH LJMP Tim0 ORG 1000H MAIN: MOV SP,#60H MOV TL0,#0CH MOV TH0,#0F0H MOV TMOD,#00H SETB TR0 SETB ET0 SETB EA SJMP ORG 0000H Tim0: MOV TL0,#0CH MOV TH0,#0F0H CPL P1.0 RETI 设计一个能产生设计一个能产生t=1ms的周期信号发生器,试编程的周期信号发生器,试编程.200ms的方波?的方波?34 LJMP MAIN ORG 000BH LJMP INSE0

25、 ORG 1000H MAIN: MOV SP,#60H MOV TL0,#0CH MOV TH0,#0F0H MOV TMOD,#00H SETB TR0 SETB ET0 SETB EA SJMP MOV R2,#200MOV R2,#200 ORG 0000H INSE0:DJNZ R2, Next CPL P1.0 MOV R2,#200Next: MOV TL0,#0CH MOV TH0,#0F0H RETI 设计一个能产生设计一个能产生t=200ms的周期信号发生器,试编程的周期信号发生器,试编程.200ms的方波的方波:软件计数软件计数 当实际应用系统中应用系统的当实际应用系统中

26、应用系统的2个外部中断源已被个外部中断源已被占用,现要求占用,现要求增加增加1个外部中断源个外部中断源,而片内定时器,而片内定时器/计数器没有使用时,可利用定时器计数器没有使用时,可利用定时器/计数器扩展外计数器扩展外部中断源,部中断源,方法如下:方法如下:将定时器将定时器/计数器设置为计计数器设置为计数模式,计数初值设定为满值,将待扩展的外部数模式,计数初值设定为满值,将待扩展的外部中断源接到定时器中断源接到定时器/计数器。当从该引脚输入一个计数器。当从该引脚输入一个下降沿信号,计数器加下降沿信号,计数器加1后产生定时器后产生定时器/计数器溢计数器溢出中断。因此定时器出中断。因此定时器/计数

27、器可作为扩展中断源的计数器可作为扩展中断源的中断输入端。中断输入端。例例:利用定时器利用定时器/计数器计数器T0扩展一个外部中断源,扩展一个外部中断源,T0设置为方式设置为方式2(自动重装初值方式)外部计数工(自动重装初值方式)外部计数工作模式,作模式,TH0、TH1初值均为初值均为0FFH,初始化程序,初始化程序如下:如下:INIT_T0: MOV TMOD,#06H; T0计数方式计数方式2 MOV TH0,#0FFH; MOV TH0,#0FFH; SETB ET0; T0开中断;开中断; SETB EA; 开总中断开总中断 SETB TR0 ; 启动计数器启动计数器T0#include

28、sbit pulse_out=P10;unsignedcharflag;/*定义T0产生中断标志位*/*定时器初始化程序*/init_timer()TMOD=0X25;/*T0计数,方式1;/*T1定时,方式2*/TH0=0XFF;/*T0置初值*/TL0=0XFF;TH1=0X06;/*T1置初值*/TL1=0X06;IE=0X8A;/*开中断*/TR0=1;/*启动T0*/ GA TE C/TM 1M 0GA TE C/TM 1M 0例例 假设某假设某80C51应用系统的应用系统的2个外部中断源已被占用,现要个外部中断源已被占用,现要求增加求增加1个外部中断源,并控制个外部中断源,并控制P

29、1.0引脚输出引脚输出1个周期为个周期为1ms的方波。假设晶振频率为的方波。假设晶振频率为6MHz。X = 256 - t/T = 256 (500)/2 = = 0X06HIEEAESET1EX1ET0EX0/*T0中断服务程序中断服务程序*/void t0_int() interrupt 1TR0=0;/*T0停止工作停止工作*/flag=1; /*置置1中断产生标志位中断产生标志位*/*T1中断服务程序中断服务程序*/void t1_int() interrupt 3pulse_out=!pulse_out;/*脉冲输出位取反脉冲输出位取反*/main() /*主程序主程序*/init_

30、timer();/*调用定时器初始化程序调用定时器初始化程序*/flag=0; /*T0产生中断标志位清产生中断标志位清0*/while(!flag); /*等待等待T0产生中断产生中断*/TR1=1; /*T0中断后,启动中断后,启动T1*/while(1);/*等待等待T1中断中断*/方式方式1的应用的应用例:例:利用定时利用定时/计数器(计数器(T0)的方式)的方式1,产生一个,产生一个50Hz的方波,此方波由的方波,此方波由P1.0引脚输出,假设晶振频率为引脚输出,假设晶振频率为12MHz。1) 确定确定定时器初值定时器初值X: 由于由于晶振为晶振为12MHz,所以一个机器周期,所以一

31、个机器周期Tcy =(121)/(12106)=1s。计数初值。计数初值X=216- tTcy=65536-0.01s1s=65536-10000=55536=D8F0H即应将即应将D8H送入送入TH0中,中,F0H送入送入TL0中。中。2) 根据根据要求求得要求求得T0的方式控制字的方式控制字TMOD:GATE=0, C/T=0,M1M0=01,可得方式控制字,可得方式控制字TMOD=01H,即,即T0的方式的方式1。查询查询方式:方式:#includesbit pulse_out=P10;/*定义脉冲输出位定义脉冲输出位*/main()TMOD=0 x01;/* T0定时方式定时方式1*/

32、TH0=0 xD8;/*装入计数初值装入计数初值*/TL0=0 xF0;TR0=1;/*启动定时器启动定时器T0*/while(1) if(TF0)/*查询查询TF0,等待定时时间到等待定时时间到*/ TF0=0;/*定时时间到,清定时时间到,清TF0*/ TH0=0 xD8;/*重装计数初值重装计数初值*/ TL0=0 xF0; pulse_out=!pulse_out;/*脉冲输出位取反脉冲输出位取反*/ 中断方式:中断方式:#includesbitpulse_out=P10;/*定义脉冲输出位定义脉冲输出位*/*中断服务程序中断服务程序*/voidT0_int() interrupt1T

33、H0=0 xD8;/*重装计数初值重装计数初值*/TL0=0 xF0;pulse_out=!pulse_out;/*脉冲输出位取反脉冲输出位取反*/ /*主程序主程序*/main()TMOD=0 x01;/* T0定时方式定时方式1*/TH0=0 xD8;/*装入计数初值装入计数初值*/TL0=0 xF0;ET0=1;/*T0开中断开中断*/EA=1;/*开总中断开总中断*/TR0=1;/*启动定时器启动定时器T0*/while(1);/*等待中断等待中断*/例:例:假设系统时钟为假设系统时钟为6MHz,编写定时器,编写定时器T0定时定时1s的程序。的程序。分析:分析: MAX=131.072

34、ms 1s=100ms*10; X=65536-100/2=3CBOH#include/*定时器定时器T0中断服务程序中断服务程序*/void T0_int() interrupt 1static unsigned charcount; /*声明静态变量声明静态变量count*/count+;/*累计中断次数累计中断次数*/TH0=0 x3C;/*重装计数初值重装计数初值*/TL0=0 xB0;if(count= =10)TR0=0; /*1s到,停止到,停止T0工作工作*/ /*主程序主程序*/main() TMOD=0 x01;/* T0定时方式定时方式1*/TH0=0 x3C;/*装入计

35、数初值装入计数初值*/TL0=0 xB0;ET0=1;/*T0开中断开中断*/EA=1;/*开总中断开总中断*/TR0=1;/*启动定时器启动定时器T0*/while(1);/*等待中断等待中断*/方式方式2例例: 利用定时利用定时/计数器计数器T1的方式的方式2对外部信号计数。要求对外部信号计数。要求每计满每计满200个数,将个数,将P1.0引脚信号取反。引脚信号取反。#includesbitpulse_out=P10;/*定义脉冲输出位定义脉冲输出位*/void t1_int() interrupt 3pulse_out=!pulse_out;/*取反脉冲输出位取反脉冲输出位*/main(

36、)TMOD=0 x60;/* T1计数方式计数方式2*/TH1=0 x38;/*装入计数初值装入计数初值*/TL1=0 x38; 256-200=56=0 x38ET1=1;/*T1开中断开中断*/EA=1;/*开总中断开总中断*/TR1=1;/*启动定时器启动定时器T1*/while(1);/*等待中断等待中断*/方式方式3例:例: 定时定时/计数器计数器T1作波特率发生器用,增加作波特率发生器用,增加1个外部个外部中断源,并用它来控制中断源,并用它来控制P1.0引脚输出引脚输出1个个5KHz的方波。假的方波。假设晶振频率为设晶振频率为6MHz。#includesbit pulse_out=

37、P10; /*定义脉冲输出位定义脉冲输出位*/*定时器初始化程序定时器初始化程序*/init_timer()TMOD=0X27; /*设置定时器工作方式设置定时器工作方式*/TL0=0XFF; /*装入初值装入初值*/TH0=0XCE; TL1=0Xxx; /*根据波特率设置初值根据波特率设置初值*/TH1=0Xxx; IE=0X9A; /*允许中断允许中断*/TR0=1; /*启动启动TL0*/*TL0中断服务程序中断服务程序*/void tl0_int() interrupt 1 TR1=1; /*启动启动TH0*/TL0=0XFF; /*重装初值重装初值*/*TH0中断服务程序中断服务程

38、序*/void th0_int() interrupt 3TH0=0XCE; /*重装初值重装初值*/pulse_out=!pulse_out;/*脉冲输出位取反脉冲输出位取反*/*主程序主程序*/main()init_timer(); /*调用定时器初始化程序调用定时器初始化程序*/while(1); /*等待中断等待中断*/ 例:例:门控位门控位GATE的应用的应用测量测量 INTX引脚脉冲宽度引脚脉冲宽度 当当GATE0=1且且TR0=1时,只有时,只有INT0引脚输入高电平时,引脚输入高电平时,T1才被允许工作。利用这个特性,可测量从才被允许工作。利用这个特性,可测量从INT0引脚(引脚(P3.2)上输入的正脉冲的宽度,其方法如图所示。)上输入的正脉冲的宽度,其方法如图所示。(P3.2P3.2)09HTMOD1GATE0 1TR0T0从从0开始计数开始计数测量脉冲宽度测量脉冲宽度0TR0停止计数停止计数图图6-236-23利用利用GATEGATE位测量正脉冲宽度位测量正脉冲宽度ORG 0000HLJMP MAINORG 0100HMAIN:MOVSP,#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论