第二节定时计数器与实验一、二_第1页
第二节定时计数器与实验一、二_第2页
第二节定时计数器与实验一、二_第3页
第二节定时计数器与实验一、二_第4页
第二节定时计数器与实验一、二_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、定时方法有:定时方法有:u软件定时:通过执行循环程序实现时间延迟软件定时:通过执行循环程序实现时间延迟, ,定定时准确且不需外加硬件电路,但占用时准确且不需外加硬件电路,但占用CPUCPU时间。时间。u硬件定时:通过硬件电路的连接实现定时,不硬件定时:通过硬件电路的连接实现定时,不增加增加CPUCPU开销,但电路连接较繁,使用不方便。开销,但电路连接较繁,使用不方便。u可编程定时器定时:通过对系统的时钟脉冲计可编程定时器定时:通过对系统的时钟脉冲计数进行定时,定时方便、准确,定时时间可通过数进行定时,定时方便、准确,定时时间可通过程序设定。即用定时程序设定。即用定时/ /计数器定时。计数器定时

2、。7.2 7.2 定时定时/ /计数器计数器 1 1、定时、定时/ /计数器的基本结构计数器的基本结构2.2.定时定时/ /计数器的工作原理计数器的工作原理 MCS-51 MCS-51单片机有单片机有两个两个可编程定时可编程定时/ /计数器计数器T/C0T/C0、T/C1T/C1, 1616位寄存器,位寄存器,加法计数结构加法计数结构,T0T0(TH0TH0、TL0TL0),), T1T1(TH1TH1、TL1TL1)。)。 均有定时和计数功能,但进行加法计数的均有定时和计数功能,但进行加法计数的信号信号不同。不同。 (2) (2) 计数功能计数功能 计数就是对外部事件的输入脉冲进行计数计数就

3、是对外部事件的输入脉冲进行计数。 MCSMCS5151的计数脉冲来自的计数脉冲来自计数输入端计数输入端T0(P3.4)T0(P3.4)或或T1(P3.5)T1(P3.5),当输入信号产生当输入信号产生由由1 1至至0 0的下跳变的下跳变时,计数时,计数器的值加器的值加1 1。 在计数方式下,单片机在每个机器周期的在计数方式下,单片机在每个机器周期的S5P2S5P2拍拍节对外部计数脉冲进行采样,如果前一个机器周期采节对外部计数脉冲进行采样,如果前一个机器周期采样为样为1 1(高电平),后一个机器周期采样为(高电平),后一个机器周期采样为0(0(低电平低电平) ),则在紧跟着的再下一个机器周期则在

4、紧跟着的再下一个机器周期S3P1S3P1拍节计数器的值拍节计数器的值加加1 1。由于。由于确认一次下跳变要花两个机器周期确认一次下跳变要花两个机器周期,即,即2424个个晶振周期,所以,晶振周期,所以,外部输入的计数脉冲的最高频率应外部输入的计数脉冲的最高频率应为晶振频率的为晶振频率的1 12424,或者说外部计数脉冲的周期最短,或者说外部计数脉冲的周期最短要要2s2s(当晶振频率为(当晶振频率为12 MHz12 MHz)时。)时。 7.2.1 7.2.1 相关的特殊功能寄存器相关的特殊功能寄存器 工作方式控制寄存器工作方式控制寄存器TMODTMOD 相关的控制寄存器相关的控制寄存器 定时器控

5、制寄存器定时器控制寄存器TCONTCON 中断允许寄存器中断允许寄存器IEIE 计数寄存器计数寄存器THTH和和TLTL(4 4个)个) 计数寄存器计数寄存器THTH和和TL-TL-TH1-TH1、TL1TL1,TH0TH0、TL0TL02. 2. 工作方式寄存器工作方式寄存器TMODTMOD 用于设定用于设定T/C0T/C0、T/C1T/C1的功能和工作方式,是专的功能和工作方式,是专用寄存器。用寄存器。TMODTMOD寄存器不能位寻址。高寄存器不能位寻址。高4 4位和低位和低4 4位名称、作用一致,高位名称、作用一致,高4 4位控制位控制 T1T1,低,低4 4位控制位控制T0T0。 GA

6、TE:门控位:门控位 GATE=0时,当定时控制寄存器时,当定时控制寄存器TCON中的中的TR0(或(或TR1)置)置“1”时,启动定时时,启动定时/计数器计数器T0(或(或T1)工作;)工作; TR0(或(或TR1)清)清“0”时,停止定时时,停止定时/计数器计数器T0(或(或T1)工作。)工作。 GATE=1时,除时,除TR0(或(或TR1)置)置“1”外,还要外部中断请求外,还要外部中断请求信号信号INT0(P3.2)(或或INT1(P3.3)=1时,才启动定时时,才启动定时/计数器计数器T0(或(或T1)工作;)工作; 可用于测量在可用于测量在INT0(或或INT1)引脚出现的脉冲高电

7、平引脚出现的脉冲高电平的宽度。的宽度。C/T: 定时定时/计数功能选择位计数功能选择位 C/T=0: 定时功能定时功能 C/T=1: 计数功能计数功能M1 M0 :工作方式选择位:工作方式选择位 满值满值M 0 0 :方式:方式0 :由:由THX(X=0,1)的的8位和位和TLX的低的低5位构位构 成的成的13位计数器。位计数器。 M=2 =8192 0 1 :方式:方式1 :由:由THX和和TLX构成的构成的16位计数器。位计数器。 M=2 =65536 1 0 :方式:方式2 :可自动重装初值的:可自动重装初值的8位计数器;位计数器; TLX作作 计数器,计数器,THX保存计数初值,一旦计

8、数器计保存计数初值,一旦计数器计 满溢出,初值自动装入,继续计数循环不止。满溢出,初值自动装入,继续计数循环不止。 M=2 =256 1 1 :方式:方式3 :仅适用于:仅适用于T0,分为两个,分为两个8位计数器,位计数器,T1 停止工作。停止工作。 M=2 =2561316883. 3. 定时控制寄存器定时控制寄存器TCONTCON TCONTCON寄存器既参与寄存器既参与中断控制中断控制又参与又参与定时定时控制控制。其中高。其中高4 4位与定时有关。位与定时有关。TR0(或(或TR1) :定时:定时/计数器运行控制位计数器运行控制位 TR0(或或TR1)=0,停止定时,停止定时/计数器计数

9、器T0(或或T1)工作工作, TR0(或或TR1)=1,启动定时,启动定时/计数器计数器T0(或或T1)工作。工作。 软件置软件置“1”或清或清“0”。 TF0(或(或TF1) :计数溢出标志位:计数溢出标志位 当计数器计满溢出时当计数器计满溢出时,该位由该位由硬件自动置硬件自动置“1”。 使用使用中断方式中断方式时,此位作中断标志位,该位置时,此位作中断标志位,该位置“1”的同时的同时向向CPU申请中断,在转向中断服务程序时申请中断,在转向中断服务程序时由硬件自动清由硬件自动清“0”。 使用使用查询方式查询方式时,此位作状态位供查询,但应注意查询有时,此位作状态位供查询,但应注意查询有效后效

10、后应以软件方法及时将该位清应以软件方法及时将该位清“0”。7.2.2. 7.2.2. 定时定时/ /计数器的工作方式计数器的工作方式 MCS-51MCS-51的定时的定时/ /计数器共有计数器共有4 4种工作方式种工作方式 工作方式工作方式0 0 方式方式0 0是是1313位位计数器,其计数器由计数器,其计数器由THTH全部全部8 8位和位和TLTL的低的低5 5位位构成,构成,TLTL的高的高3 3位弃之不用。位弃之不用。 定时定时/ /计数器计数器T T/C0 0在工作方式在工作方式0 0逻辑结构逻辑结构 工作方式工作方式1 1 方式方式1 1是是1616位位计数结构,计数器由计数结构,计

11、数器由THTH全部全部8 8位和位和TLTL全部全部8 8位构成。其逻辑电路和工作情位构成。其逻辑电路和工作情况与方式况与方式0 0完全相同。完全相同。 工作方式工作方式2 2 工作方式工作方式2 2具有具有自动重装初值自动重装初值的功能。非的功能。非常适用于常适用于循环定时循环定时或或循环计数循环计数应用,例如用于应用,例如用于产生固定脉宽的脉冲,此外还可以作串行数据产生固定脉宽的脉冲,此外还可以作串行数据通信的波特率发生器使用。通信的波特率发生器使用。 定时定时/ /计数器计数器T/C0T/C0在工作方式在工作方式2 2逻辑结构逻辑结构 工作方式工作方式3 3 在工作方式在工作方式3 3下

12、,两个定时计数器的设置和下,两个定时计数器的设置和使用是不同的,使用是不同的,方式方式3 3只适用于只适用于T/C0T/C0,若设置,若设置T T/ /C C1 1为为方式方式3 3时,则时,则T1T1停止计数。停止计数。 方式方式3下的定时下的定时/计数器计数器T/C0T/C0 在工作方式在工作方式3下,下,T/C0T/C0被拆成两个独立的被拆成两个独立的8位计数位计数器器TL0和和TH0。 功能功能 使用的控制位使用的控制位 TL0TL0定时、计数定时、计数 原原T0T0各控制位、引脚信号和中断源各控制位、引脚信号和中断源TH0TH0定时定时原原T1T1的控制位的控制位TR1TR1和和TF

13、1TF1。 定时定时/ /计数器计数器T0T0的工作方式的工作方式3 3逻辑结构逻辑结构 方式方式3 3下的定时计数器下的定时计数器T/C1T/C1 一般只有当一般只有当T/C1T/C1作为串行口的作为串行口的波特率发生器波特率发生器使用使用时,时,T/C0T/C0才工作于方式才工作于方式3 3,此时,此时T1T1可工作于方式可工作于方式0 02 2。 常把常把T/C1T/C1设置为方式设置为方式2 2,作波特率发生器。仅用控,作波特率发生器。仅用控制位来切换其定时和计数方式;因为已没有计数溢出制位来切换其定时和计数方式;因为已没有计数溢出标志位标志位TFTF可供使用,因此只能把计数溢出直接送

14、给串可供使用,因此只能把计数溢出直接送给串行口。当作为波特率发生器使用时,只需设置好工作行口。当作为波特率发生器使用时,只需设置好工作方式,便可自动运行。如要停止工作,只需送入一个方式,便可自动运行。如要停止工作,只需送入一个把它设置为方式把它设置为方式3 3的方式控制字就可以了。的方式控制字就可以了。 定时定时/ /计数器计数器T/C0T/C0工作于方式工作于方式3 3时时 T1T1的逻辑结构的逻辑结构7.2.3 7.2.3 定时定时/ /计数器的初始化计数器的初始化1. 1. 编程初始化步骤编程初始化步骤l确定确定T/CT/C的工作方式,给的工作方式,给TMODTMOD送值;送值;l算计数

15、初值,送到算计数初值,送到THTH和和TLTL;lT/CT/C在中断方式工作时,要开中断,即给在中断方式工作时,要开中断,即给IEIE送送值;值;l启动定时启动定时/ /计数器,给计数器,给TR1TR1或或TR0TR0置置1 1。 2.2.计数初值的计算计数初值的计算 (1 1)当当 =0=0时为定时功能,时为定时功能, 计数初值的范围计数初值的范围=0=0(2 -12 -1) nn各工作方式中计数器的位数,按顺序分别为各工作方式中计数器的位数,按顺序分别为 13,16,8,813,16,8,8;相对应的;相对应的2 =8192,65536,256,2562 =8192,65536,256,2

16、56。 TC /TC /TC /TC /TC /TC / (2)当 =1时为计数功能,计数值的范围2 计数初值127.2.4 定时/计数器的应用实例例例1 1 时钟频率为时钟频率为12MHz 12MHz 的的80518051芯片上,用芯片上,用Timer1Timer1产生产生10kHz10kHz定时器滴答中断。定时器滴答中断。 #include #include /T1/T1中断服务程序,每中断服务程序,每 100100个个T T机执行机执行1 1次。次。 static unsigned long overflow-count=0;static unsigned long overflow-c

17、ount=0; void timer1-ISR(void) interrupt 3 void timer1-ISR(void) interrupt 3 overflow-count+; overflow-count+; /计数溢出时加计数溢出时加1 1 /MAIN C函数:置定时器函数:置定时器1为方式为方式2,计数到,计数到255溢出,溢出,用用156重装初值,并产生中断重装初值,并产生中断/ void main (void) TMOD=(TMOD&0 x0F)|0 x20; /置定时器置定时器1为方式为方式2/ TH1=256-100; TL1=TH1; /送初值送初值/ ET1=

18、1; /允许中断源允许中断源T1中断中断/ TR1=1; /启动定时器启动定时器1/ EA=1; /开总中断开总中断/ while(1); /无限循环无限循环/ 例例2 2 设单片机晶振频率设单片机晶振频率 = 12MHz= 12MHz,要求由,要求由P1.0P1.0输出周期为输出周期为2ms2ms的方波,试设计初始化程序。的方波,试设计初始化程序。解:解: 计算计数初值计算计数初值 只需在只需在P1.0 P1.0 端交替输出持续时间均为端交替输出持续时间均为1ms1ms的高低电的高低电 平即可实现,即定时平即可实现,即定时1ms1ms,每到,每到1ms1ms,P1.0P1.0取反即可。取反即

19、可。 计算方式计算方式1 1的计数初值的计数初值 6553665536X X1s1s1000s1000s 求解得:求解得:X=65536-1000=64536X=65536-1000=64536 即即 TH0=64536/256, TL0=64536%256TH0=64536/256, TL0=64536%256; TMOD TMOD寄存器初始化寄存器初始化 T1T1不用,故高不用,故高4 4位均设定为位均设定为0;0; 为实现为实现T0T0的运行控制,则的运行控制,则GATE = 0GATE = 0; 定时功能,定时功能, =0=0; 方式方式1 1,则,则 M1 M0=0 1M1 M0=0

20、 1。 所以所以TMODTMOD寄存器应初始化为寄存器应初始化为01H01H; TCON TCON寄存器初始化寄存器初始化 设设TR0=1TR0=1启动定时器;启动定时器; TF0TF0清清“0”0”,以备定时溢出时置,以备定时溢出时置“1”1”。 本例题功能可用本例题功能可用查询方式查询方式实现,亦可用实现,亦可用中断中断方式方式实现。实现。 l用定时器用定时器0 0的方式的方式1 1编程,采用编程,采用查询方式查询方式。程序。程序名名time32.ctime32.c #include sbit P1.0=P10; void main (void) TMOD=0 x01; /置定时器置定时器

21、0为方式为方式1 TR0=1; /启动定时器启动定时器0 for(;) TH0=(65536-1000)/256; TL0=(65536-1000)%256; /装载计数初值装载计数初值 do while(!TF0 ); /查询等待查询等待TF0 置位置位 P1.0=!P1.0; /定时时间到定时时间到P1.0反相反相 TF0=0; /查询方式时必须查询方式时必须软件清软件清TF0 l用定时器用定时器0 0的方式的方式1 1编程,采用编程,采用中断方式中断方式。程序名。程序名time31.ctime31.c 例例3 如如p189图图8-4所示,在所示,在P1.7端接有一个发光二极管,端接有一个

22、发光二极管,要求用要求用T/C控制,使控制,使LED亮亮1s,灭灭1s,周而复始。周而复始。 解:若晶振解:若晶振6MHz,1T机机=2s,方式,方式1最大定时时间最大定时时间130ms。因定时时间长,定时一次达不到。因定时时间长,定时一次达不到1s,可用复合,可用复合定时实现:定时实现:l 用用T/C0每定时每定时100ms中断,将中断,将P1.0 取反一次,即取反一次,即P1.0输出周期输出周期 为为200ms的方波脉冲;的方波脉冲;l 用用T/C1对对P1.0 输出的脉冲计数,输出的脉冲计数,5个脉冲就是个脉冲就是1s,即用,即用T/C1 每计满每计满5个数就中断,将个数就中断,将P1.

23、7反相,改变灯的状态。反相,改变灯的状态。l T/C0定时方式定时方式1: 100000=(65536-X)*2 初值初值=65536-50000=15536=3CB0Hl T/C1计数方式计数方式2: 5=256-X 初值初值=256-5=251 TMOD=01100001B=61Hl用定时器用定时器0 0、计数器、计数器1 1的方式的方式1 1、2 2编程,均采用中断编程,均采用中断方式。程序名方式。程序名time33.ctime33.c #include sbit P1.0=P10; sbit P1.7=P17; timer0( ) interrupt 1 using 1 / T/C0中

24、断服务程序中断服务程序 P1.0=!P1.0; /100ms到,到,P1.0反相反相 TH0=(65536-50000)/256; TL0=(65536-50000)%256; /重装计数初值重装计数初值 timer1( ) interrupt 3 using 2 / T/C1中断服务程序中断服务程序 P1.7=!P1.7; /1s到,到,P1.7反相反相 main ( ) PI.7=0; /置灯初始灭(为置灯初始灭(为0时灭)时灭) PI.0=1; /保证第一次反相就开始计数保证第一次反相就开始计数 TMOD=0 x61; /置置T/C0为方式为方式1定时定时,T/C1为方式为方式2计数计数

25、 TH0=(65536-1000)/256; TL0=(65536-1000)%256; TH1=256-5; TL1=256-5; /装载计数初值装载计数初值 IP=0 x08; /置优先级寄存器置优先级寄存器 EA=1; /CPU开中断开中断 ET0=1; /T/C0 开中断开中断 ET1=1; /T/C1开中断开中断 TR0=1; /启动启动T/C0 TR1=1; /启动启动T/C1 for(; ) 例例4 4 【功能】:用定时器【功能】:用定时器T0T0测量测量 (P3.2P3.2)引脚上输)引脚上输入的外脉冲高电平宽度。已知晶振频率为入的外脉冲高电平宽度。已知晶振频率为12MHz12

26、MHz。1INT1INT1INT1INT实实 验验 注注 意意 事事 项项1实验前先不连仿真器,给实验箱通电,若实验前先不连仿真器,给实验箱通电,若实验箱上的八段数码显示器显示字母实验箱上的八段数码显示器显示字母“P”,表示实验箱无故障。表示实验箱无故障。2必须断电插拔线。必须断电插拔线。 3程序存入程序存入c:dice5151asm*.c,程序名必,程序名必须以英文字母开头,扩展名为须以英文字母开头,扩展名为.c。 4若实验出现故障,可用以下程序单步运行若实验出现故障,可用以下程序单步运行(按(按F7键实现单步运行)验证,键实现单步运行)验证,实验一实验一 定时定时/ /计数实验计数实验 一

27、一 实验目的实验目的 熟悉单片机内部定时熟悉单片机内部定时/ /计数器的功能;计数器的功能; 掌握定时、计数程序的初始化编制方法。掌握定时、计数程序的初始化编制方法。二二 实验设备实验设备 DICE5203 KDICE5203 K实验开发系统,计算机实验开发系统,计算机三三 实验内容实验内容(一)定时(一)定时/ /计数器计数器T0T0延时实验延时实验 已知系统时钟频率已知系统时钟频率fosc =12MHfosc =12MHZ Z,用定时,用定时/ /计数器计数器T0T0延时,延时,编程使与编程使与P1.0P1.0口相连的发光二极管每隔口相连的发光二极管每隔1s1s发光状态改变,使发光状态改变

28、,使与与P1.1P1.1口相连的发光二极管每隔口相连的发光二极管每隔5s5s发光状态改变,循环不止。发光状态改变,循环不止。(二)定时(二)定时/ /计数器计数器T1T1计数实验计数实验 已知系统时钟频率已知系统时钟频率fosc =12MHfosc =12MHZ Z,用定时,用定时/ /计数器计数器T1T1计数,计数,编程使按键每闭合编程使按键每闭合5 5次,与次,与P1.0P1.0口相连的发光二极管发光状态改口相连的发光二极管发光状态改变(即变(即T1T1每记录每记录5 5个脉冲,个脉冲,P1.0P1.0取反一次)。取反一次)。 四、实验步骤四、实验步骤(一)定时(一)定时/计数器计数器T0

29、延时实验延时实验1、连接电源线和串行口数据线;、连接电源线和串行口数据线;2、用插针将、用插针将P1.0孔与发光二极管孔与发光二极管L1孔相连,孔相连,P1.1孔与发光二极管孔与发光二极管L2孔相连;孔相连;3、打开、打开DICE5203 K实验开发系统的电源;实验开发系统的电源;4、启动计算机,打开桌面软件文件夹,选择、启动计算机,打开桌面软件文件夹,选择MS51仿真开发系统图标双击,进入软件仿真开发系统图标双击,进入软件编程界面;编程界面;5、编制程序,调试、运行;、编制程序,调试、运行;6、观察发光二极管状态。、观察发光二极管状态。 (二)定时(二)定时/计数器计数器T1计数实验计数实验

30、1连接电源线和串行口数据线;连接电源线和串行口数据线;2用插针将用插针将P1.0孔与发光二极管孔与发光二极管L1孔相连,孔相连, P3.5孔与单脉冲输出孔相连;孔与单脉冲输出孔相连;3打开打开DICE5203 K实验开发系统的电源;实验开发系统的电源;4启动计算机,打开桌面软件文件夹,选择启动计算机,打开桌面软件文件夹,选择 MS51仿真开发系统图标双击,进入软件编仿真开发系统图标双击,进入软件编程界面;程界面;5. 编制程序,调试、运行;编制程序,调试、运行;6反复扳动按键开关,观察发光二极管状态。反复扳动按键开关,观察发光二极管状态。 五思考题:五思考题:1实验(一)中,如果用实验(一)中

31、,如果用T1 延时,使与延时,使与P1.0口相连的发光二极管每隔口相连的发光二极管每隔2s发光状态发光状态改变,程序将如何编制?改变,程序将如何编制?2实验(二)中,若使按键每闭合实验(二)中,若使按键每闭合10次,与次,与P1.1口相连的发光二极管发光状态改变,口相连的发光二极管发光状态改变,程序将如何编制?程序将如何编制? #include /实验一实验一(一一)程序程序 #define uint unsigned int sbit P1_0=P10; sbit P1_1=P11; uint i=0,j=0; void main(void) P1_0=0;P1_1=0;TMOD=0 x01

32、;EA=1;ET0=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;while(1); void tim0(void) interrupt 1 using 1 EA=0;i+;j+;if(i=20)P1_0=!P1_0;i=0;if(j=100)P1_1=!P1_1;j=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1; #include /实验一(二)程序实验一(二)程序 sbit P1_0=P10; void main(void) P1_0=1;TMOD=0 x06;EA=1;ET0=1

温馨提示

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

评论

0/150

提交评论