第6章MCS51单片机定时器、计数器_第1页
第6章MCS51单片机定时器、计数器_第2页
第6章MCS51单片机定时器、计数器_第3页
第6章MCS51单片机定时器、计数器_第4页
第6章MCS51单片机定时器、计数器_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

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

2、个独立的8位计数器,即th0、tl0和th1、tl1,用于存储定时器/计数器的初值tmodtmod为方为方式控制寄式控制寄存器,用存器,用来设置定来设置定时器时器/ /计计数器的工数器的工作方式作方式tcontcon为控为控制寄存器,制寄存器,用来控制用来控制定时器定时器/ /计数器的计数器的启动与停启动与停止止mcs-51mcs-51系列单片机的系列单片机的5151子系列由两个子系列由两个1616位定时器位定时器t0t0、t1t1和两个寄和两个寄存器存器tcontcon、tmodtmod组成。组成。第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器6.1.2 6

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

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

5、来一个脉冲定时器/ /计数器就加计数器就加1 1,加,加满溢出后,再从新开始计数满溢出后,再从新开始计数, ,不同之处是输入的计数信号来源不同。不同之处是输入的计数信号来源不同。工作方式控制寄存器tmod t1控制t0控制m0m0m1m1c/tgatem0m0m1m1c/tgated0d1d2d3d4d5d6d7gate门控位c/t计数/定时选择m1 m0m1 m0工作方式选择m1m0工作方式工作方式功能描述功能描述00方式方式013位定时器位定时器/计数器计数器01方式方式116位定时器位定时器/计数器计数器10方式方式2自动重装初值的自动重装初值的8位定时器位定时器/计数器计数器11方式方

6、式3t0分为两个独立的分为两个独立的8位定时器位定时器/计数器;这时计数器;这时t1只能工作在方式只能工作在方式0、1、2,且不能用于中断。,且不能用于中断。6.2 6.2 定时器定时器/ /计数器控制及工作方式计数器控制及工作方式定时器控制寄存器tcond7d6d5d4d3d2d1d0tf1tr1tf0tr0ie1it1ie0it0中断请求标志触发方式选择启动定时/计数器0 低电平1 下降沿0 停止1 启动6.2 6.2 定时器定时器/ /计数器控制及工作方式计数器控制及工作方式字节地址为字节地址为88h,它可进行位寻址,位地址为,它可进行位寻址,位地址为8fh88h。第六章第六章 mcs-

7、51mcs-51单片机定时器单片机定时器/ /计数器计数器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 方式方式1 1

8、的计数位数是的计数位数是1616位,由位,由tl0tl0作为低作为低8 8位、位、th0th0作为高作为高8 8位,组成了位,组成了1616位加位加1 1计数器计数器 。16x=2 -n计数个数与计数初值的关系为:计数个数与计数初值的关系为: 三、方式三、方式2 2 方式方式2 2为自动重装初值的为自动重装初值的8 8位计数方式。位计数方式。计数个数与计数初值的关系为计数个数与计数初值的关系为:工作方式2特别适合于用作较精确的脉冲信号发生器。 8x=2 -n四、方式四、方式3 3 方式方式3 3只适用于定时只适用于定时/ /计数器计数器t0t0,定时器定时器t1t1处于方式处于方式3 3时相当

9、于时相当于tr1=0tr1=0,停止计数。,停止计数。工作方式工作方式3 3将将t0t0分成为两个独立的分成为两个独立的8 8位计数器位计数器tl0tl0和和th0th0 。第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器两个定时器两个定时器/ /计数器的设置和使用是不同的。计数器的设置和使用是不同的。(1 1)工作方式)工作方式3 3下的定时器下的定时器/ /计数器计数器0 0第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器图6-9 t0工作在方式3时t1为方式0图6-10 t0工作在方式3时t1为方式1图6-11 t0工作在方

10、式3时t1为方式2(2 2)工作方式)工作方式3 3下的定时器下的定时器/ /计数器计数器1 1第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器6.2.4 定时器定时器/计数器的初始化计数器的初始化1. 1. 定时器定时器/ /计数器的初始化设置计数器的初始化设置 定时器定时器/ /计数器是一种可编程部件,在使用定时器计数器是一种可编程部件,在使用定时器/ /计计数器时,需要先对其进行初始化,初始化步骤如下。数器时,需要先对其进行初始化,初始化步骤如下。1.1.确定工作模式和工作方式确定工作模式和工作方式,将方式控制字写入,将方式控制字写入tmodtmod寄存寄

11、存 器中。器中。2.2.预置定时或计数初值预置定时或计数初值,将计算出的定时或计数初始值装,将计算出的定时或计数初始值装 入入tl0tl0、th0th0或或tl1tl1、th1th1中。不同工作方式,其定时或计中。不同工作方式,其定时或计 数长度不一样,在定时或计数时不能超过其最大值。数长度不一样,在定时或计数时不能超过其最大值。3.3.开放定时器开放定时器/ /计数器的中断计数器的中断,即如果采用中断方式,要对,即如果采用中断方式,要对 ie ie中的相关位进行设置。中的相关位进行设置。4.4.启动定时器启动定时器/ /计数器工作计数器工作, , 使使tcontcon中的中的tr0tr0或或

12、tr1tr1位置位置1 1。第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器2定时器定时器/计数器初值的计算计数器初值的计算13m281921 3j2t13jx = 2-t /tjx = m -n16m2655361 6j2t16jx = 2-t /tjx = m -n8m22568j2t8jx = 2 -t /tjx = m -n 定时器定时器/ /计数器在不同工作方式时,定时初值或计数初值计数器在不同工作方式时,定时初值或计数初值的计算方法不同,最大定时时间和最大计数值也不同,在定时的计算方法不同,最大定时时间和最大计数值也不同,在定时或计数时不能超过其最大

13、值。或计数时不能超过其最大值。第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器6.3 6.3 定时器定时器/ /计数器的编程和应用计数器的编程和应用6.3.1方式方式0应用应用【例例6-16-1】使用定时器使用定时器/ /计数器计数器0 0的方式的方式0 0,晶振频率为,晶振频率为 = 6mhz= 6mhz,以,以中中 断方式工作,在断方式工作,在p1.0p1.0引脚输出一个周期为引脚输出一个周期为1ms1ms的方波,试编写程序。的方波,试编写程序。解:根据题意,只要使解:根据题意,只要使p1.0p1.0脚每隔脚每隔500500us 取反一次即可得到周期取反一次

14、即可得到周期1ms1ms的方波,因而的方波,因而t0t0的定时时间的定时时间t=500us t=500us 。(1 1)设定)设定tmodtmod(即控制字)。(即控制字)。tmod的低4位控制定时器/计数器0,设t0为定时模式,即 =0;工作在方式0,即 m1m0=00;设定为软件启动定时器,即gate=0。tmod高4位与t0无关,一般都取0,所以tmod的控制字为00h。(2 2)计算定时初值。)计算定时初值。 晶振频率晶振频率 为为6mhz6mhz,机器周期,机器周期 定时初值定时初值 =8192-250=7942=0001111100000110b=1f06h=8192-250=79

15、42=0001111100000110b=1f06h因因tl0tl0的高的高3 3位未用,对计算出的初值要进行修正,即在低位未用,对计算出的初值要进行修正,即在低5 5位前插位前插入入3 3个个0 0,修正后的定时初值,修正后的定时初值x=1111100000000110b=f806hx=1111100000000110b=f806h。socfsftoscj2106/12/126jttx/213tc /第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器(3 3)源程序清单)源程序清单orgorg0000h0000hajmpajmpmainmain;转主程序;转主程

16、序orgorg000bh000bh;t0t0中断矢量地址中断矢量地址ajmpajmpiseriser;转中断服务程序;转中断服务程序orgorg100h100hmainmain:movmovspsp,#60h#60h;设堆栈指针;设堆栈指针movmovtmodtmod,#00h#00h;写控制字;写控制字 mov movtl0tl0,#06h#06h;置;置t0 t0 初值初值movmovth0th0,#0f8h#0f8hsetbsetbet0et0;允许;允许t0t0中断中断setb setb eaea;cpucpu开中断开中断setbsetbtr0tr0;启动;启动t0t0sjmpsjmp

17、$ $;等待中断;等待中断iseriser:movmovtl0tl0,#06h#06h;t0t0中断服务子程序,重置中断服务子程序,重置t0 t0 初值初值movmovth0th0,#0f8h#0f8h;cplcplp1.0p1.0;p1.0p1.0取反取反retiretiendend第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器【例例6-26-2】使用定时器使用定时器/ /计数器计数器1 1的方式的方式0 0,晶振频率为,晶振频率为6mhz6mhz,以查询,以查询 方式工作,在方式工作,在p1.0p1.0引脚输出一个周期为引脚输出一个周期为2ms2ms的方波

18、,试编写程序。的方波,试编写程序。解:根据题意,只要使解:根据题意,只要使p1.0p1.0脚每隔脚每隔1ms1ms取反一次即可得到周取反一次即可得到周期期2ms2ms的方波,因而的方波,因而t1t1的定时时间的定时时间t=1mst=1ms。(1 1)设定)设定tmodtmod(即控制字)。(即控制字)。 tmod tmod的高的高4 4位控制定时器位控制定时器/ /计数器计数器1 1,设,设t1t1为定时模式,即为定时模式,即 = 0= 0;工作在方式;工作在方式0 0,即,即 m1m0=00m1m0=00;设定为软件启动定时;设定为软件启动定时器,即器,即gate=0gate=0。tmodt

19、mod低低4 4位与位与t1t1无关,一般都取无关,一般都取0 0,所以,所以tmodtmod的控制字为的控制字为00h00h。(2 2)计算定时初值。)计算定时初值。 晶振频率晶振频率 为为6mhz6mhz,机器周期,机器周期 定时初值定时初值 =8192-=8192-500=7692=1111000001100b=1e0ch500=7692=1111000001100b=1e0ch因因tl0tl0的高的高3 3位未用,对计算出的初值要进行修正,即在低位未用,对计算出的初值要进行修正,即在低5 5位前插入位前插入3 3个个0 0,修正后的定时初值,修正后的定时初值x=111100000000

20、1100b=f00chx=1111000000001100b=f00ch。socfsftoscj2106/12/126jttx/213tc/第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器(3 3)源程序清单)源程序清单orgorg100h100hmovmovtmodtmod,#00h#00h;写控制字;写控制字,t1,t1工作方式工作方式0 0movmovtl1tl1,#0ch#0ch;置;置t1 t1 初值初值movmovth1th1,#0f0h#0f0hloop:loop:setbsetbtr1 tr1 ;启动;启动t1t1loop1:loop1: jnb

21、jnbtf1tf1,loop1loop1;查询;查询tf1tf1,有无溢出,有无溢出clr tf1 ;有溢出清;有溢出清tf1movmovtl1tl1,#0ch#0ch;重置;重置t1 t1 初值初值movmovth1th1,#0f0h#0f0hcplcplp1.0p1.0;p1.0p1.0取反取反sjmpsjmplooploop第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器6.3.2 方式方式1应用应用方式方式1 1与方式与方式0 0基本相同,其差别只是计数长度不同。基本相同,其差别只是计数长度不同。【例例6-36-3】在单片机在单片机p1p1口连接口连接8

22、 8个发光二极管,如图个发光二极管,如图6-126-12所示。使用所示。使用t1t1工作方式工作方式1 1,晶振频率,晶振频率 = 6mhz= 6mhz,以查询方式工作,定时时间为,以查询方式工作,定时时间为80ms80ms,试编写程序,使图中试编写程序,使图中p1.0p1.0接的发光二极管先亮,延时接的发光二极管先亮,延时80ms80ms后,后,p1.1p1.1亮,亮,依次向左移动,当最左端依次向左移动,当最左端p1.7p1.7亮后又回到最右端重新开始向左移动,亮后又回到最右端重新开始向左移动,不断循环。不断循环。第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数

23、器(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,所以,所以tmodtmod的控制字为的控制字为10h10h。解:根据题意,解:根据题意,t1t1的定时时间的定时时间t=80mst=80ms。(2 2)计算定时初值。)计算定时初值。

24、 晶振频率晶振频率 为为6mhz6mhz,机器周期,机器周期 定时初值定时初值 =65536-40000=25536=0110001111000000b =65536-40000=25536=0110001111000000b =63c0h=63c0hsocfsftoscj2106/12/126jttx/216tc /第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器(3 3)程序设计)程序设计 1、流程图第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器2 2、源程序、源程序 org 100horg 100hstartstart:

25、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 ;判断移动次数;判断移动次数 jmp jmpstart start ;返回,循环执行;返回,循环执行delaydelay: movmovtmodtmo

26、d,#00010000b #00010000b ;设定;设定t1t1工作在方式工作在方式1 1 setb tr1 setb tr1 ;启动;启动t1t1开始计时开始计时 mov movtl1tl1,#0c0h#0c0h;装入低位;装入低位 mov movth1th1,#63h#63h;装入高位;装入高位 jnbjnbtf1tf1,$ $;t1t1没有溢出没有溢出 clrclrtf1tf1;产生溢出,清除标志位;产生溢出,清除标志位 ret ret;子程序返回;子程序返回 end end 第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器【例例6-4】设晶振频率为设

27、晶振频率为 =6mhz,要求利用定时器,要求利用定时器t1,每隔,每隔5s将将p1.0取反一次。取反一次。socf解:因要求的定时时间解:因要求的定时时间5s5s已超出了定时器的定时能力,所以无已超出了定时器的定时能力,所以无法用定时器直接实现法用定时器直接实现5s5s的定时。可将定时器的定时时间设为的定时。可将定时器的定时时间设为100ms(16100ms(16位定时器的最长定时时间为位定时器的最长定时时间为131.072ms),131.072ms),在中断服务程在中断服务程序中对定时器溢出中断进行计数,当计数达序中对定时器溢出中断进行计数,当计数达5050次时,将次时,将p1.0p1.0取

28、取反,否则直接返回主程序。反,否则直接返回主程序。(1 1)确定工作方式控制字)确定工作方式控制字设设t1t1为为1616位定时器,即位定时器,即 =0=0;工作方式;工作方式1 1,即,即 m1m0=01m1m0=01;设定为软;设定为软件启动定时器,即件启动定时器,即gate=0gate=0。所以所以tmodtmod的控制字为的控制字为10h10h。(2 2)计算定时器)计算定时器t1t1初值初值x x。第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器(3 3)源程序:)源程序:org0000hljmpmain;转主程序;转主程序org001bh;t1中断服

29、务程序入口地址中断服务程序入口地址ljmpt0isrorg0100hmain: movsp,#60h;设置堆栈指针;设置堆栈指针movtmod,#10h;t1为定时模式,工作方式为定时模式,工作方式1movtl0,#0b0h;装入初值;装入初值movth0,#3chmova,#50;累加器置初值;累加器置初值50 setbea;cpu开中断开中断setbet1;允许;允许t1中断中断setbtr1;启动;启动t1计数计数sjmp$;等待;等待t0isr: movtl0,#0b0h;重新装入初值;重新装入初值movth0,#3chdec a;累加器内容减;累加器内容减1jnzextcplp1.0

30、mova,#50;累加器重置初值;累加器重置初值ext:retiend第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器6.3.3 方式方式2应用应用【例例6-5】使用使用t1的方式的方式2,晶振频率为,晶振频率为 =12mhz,以中断方式工,以中断方式工 作,在作,在p1.0引脚输出一个周期为引脚输出一个周期为100 的方波,试编写程序。的方波,试编写程序。socfs解:根据题意,只要使解:根据题意,只要使p1.0p1.0脚每隔脚每隔50us 50us 取反一次即可得到周期取反一次即可得到周期100 us100 us的方波,因而的方波,因而t0t0的定时时间的定

31、时时间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无关,一般都取无关,一般都取0 0,所以,所以tmodtmod的控制字为的控制字为20h20h。(2 2)计算定时初值。)计算定时初值。 晶振频率晶振频率 为为12mhz12

32、mhz,机器周期,机器周期 定时初值定时初值 =256-50=206=11001110b=0ceh=256-50=206=11001110b=0cehsocfsftoscj11012/12/126jttx/28第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器(3 3)源程序)源程序org0000h ajmpmain;转主程序;转主程序org001bh;t1中断矢量地址中断矢量地址ajmpiser;转中断服务程序;转中断服务程序org100hmain: movsp,#60h;设堆栈指针;设堆栈指针movtmod,#20h;写控制字;写控制字movtl1,#0ceh

33、;置;置t1 初值初值movth1,#0cehsetbet0;允许;允许t0中断中断setb ea;cpu开中断开中断setbtr1;启动;启动t1sjmp$;等待中断;等待中断iser: cplp1.0;p1.0取反取反retiend第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器【例例6-6】使用定时器使用定时器/计数器计数器1的方式的方式2,晶振频率为,晶振频率为 =12mhz,以查询方式工作,在以查询方式工作,在p1.0引脚输出一个周期为引脚输出一个周期为100 us的方波,试编的方波,试编写程序。写程序。socf解:根据题意,只要使解:根据题意,只要使

34、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=0cehsocfsftoscj11012/12/126jttx/28(3 3)源程序)源程序org100hmovtmod,#20h;写控制字;写控制字,t1

35、工作方式工作方式1movtl1,#0ceh;置;置t1 初值初值movth1,#0cehmovie,#00h;禁止中断;禁止中断 setbtr1 ;启动;启动t1loop: jbctf1,loop1;查询;查询tf1,有溢出转,有溢出转 loop1,并清并清tf1。sjmplooploop1:cplp1.0;p1.0取反取反sjmp loop第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器6.3.4 方式方式3应用应用 方式方式3 3只适于只适于t0t0,且,且t0t0处于方式处于方式3 3时,时,t1t1只能工作在方式只能工作在方式0 0、方式方式1 1和方式

36、和方式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 的方波,试的方波,试编写程序。编写程序。socf第六章第六章 mcs-51

37、mcs-51单片机定时器单片机定时器/ /计数器计数器解:根据题意,只要使解:根据题意,只要使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,即,即 m1m0=11m1m0=11;设定为软件启动定时器,即;设定为软

38、件启动定时器,即gate=0gate=0。tmodtmod高高4 4位与位与t0t0无关,一般都取无关,一般都取0 0,所以,所以tmodtmod的控制字为的控制字为03h03h。(2 2)计算定时初值。)计算定时初值。 晶振频率晶振频率 为为6mhz6mhz,机器周期,机器周期 定时初值定时初值 =256-100=156=10011100b=9ch=256-100=156=10011100b=9chsocfsftoscj2106/12/126jttx/28第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器3 3)源程序)源程序1 1使用使用tl0tl0 org

39、org0000h0000h ajmpajmpmainmain;转主程序;转主程序orgorg000bh000bh;t0t0中断矢量地址中断矢量地址ajmpajmpiseriser;转中断服务程序;转中断服务程序orgorg100h100hmainmain:movmovspsp,#60h#60h;设堆栈指针;设堆栈指针movmovtmodtmod,#03h#03h;写控制字;写控制字movmovtl0tl0,#9ch#9ch;置;置tl0 tl0 初值初值setbsetbet0et0;允许;允许t0t0中断中断setb setb eaea;cpucpu开中断开中断setbsetbtr0tr0;启

40、动;启动tl0tl0sjmpsjmp$ $;等待中断;等待中断iseriser:movmovtl0tl0,#9ch#9ch;t0t0中断服务子程序,重置中断服务子程序,重置 t0 t0 初值初值cplcplp1.0p1.0;p1.0p1.0取反取反retiretiendend第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器2 2使用使用th0th0 orgorg0000h0000h ajmpajmpmainmain;转主程序;转主程序orgorg001bh001bh;t1t1中断矢量地址中断矢量地址ajmpajmpiseriser;转中断服务程序;转中断服务程序

41、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中断服务子程序,重置中断服务子程序,重置 th0 th0 初值初值cplcpl

42、p1.0p1.0;p1.0p1.0取反取反retiretiendend第六章第六章 mcs-51mcs-51单片机定时器单片机定时器/ /计数器计数器本章小结本章小结 mcs-51mcs-51单片机有两个定时器单片机有两个定时器/ /计数器,定时器采用的是计数器,定时器采用的是对内部脉冲进行计数,计数器采用的是对外部脉冲进行计数。对内部脉冲进行计数,计数器采用的是对外部脉冲进行计数。定时器的计数脉冲来自振荡信号的定时器的计数脉冲来自振荡信号的1212分频,即每过一个机器分频,即每过一个机器周期计数器加周期计数器加1 1,直至计数器溢出。计数器的外部脉冲是从,直至计数器溢出。计数器的外部脉冲是从

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

44、机的定时器/ /计数器有两种工作模式和计数器有两种工作模式和4 4种工种工作方式,工作方式不同其最大计数值也不同。作方式,工作方式不同其最大计数值也不同。p1p2s1p2振荡周期时钟周期机器周期机器周期指令周期xtal2(osc)s2s3s4s5s6s1s2s4s5s3s6p1p1p1p1p1p1p1p1p1p1p1p2p2p2p2p2p2p2p2p2p2特殊功能寄存器sfr通用ram区00h1fh20h2fh30h7fh80hffh80h88h90h98ha0ha8hb0hb8hd0he0hf0h特殊功能寄存器中位寻址外 部ram(i/o口地址)0000hffffh内部数据存储器(a)外部数据存储器(b)ffffh外部rom内部rom(ea=1)外部rom(ea=0)0000h00

温馨提示

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

评论

0/150

提交评论