第6章MCS51单片机定时器、计数器

上传人:壹****1 文档编号:579031365 上传时间:2024-08-25 格式:PPT 页数:45 大小:1.76MB
返回 下载 相关 举报
第6章MCS51单片机定时器、计数器_第1页
第1页 / 共45页
第6章MCS51单片机定时器、计数器_第2页
第2页 / 共45页
第6章MCS51单片机定时器、计数器_第3页
第3页 / 共45页
第6章MCS51单片机定时器、计数器_第4页
第4页 / 共45页
第6章MCS51单片机定时器、计数器_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《第6章MCS51单片机定时器、计数器》由会员分享,可在线阅读,更多相关《第6章MCS51单片机定时器、计数器(45页珍藏版)》请在金锄头文库上搜索。

1、第六章第六章 MCS-51单片机定时器单片机定时器/计数器计数器【学习目的和要求】MCS-51单片机内部有两个定时器/计数器,它们可以用于对某一事件的计数结果进行控制,或按一定时间间隔进行控制。了解和掌握定时器/计数器的结构原理和各种工作方式。了解定时器/计数器的基本编程应用6.1 定时器定时器/计数器结构及工作原理计数器结构及工作原理6.2 定时器定时器/计数器的控制及工作方式计数器的控制及工作方式6.3 定时器定时器/计数器的编程和应用计数器的编程和应用第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器6.1.1 6.1.1 定时器定时器/ /计数

2、器的结构计数器的结构T0、T1又可分为两个独立的8位计数器,即TH0、TL0和TH1、TL1,用于存储定时器/计数器的初值TMOD为为方式控制方式控制寄存器,寄存器,用来设置用来设置定时器定时器/计计数器的工数器的工作方式作方式TCON为为控制寄存控制寄存器,用来器,用来控制定时控制定时器器/计数器计数器的启动与的启动与停止停止MCS-51系列单片机的系列单片机的51子系列由两个子系列由两个16位定时器位定时器T0、T1和两个和两个寄存器寄存器TCON、TMOD组成。组成。第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器6.1.2 6.1.2 定时器

3、定时器/ /计数器的工作原理计数器的工作原理原理原理: :都是进行计数操作,每来一个脉冲定时器都是进行计数操作,每来一个脉冲定时器/ /计数器就加计数器就加1 1,加,加满溢出后,再从新开始计数满溢出后,再从新开始计数, ,不同之处是输入的计数信号来源不同。不同之处是输入的计数信号来源不同。 T0的结构示意图定时功能:是通过对单片机内部时钟脉冲的计数来实现的。定时功能:是通过对单片机内部时钟脉冲的计数来实现的。计数输入信号是内部时钟脉冲,每个机计数输入信号是内部时钟脉冲,每个机器周期使寄存器的值加器周期使寄存器的值加1。所以,计数频率是振荡频率的。所以,计数频率是振荡频率的1/12。计数功能:

4、是通过对外部输入脉冲进行计数来实现的。计数脉计数功能:是通过对外部输入脉冲进行计数来实现的。计数脉冲来自相应的外部输入引脚,冲来自相应的外部输入引脚,T0为为P3.4,T1为为P3.5。K1K2可预置初值可预置初值计数器计数器中断中断请求请求功能功能选择选择启动启动控制控制内部时钟内部时钟脉冲(定时)脉冲(定时)外部输入外部输入脉冲(计数)脉冲(计数)溢出信号溢出信号计数脉冲计数脉冲计数初计数初值值6.1.2 6.1.2 定时器定时器/ /计数器的工作原理计数器的工作原理原理原理: :都是进行计数操作,每来一个脉冲定时器都是进行计数操作,每来一个脉冲定时器/ /计数器就加计数器就加1 1,加,

5、加满溢出后,再从新开始计数满溢出后,再从新开始计数, ,不同之处是输入的计数信号来源不同。不同之处是输入的计数信号来源不同。工作方式控制寄存器TMOD T1控制T0控制M0M0M1M1C/TGATEM0M0M1M1C/TGATED0D1D2D3D4D5D6D7GATE门控位C/T计数/定时选择M1 M0M1 M0工作方式选择M1M0工作方式工作方式功能描述功能描述00方式方式013位定时器位定时器/计数器计数器01方式方式116位定时器位定时器/计数器计数器10方式方式2自动重装初值的自动重装初值的8位定时器位定时器/计数器计数器11方式方式3T0分分为为两两个个独独立立的的8位位定定时时器器

6、/计计数数器器;这这时时T1只能工作在方式只能工作在方式0、1、2,且不能用于中断。,且不能用于中断。6.2 6.2 定时器定时器/ /计数器控制及工作方式计数器控制及工作方式定时器控制寄存器TCOND7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0中断请求标志触发方式选择启动定时/计数器0 低电平1 下降沿0 停止1 启动6.2 6.2 定时器定时器/ /计数器控制及工作方式计数器控制及工作方式字节地址为字节地址为88H,它可进行位寻址,位地址为,它可进行位寻址,位地址为8FH88H。第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/

7、/计计数数器器6.2.3 定时器定时器/计数器的工作方式计数器的工作方式通过对通过对TMODTMOD寄存器中寄存器中M0M0、M1M1位进行设置,可选择位进行设置,可选择4 4种工作方式。种工作方式。一一、方式、方式0 0 方式方式0为为13位计数位计数,由由TL0的低的低5位(高位(高3位未用)和位未用)和TH0的的8位组成。位组成。TL0的低的低5位溢出时向位溢出时向TH0进位,进位,TH0溢出时,置位溢出时,置位TCON中的中的TF0标志,标志,向向CPU发出中断请求。发出中断请求。计数器定时器计数脉冲输入二、方式二、方式1 方式方式1的计数位数是的计数位数是16位,由位,由TL0作为低

8、作为低8位、位、TH0作为高作为高8位,组成了位,组成了16位加位加1计数器计数器 。计数个数与计数初值的关系为:计数个数与计数初值的关系为:三、方式三、方式2 方式方式2为自动重装初值的为自动重装初值的8位计数方式。位计数方式。计数个数与计数初值的关系为计数个数与计数初值的关系为:工作方式2特别适合于用作较精确的脉冲信号发生器。四、方式四、方式3 方式方式3只适用于定时只适用于定时/计数器计数器T0,定时器定时器T1处于方式处于方式3时相当于时相当于TR1=0,停止计数。,停止计数。工作方式工作方式3将将T0分成为两个独立的分成为两个独立的8位计数器位计数器TL0和和TH0。第第六六章章 M

9、 MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器两个定时器两个定时器/ /计数器的设置和使用是不同的。计数器的设置和使用是不同的。(1 1)工作方式)工作方式3 3下的定时器下的定时器/ /计数器计数器0 0第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器图6-9 T0工作在方式3时T1为方式0图6-10T0工作在方式3时T1为方式1图6-11T0工作在方式3时T1为方式2(2 2)工作方式)工作方式3 3下的定时器下的定时器/ /计数器计数器1 1第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器

10、/ /计计数数器器6.2.4 定时器定时器/计数器的初始化计数器的初始化1. 1. 定时器定时器/ /计数器的初始化设置计数器的初始化设置 定时器定时器/ /计数器是一种可编程部件,在使用定时器计数器是一种可编程部件,在使用定时器/ /计数计数器时,需要先对其进行初始化,初始化步骤如下。器时,需要先对其进行初始化,初始化步骤如下。1.1.确定工作模式和工作方式确定工作模式和工作方式,将方式控制字写入,将方式控制字写入TMODTMOD寄存寄存 器中。器中。2.2.预置定时或计数初值预置定时或计数初值,将计算出的定时或计数初始值装,将计算出的定时或计数初始值装 入入TL0TL0、TH0TH0或或T

11、L1TL1、TH1TH1中。不同工作方式,其定时或计中。不同工作方式,其定时或计 数长度不一样,在定时或计数时不能超过其最大值。数长度不一样,在定时或计数时不能超过其最大值。3.3.开放定时器开放定时器/ /计数器的中断计数器的中断,即如果采用中断方式,要对,即如果采用中断方式,要对 IE IE中的相关位进行设置。中的相关位进行设置。4.4.启动定时器启动定时器/ /计数器工作计数器工作, , 使使TCONTCON中的中的TR0TR0或或TR1TR1位置位置1 1。第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器2定时器定时器/计数器初值的计算计数器

12、初值的计算 定时器定时器/ /计数器在不同工作方式时,定时初值或计数初值计数器在不同工作方式时,定时初值或计数初值的计算方法不同,最大定时时间和最大计数值也不同,在定时的计算方法不同,最大定时时间和最大计数值也不同,在定时或计数时不能超过其最大值。或计数时不能超过其最大值。第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器6.3 6.3 定时器定时器/ /计数器的编程和应用计数器的编程和应用6.3.1方式方式0应用应用【例例6-16-1】使用定时器使用定时器/ /计数器计数器0 0的方式的方式0 0,晶振频率为,晶振频率为 = 6MHz= 6MHz,以

13、中,以中 断方式工作,在断方式工作,在P1.0P1.0引脚输出一个周期为引脚输出一个周期为1ms1ms的方波,试编写程序。的方波,试编写程序。解:根据题意,只要使解:根据题意,只要使P1.0P1.0脚每隔脚每隔500500us 取反一次即可得到周期取反一次即可得到周期1ms1ms的方波,因而的方波,因而T0T0的定时时间的定时时间T=500us T=500us 。(1 1)设定)设定TMODTMOD(即控制字)。(即控制字)。TMOD的低4位控制定时器/计数器0,设T0为定时模式,即 =0;工作在方式0,即 M1M0=00;设定为软件启动定时器,即GATE=0。TMOD高4位与T0无关,一般都

14、取0,所以TMOD的控制字为00H。(2 2)计算定时初值。)计算定时初值。 晶振频率晶振频率 为为6MHz6MHz,机器周期,机器周期 定时初值定时初值 =8192-250=7942=0001111100000110B=1F06H=8192-250=7942=0001111100000110B=1F06H因因TL0TL0的高的高3 3位未用,对计算出的初值要进行修正,即在低位未用,对计算出的初值要进行修正,即在低5 5位前插位前插入入3 3个个0 0,修正后的定时初值,修正后的定时初值X=1111100000000110B=F806HX=1111100000000110B=F806H。第第六

15、六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器(3 3)源程序清单)源程序清单ORGORG0000H0000HAJMPAJMPMAINMAIN;转主程序;转主程序ORGORG000BH000BH;T0T0中断矢量地址中断矢量地址AJMPAJMPISERISER;转中断服务程序;转中断服务程序ORGORG100H100HMAINMAIN:MOVMOVSPSP,#60H#60H;设堆栈指针;设堆栈指针MOVMOVTMODTMOD,#00H#00H;写控制字;写控制字 MOV MOVTL0TL0,#06H#06H;置;置T0 T0 初值初值MOVMOVTH0T

16、H0,#0F8H#0F8HSETBSETBET0ET0;允许;允许T0T0中断中断SETB SETB EAEA;CPUCPU开中断开中断SETBSETBTR0TR0;启动;启动T0T0SJMPSJMP$ $;等待中断;等待中断ISERISER:MOVMOVTL0TL0,#06H#06H;T0T0中断服务子程序,重置中断服务子程序,重置T0 T0 初值初值MOVMOVTH0TH0,#0F8H#0F8H;CPLCPLP1.0P1.0;P1.0P1.0取反取反RETIRETIENDEND第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器【例例6-26-2】使

17、用定时器使用定时器/ /计数器计数器1 1的方式的方式0 0,晶振频率为,晶振频率为6MHz6MHz,以查询,以查询 方式工作,在方式工作,在P1.0P1.0引脚输出一个周期为引脚输出一个周期为2ms2ms的方波,试编写程序。的方波,试编写程序。解:根据题意,只要使解:根据题意,只要使P1.0P1.0脚每隔脚每隔1ms1ms取反一次即可得到周期取反一次即可得到周期2ms2ms的方波,因而的方波,因而T1T1的定时时间的定时时间T=1msT=1ms。(1 1)设定)设定TMODTMOD(即控制字)。(即控制字)。 TMOD TMOD的高的高4 4位控制定时器位控制定时器/ /计数器计数器1 1,

18、设,设T1T1为定时模式,即为定时模式,即 = 0= 0;工作在方式;工作在方式0 0,即,即 M1M0=00M1M0=00;设定为软件启动定时;设定为软件启动定时器,即器,即GATE=0GATE=0。TMODTMOD低低4 4位与位与T1T1无关,一般都取无关,一般都取0 0,所以,所以TMODTMOD的控制字为的控制字为00H00H。(2 2)计算定时初值。)计算定时初值。 晶振频率晶振频率 为为6MHz6MHz,机器周期,机器周期 定时初值定时初值 =8192-500=7692=1111000001100B=1E0CH=8192-500=7692=1111000001100B=1E0CH

19、因因TL0TL0的高的高3 3位未用,对计算出的初值要进行修正,即在低位未用,对计算出的初值要进行修正,即在低5 5位位前插入前插入3 3个个0 0,修正后的定时初值,修正后的定时初值X=1111000000001100B=F00CHX=1111000000001100B=F00CH。第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器(3 3)源程序清单)源程序清单 ORGORG100H100HMOVMOVTMODTMOD,#00H#00H;写控制字;写控制字,T1,T1工作方式工作方式0 0MOVMOVTL1TL1,#0CH#0CH;置;置T1 T1

20、 初值初值MOVMOVTH1TH1,#0F0H#0F0HLOOP:LOOP:SETBSETBTR1 TR1 ;启动;启动T1T1LOOP1:LOOP1: JNBJNBTF1TF1,LOOP1LOOP1;查询;查询TF1TF1,有无溢出,有无溢出CLR TF1;有溢出清;有溢出清TF1MOVMOVTL1TL1,#0CH#0CH;重置;重置T1 T1 初值初值MOVMOVTH1TH1,#0F0H#0F0HCPLCPLP1.0P1.0;P1.0P1.0取反取反SJMPSJMPLOOPLOOP第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器6.3.2 方式方

21、式1应用应用方式方式1 1与方式与方式0 0基本相同,其差别只是计数长度不同。基本相同,其差别只是计数长度不同。【例例6-36-3】在单片机在单片机P1P1口连接口连接8 8个发光二极管,如图个发光二极管,如图6-126-12所示。使用所示。使用T1T1工作方式工作方式1 1,晶振频率,晶振频率 = 6MHz= 6MHz,以查询方式工作,定时时间为,以查询方式工作,定时时间为80ms80ms,试编写程序,使图中试编写程序,使图中P1.0P1.0接的发光二极管先亮,延时接的发光二极管先亮,延时80ms80ms后,后,P1.1P1.1亮,亮,依次向左移动,当最左端依次向左移动,当最左端P1.7P1

22、.7亮后又回到最右端重新开始向左移动,亮后又回到最右端重新开始向左移动,不断循环。不断循环。第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器(1 1)设定)设定TMODTMOD(即控制字)。(即控制字)。 TMODTMOD的高的高4 4位控制定时器位控制定时器/ /计数器计数器1 1,设,设T1T1为定时模式,取为定时模式,取 =0=0;工作方式;工作方式1 1,取,取 M1M0=01M1M0=01;设定为软件启动定时器,取;设定为软件启动定时器,取GATE=0GATE=0。TMODTMOD低低4 4位与位与T1T1无关,一般都取无关,一般都取0 0

23、,所以,所以TMODTMOD的控制字为的控制字为10H10H。解:根据题意,解:根据题意,T1T1的定时时间的定时时间T=80msT=80ms。(2 2)计算定时初值。)计算定时初值。 晶振频率晶振频率 为为6MHz6MHz,机器周期,机器周期 定时初值定时初值 =65536-40000=25536=0110001111000000B =65536-40000=25536=0110001111000000B =63C0H=63C0H第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器(3 3)程序设计)程序设计 1、流程图第第六六章章 M MC CS S

24、- -5 51 1单单片片机机定定时时器器/ /计计数数器器2 2、源程序、源程序 ORG 100HORG 100HSTARTSTART: MOV R0MOV R0,#08H#08H;设左移;设左移8 8次次 MOV A MOV A,#11111110B#11111110B;开始点亮灯;开始点亮灯P1.0P1.0LOOPLOOP: MOV P1MOV P1,A A ;送;送P1P1口输出口输出 ACALL DELAY ACALL DELAY ;调用延时子程序;调用延时子程序 RL RLA A ;累加器循环左移;累加器循环左移1 1位位 DJNZ DJNZR0R0,LOOP LOOP ;判断移动

25、次数;判断移动次数 JMP JMPSTART START ;返回,循环执行;返回,循环执行DELAYDELAY: MOVMOVTMODTMOD,#00010000B #00010000B ;设定;设定T1T1工作在方式工作在方式1 1 SETB TR1 SETB TR1 ;启动;启动T1T1开始计时开始计时 MOV MOVTL1TL1,#0C0H#0C0H;装入低位;装入低位 MOV MOVTH1TH1,#63H#63H;装入高位;装入高位 JNBJNBTF1TF1,$ $;T1T1没有溢出没有溢出 CLRCLRTF1TF1;产生溢出,清除标志位;产生溢出,清除标志位 RET RET;子程序返

26、回;子程序返回 END END 第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器【例例6-4】设晶振频率为设晶振频率为 =6MHz,要求利用定时器,要求利用定时器T1,每隔,每隔5s将将P1.0取反一次。取反一次。解:因要求的定时时间解:因要求的定时时间5s5s已超出了定时器的定时能力,所以无已超出了定时器的定时能力,所以无法用定时器直接实现法用定时器直接实现5s5s的定时。可将定时器的定时时间设为的定时。可将定时器的定时时间设为100ms(16100ms(16位定时器的最长定时时间为位定时器的最长定时时间为131.072ms),131.072ms)

27、,在中断服务程在中断服务程序中对定时器溢出中断进行计数,当计数达序中对定时器溢出中断进行计数,当计数达5050次时,将次时,将P1.0P1.0取取反,否则直接返回主程序。反,否则直接返回主程序。(1 1)确定工作方式控制字)确定工作方式控制字设设T1T1为为1616位定时器,即位定时器,即 =0=0;工作方式;工作方式1 1,即,即 M1M0=01M1M0=01;设定为软;设定为软件启动定时器,即件启动定时器,即GATE=0GATE=0。所以所以TMODTMOD的控制字为的控制字为10H10H。(2 2)计算定时器)计算定时器T1T1初值初值X X。第第六六章章 M MC CS S- -5 5

28、1 1单单片片机机定定时时器器/ /计计数数器器(3 3)源程序:)源程序:ORG0000HLJMPMAIN;转主程序;转主程序ORG001BH;T1中断服务程序入口地址中断服务程序入口地址LJMPT0ISRORG0100HMAIN: MOVSP,#60H;设置堆栈指针;设置堆栈指针MOVTMOD,#10H;T1为定时模式,工作方式为定时模式,工作方式1MOVTL0,#0B0H;装入初值;装入初值MOVTH0,#3CHMOVA,#50;累加器置初值;累加器置初值50 SETBEA;CPU开中断开中断SETBET1;允许;允许T1中断中断SETBTR1;启动;启动T1计数计数SJMP$;等待;等

29、待T0ISR: MOVTL0,#0B0H;重新装入初值;重新装入初值MOVTH0,#3CHDEC A;累加器内容减;累加器内容减1JNZEXTCPLP1.0MOVA,#50;累加器重置初值;累加器重置初值EXT:RETIEND第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器6.3.3 方式方式2应用应用【例例6-5】使用使用T1的方式的方式2,晶振频率为,晶振频率为 =12MHz,以中断方式工,以中断方式工 作,在作,在P1.0引脚输出一个周期为引脚输出一个周期为100 的方波,试编写程序。的方波,试编写程序。解:根据题意,只要使解:根据题意,只要使

30、P1.0P1.0脚每隔脚每隔50us 50us 取反一次即可得到周期取反一次即可得到周期100 us100 us的方波,因而的方波,因而T0T0的定时时间的定时时间T=50us T=50us 。(1 1)设定)设定TMODTMOD(即控制字)。(即控制字)。 TMODTMOD的高的高4 4位控制定时器位控制定时器/ /计数器计数器1 1,设,设T1T1为定时模式,即为定时模式,即C/T=0C/T=0;工作方式;工作方式2 2,即,即 M1M0=10M1M0=10;设定为软件启动定时器,即;设定为软件启动定时器,即GATE=0GATE=0。TMODTMOD低低4 4位与位与T1T1无关,一般都取

31、无关,一般都取0 0,所以,所以TMODTMOD的控制字为的控制字为20H20H。(2 2)计算定时初值。)计算定时初值。 晶振频率晶振频率 为为12MHz12MHz,机器周期,机器周期 定时初值定时初值 =256-50=206=11001110B=0CEH=256-50=206=11001110B=0CEH第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器(3 3)源程序)源程序ORG0000H AJMPMAIN;转主程序;转主程序ORG001BH;T1中断矢量地址中断矢量地址AJMPISER;转中断服务程序;转中断服务程序ORG100HMAIN:

32、MOVSP,#60H;设堆栈指针;设堆栈指针MOVTMOD,#20H;写控制字;写控制字MOVTL1,#0CEH;置;置T1 初值初值MOVTH1,#0CEHSETBET0;允许;允许T0中断中断SETB EA;CPU开中断开中断SETBTR1;启动;启动T1SJMP$;等待中断;等待中断ISER: CPLP1.0;P1.0取反取反RETIEND第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器【例例6-6】使用定时器使用定时器/计数器计数器1的方式的方式2,晶振频率为,晶振频率为 =12MHz,以查询方式工作,在以查询方式工作,在P1.0引脚输出一个

33、周期为引脚输出一个周期为100 us的方波,试编写的方波,试编写程序。程序。解:根据题意,只要使解:根据题意,只要使P1.0脚每隔脚每隔50 us取反一次即可得到周取反一次即可得到周期期100us 的方波,因而的方波,因而T1的定时时间的定时时间T=50 us。(1 1)设定)设定TMODTMOD(即控制字)为(即控制字)为20H20H。(2 2)计算定时初值。)计算定时初值。 晶振频率晶振频率 为为12MHz12MHz,机器周期,机器周期 定时初值定时初值 =256-50=206=11001110B=0CEH=256-50=206=11001110B=0CEH(3 3)源程序)源程序ORG1

34、00HMOVTMOD,#20H;写控制字;写控制字,T1工作方式工作方式1MOVTL1,#0CEH;置;置T1 初值初值MOVTH1,#0CEHMOVIE,#00H;禁止中断;禁止中断 SETBTR1 ;启动;启动T1LOOP: JBCTF1,LOOP1;查询;查询TF1,有溢出转,有溢出转 LOOP1,并清并清TF1。SJMPLOOPLOOP1:CPLP1.0;P1.0取反取反SJMP LOOP第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器6.3.4 方式方式3应用应用 方式方式3 3只适于只适于T0T0,且,且T0T0处于方式处于方式3 3时,

35、时,T1T1只能工作在方式只能工作在方式0 0、方式方式1 1和方式和方式2 2。T0T0工作在方式工作在方式3 3时,被分为时,被分为TL0TL0和和TH0TH0两个独立的两个独立的8 8位定时器位定时器/ /计数器。其中,计数器。其中,TL0TL0既可作定时器,也可作计数器。既可作定时器,也可作计数器。TH0TH0只能作只能作8 8位的定时器。位的定时器。【例例6-76-7】使用定时器使用定时器/ /计数器计数器0 0的方式的方式3 3,晶振频率为,晶振频率为 =6MHz,以中断方式工作,在以中断方式工作,在P1.0P1.0引脚输出一个周期为引脚输出一个周期为400us 400us 的方波

36、,试的方波,试编写程序。编写程序。第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器解:根据题意,只要使解:根据题意,只要使P1.0P1.0脚每隔脚每隔200us 200us 取反一次即可得到周期取反一次即可得到周期400us 400us 的方波,因而的方波,因而T0T0的定时时间的定时时间T=200us T=200us 。(1 1)设定)设定TMODTMOD(即控制字)。(即控制字)。TMODTMOD的低的低4 4位控制定时器位控制定时器/ /计数器计数器0 0,设,设T0T0为定时模式,即为定时模式,即C/T=0C/T=0;工作方式工作方式3 3,

37、即,即 M1M0=11M1M0=11;设定为软件启动定时器,即;设定为软件启动定时器,即GATE=0GATE=0。TMODTMOD高高4 4位与位与T0T0无关,一般都取无关,一般都取0 0,所以,所以TMODTMOD的控制字为的控制字为03H03H。(2 2)计算定时初值。)计算定时初值。 晶振频率晶振频率 为为6MHz6MHz,机器周期,机器周期 定时初值定时初值 =256-100=156=10011100B=9CH=256-100=156=10011100B=9CH第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器3 3)源程序)源程序1 1使用

38、使用TL0TL0 ORG ORG0000H0000H AJMPAJMPMAINMAIN;转主程序;转主程序ORGORG000BH000BH;T0T0中断矢量地址中断矢量地址AJMPAJMPISERISER;转中断服务程序;转中断服务程序ORGORG100H100HMAINMAIN:MOVMOVSPSP,#60H#60H;设堆栈指针;设堆栈指针MOVMOVTMODTMOD,#03H#03H;写控制字;写控制字MOVMOVTL0TL0,#9CH#9CH;置;置TL0 TL0 初值初值SETBSETBET0ET0;允许;允许T0T0中断中断SETB SETB EAEA;CPUCPU开中断开中断SET

39、BSETBTR0TR0;启动;启动TL0TL0SJMPSJMP$ $;等待中断;等待中断ISERISER:MOVMOVTL0TL0,#9CH#9CH;T0T0中断服务子程序,重置中断服务子程序,重置 T0 T0 初值初值CPLCPLP1.0P1.0;P1.0P1.0取反取反RETIRETIENDEND第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器2 2使用使用TH0TH0 ORGORG0000H0000H AJMPAJMPMAINMAIN;转主程序;转主程序ORGORG001BH001BH;T1T1中断矢量地址中断矢量地址AJMPAJMPISERI

40、SER;转中断服务程序;转中断服务程序ORGORG100H100HMAINMAIN:MOVMOVSPSP,#60H#60H;设堆栈指针;设堆栈指针MOVMOVTMODTMOD,#03H#03H;写控制字;写控制字MOVMOVTH0TH0,#9CH#9CH;置;置TH0 TH0 初值初值SETBSETBET1ET1;允许允许T1T1中断中断SETB SETB EAEA;CPUCPU开中断开中断SETBSETBTR1 TR1 ;启动启动TH0TH0SJMPSJMP$ $;等待中断;等待中断ISERISER:MOVMOVTH0TH0,#9CH#9CH;T0T0中断服务子程序,重置中断服务子程序,重置

41、 TH0 TH0 初值初值CPLCPLP1.0P1.0;P1.0P1.0取反取反RETIRETIENDEND第第六六章章 M MC CS S- -5 51 1单单片片机机定定时时器器/ /计计数数器器本章小结本章小结 MCS-51MCS-51单片机有两个定时器单片机有两个定时器/ /计数器,定时器采用的是对计数器,定时器采用的是对内部脉冲进行计数,计数器采用的是对外部脉冲进行计数。内部脉冲进行计数,计数器采用的是对外部脉冲进行计数。定时器的计数脉冲来自振荡信号的定时器的计数脉冲来自振荡信号的1212分频,即每过一个机器分频,即每过一个机器周期计数器加周期计数器加1 1,直至计数器溢出。计数器的

42、外部脉冲是从,直至计数器溢出。计数器的外部脉冲是从T0T0或或T1T1引脚输入的,外部脉冲的下降沿触发计数器计数,直至引脚输入的,外部脉冲的下降沿触发计数器计数,直至计数器溢出。通过对定时器计数器溢出。通过对定时器/ /计数器初值的设置,可以确定计计数器初值的设置,可以确定计数器的溢出时间,从而实现不同的定时时间。数器的溢出时间,从而实现不同的定时时间。 定时器定时器/ /计数器可实现定时控制、时间延时、脉冲计数、计数器可实现定时控制、时间延时、脉冲计数、频率测量、脉宽测量、信号发生等功能,在串行通信中,还频率测量、脉宽测量、信号发生等功能,在串行通信中,还可作为波特率发生器。可作为波特率发生

43、器。 MCS-51 MCS-51单片机的定时器单片机的定时器/ /计数器有两种工作模式和计数器有两种工作模式和4 4种工种工作方式,工作方式不同其最大计数值也不同。作方式,工作方式不同其最大计数值也不同。P1P2S1P2振荡周期时钟周期机器周期机器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2特殊功能寄存器SFR通用RAM区00H1FH20H2FH30H7FH80HFFH80H88H90H98HA0HA8HB0HB8HD0HE0HF0H特殊功能寄存器中位寻址外 部RAM(I/O口地

44、址)0000HFFFFH内部数据存储器(a)外部数据存储器(b)FFFFH外部ROM内部ROM(EA=1)外部ROM(EA=0)0000H0000H0FFFH0FFFH1000H程序存储器(c)工作寄存器区位寻址区128BRAM四、应用举例可编程器件在使用前需要进行初始化:确定TMOD控制字:编程时将控制字送TMOD;计算计数器的计数初值:编程时将计数初值送THi、TLi;开中断(如果使用中断方式):编程实置位EA、ETiTRi位置位控制定时器的启动和停止例题1:设晶振频率fOSC=6MHz,使用定时器1以方式1产生周期为500s的方波脉冲,并由P1.0输出。试以中断方式实现。8051P1.0

45、P1.0500s TMOD确定T1控制T0控制XXXX1000M0M1C/TGATEM0M1C/TGATE控制字10H 要产生500s 的方波脉冲,只需在P1.0端以250s为间隔,交替输出高低电平即可实现。为此,定时间应为250s 。使用6z晶振,则一个机器周期为2s,设待求计数初值为,则: 计算计数器的计数初值;(216X)210 -6 =25010 -6 即216X=125 X216-125=10000H-7DH 0FF83H所以,初值为: TH1=0FFH,TL1=83H 采用中断方式:编程时打开全局和局部中断。 由定时器控制寄存器TCON中的TR1位控制定时器的启动和停止。 TR11

46、,启动; TR10,停止。 程序设计 ORG 0000H LJMP MAIN ;主程序入口 ORG 001BH LJMP INTT1 ;T1中断入口INTT1: MOV TH1,#0FFH ;重新设置初值 MOV TL1,#83H CPL P1.0 ;输出取反 RETI ORG 1000HMAIN:MOV TMOD, #10H ;T1为方式1 MOV TH1, #0FFH MOV TL1,#83H ;初值 SETB EA ;允许中断 SETB ET1 SETB TR1 ;启动定时 SJMP $ ;等待中断主程序:中断处理程序:例题2:设晶振频率fOSC=6MHz,分别讨论各种工作方式下最长定时

47、时间。解:1.由fOSC=6MHz可知,MC=2us;2.由于是加1计数,所以最长定时应是计数初值最小时(即为0时)的定时时间。所以此时有:方式0: (2130)2us= 214us=16384us=16.384ms方式1: (2160)2us= 217us=131.072ms方式2、3 (280)2us= 29us=0.512ms注意:以上是当fOSC=6MHz,即MC=2us时各种方式下的定时时间,若fOSC=12MHz,则最长定时时间将缩短一半。五、定时计数器用作外部中断扩展、定时计数器用作外部中断扩展 在计数方式下,如果把计数器预置为全1,则只要在计数输入端(T0或T1输入端)加一脉冲

48、就可以使计数器溢出,产生溢出中断。这就是定时计数器实现外部中断扩展的思想。具体方法是: 置定时计数器为工作方式,即自动加载式位计数,以便在一次中断响应后,自动为下一次中断作准备; TH和TL均置为FFH; 扩展的外部中断请求信号接计数脉冲输入端(T0或T1); 把扩展的外中断服务程序存放在所占用的定时计数器中断入口地址处(000BH或001BH)。例:以T0 实现一个外部中断扩展。 则初始化程序为: MOV TMOD,#06H ;00000110 MOV TH0,#0FFH MOV TL0,#0FFH SETB EA ;开全局中断 SETB ET0 ;开T0中断 SETB TR0 ;准备计数将中断子程序放在T0中断入口处(000BH)。 T0计数器方式T0方式2

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号