单片机定时器计数器ppt课件_第1页
单片机定时器计数器ppt课件_第2页
单片机定时器计数器ppt课件_第3页
单片机定时器计数器ppt课件_第4页
单片机定时器计数器ppt课件_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1、5.1 定时器的构造及任务原理5.2 定时器的TMOD和TCON存放器5.3 定时器的任务方式5.3.1 方式05.3.2 方式15.3.3 方式25.3.4 方式35.4 定时器的编程和运用根本知识根本知识定时器定时器/ /计数器简介计数器简介 1 1计数概念计数概念 同窗们选班长时,要投票,然后统计选票,同窗们选班长时,要投票,然后统计选票,常用的方法是画常用的方法是画“正,每个正,每个“正号五划,正号五划,代表五票,最后统计代表五票,最后统计“正号的个数即可,正号的个数即可,这就是计数。单片机有两个定时这就是计数。单片机有两个定时/ /计数器计数器T0T0和和T1T1,都可对外部输入脉冲

2、计数。,都可对外部输入脉冲计数。 2 2计数器的容量计数器的容量 我们用一个瓶子盛水,水一滴滴地滴我们用一个瓶子盛水,水一滴滴地滴入瓶中,水滴不断落下,瓶的容量是入瓶中,水滴不断落下,瓶的容量是有限的,过一段时间之后,水就会逐有限的,过一段时间之后,水就会逐渐变满,再滴就会溢出。单片机中的渐变满,再滴就会溢出。单片机中的计数器也一样,计数器也一样,T0T0和和T1T1这两个计数器这两个计数器分别是由两个分别是由两个8 8位的位的RAMRAM单元组成的,单元组成的,即每个计数器都是即每个计数器都是1616位的计数器,最位的计数器,最大的计数量是大的计数量是6553665536。 3. 3. 定时

3、定时一个钟表,秒针走一个钟表,秒针走6060次,就是次,就是1 1分钟,分钟,所以时间就转化为秒针走的次数,也就所以时间就转化为秒针走的次数,也就是计数的次数,可见,计数的次数和时是计数的次数,可见,计数的次数和时间有关。只需计数脉冲的间隔相等,那间有关。只需计数脉冲的间隔相等,那么计数值就代表了时间,即可实现定时。么计数值就代表了时间,即可实现定时。秒针每一次走动的时间是秒针每一次走动的时间是1 1秒,所以秒秒,所以秒针走针走6060次,就是次,就是6060秒,即秒,即1 1分钟。分钟。因此,单片机中的定时器和计数器是一因此,单片机中的定时器和计数器是一个东西,只不过计数器是记录的外界发个东

4、西,只不过计数器是记录的外界发生的事情,而定时器那么是由单片机提生的事情,而定时器那么是由单片机提供一个非常稳定的计数源。供一个非常稳定的计数源。 4. 4. 溢出溢出上面我们举的例子,水滴满瓶子后,上面我们举的例子,水滴满瓶子后,再滴就会溢出,流到桌面上。单片机再滴就会溢出,流到桌面上。单片机计数器溢出后将使得计数器溢出后将使得TF0TF0变为变为“1 1,一,一旦旦TF0TF0由由0 0变成变成1 1,就是产生了变化,就,就是产生了变化,就会引发事件,就会恳求中断。会引发事件,就会恳求中断。 5. 5. 恣意定时及计数的方法恣意定时及计数的方法计数器的容量是16位,也就是最大的计数值到65

5、536,计数计到65536就会产生溢出。假设计数值要小于65536,怎样办呢?一个空的瓶子,要1万滴水滴进去才会满,我们在开场滴水之前就先放入一些水,就不需求10000滴了。比如先放入2000滴,再滴8000滴就可以把瓶子滴满。在单片机中,我们也采用类似的方法,称为“预置数的方法,我们要计1000,那就先放进64536,再来1000个脉冲,不就到了65536了吗?定时也是如此。 6 6单片机定时器单片机定时器/ /计数器的构造计数器的构造组成:两个16位的定时器T0和T1,以及他们的任务方式存放器TMOD和控制存放器TCON等组成。内部经过总线与CPU相连。定时器T0和T1各由两个8位特殊功能

6、存放器TH0、TL0、TH1、TL1构成。任务方式存放器TMOD:用于设置定时器的任务方式和任务方式;控制存放器TCON:用于启动和停顿定时器的计数,并控制定时器的形状;单片机复位时,两个存放器的一切位都被清0。两个可编程的定时器/计数器T1、T0。每个定时器内部构造实践上就是一个可编程的加法计数器,由编程来设置它任务在定时形状还是计数形状。两种任务方式: (1) 计数器任务方式就是对外部事件进展计数。计数脉冲来自相应的外部输入引脚T0P3.4)或T1(P3.5)。当输入信号发生由1至0的负跳变(下降沿)时,计数器TH0,TL0或TH1,TL1的值增1。计数的最高频率普通为振荡频率的1/24。

7、Why?(2) 定时器任务方式也是经过计数实现的。计数脉冲来自内部时钟脉冲,每个机器周期计数值增1,每个机器周期=12个振荡周期,因此计数频率为振荡频率的1/12。所以定时时间=计数值机器周期。4种任务方式 (方式0-方式3) 。1C/T=当控制信号 定时器任务在定时方式;加1计数器对脉冲f进展计数,每来一个脉冲,计数器加1,直到计时器计满溢出; 由于 ,即一个计数脉冲的周期就是一个机器周期;计数器计数的是机器周期脉冲个数。从而实现定时。当控制信号 定时器任务在计数方式;加1计数器对来自输入引脚T0(P3.4)和T1(P3.5)的外信号脉冲进展计数,每来一个脉冲,计数器加1,直到计时器计满溢出

8、;Tx Tx THxTHxTFxTFxTLxTLxTRxTRxINTxINTx定时定时计数计数0f0/12ff 控制信号控制信号K K“1 1启动,计数器运转;启动,计数器运转;“0 0停顿,计数器停顿;停顿,计数器停顿;定时器定时器/ /计数器原理框图计数器原理框图加加1 1计数器计数器0/12ff0/12ff控制信号K可以控制计数器的“启动和“停顿,K = TRx(INTx+GATE) TCONTCON88H88H在每个机器周期的S5P2期间采样检测引脚输入电平。假设前一个机器周期采样值为“1,后一个机器周期采样值为“0,那么计数器加1。新的计数值在检测到输入引脚电平发生“1到“0的负跳变

9、下降沿后,于下一个机器周期的S3P1期间装入计数器中。由于CPU需求两个机器周期来识别一个“1到“0的跳变信号,所以最高的计数频率为振荡周期的1/24。P1P1 P2P2S1S1振荡周期振荡周期形状周期形状周期机器周期机器周期机器周期机器周期指令周期指令周期XTAL2XTAL2(OSC)(OSC)S2S2S3S3S4S4S5S5S6S6S1S1S2S2S4S4S5S5S3S3S6S6P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2定时/计数器对输入信号的要求外部计数脉

10、冲的最高频率为系统振荡器频率的1/24,例如选用12MHz频率的晶体,那么可输入500KHz的外部脉冲。输入信号的高、低电平至少要分别坚持一个机器周期。如下图,图中Tcy为机器周期。可编程定时器的任务方式、启动、停顿、溢出标志、计数器等都是可编程的经过设置存放器TMOD,TCON,TH0,TL0,TH1和TL1 实现。当设置了定时器的任务方式并启动定时器任务后,定时器就按被设定好的任务方式独立任务,不再占用CPU,只需在计数器计满溢出时才向CPU恳求中断,占用CPU。由此可见,定时器是单片机中任务效率高且运用灵敏的部件。8051单片机定时器主要有几个特殊功能存放器组成:TMOD,TCON,TH

11、0,TL0,TH1,TL1。TMOD:设置定时器的任务方式;TCON:控制定时器的启动和停顿;TH0和TL0 :存放定时器T0的初值或计数结果; TH0存放高8位,TL0 存放低8位;TH1和TL1 :存放定时器T1的初值或计数结果; TH1存放高8位,TL1 存放低8位;8位分为两组,高位分为两组,高4位控制位控制T1,低,低4位控制位控制T0。(1) GATE 门控位门控位 0: 以以TRX (X=0,1) 来启动定时器来启动定时器/计数器运转。计数器运转。1: 用外中断引脚用外中断引脚 (INT0*或或INT1*) 上的高电平上的高电平和和TRX来启来启动定时器动定时器/计数器运转。计数

12、器运转。(4)TMOD无位地址,不能位寻址。无位地址,不能位寻址。(5)复位时,复位时,TMOD一切位均为一切位均为“0。(3) C/T* 计数器方式和定时器方式选择位计数器方式和定时器方式选择位0: 定时器方式。定时器方式。 1: 计数器方式。计数器方式。(2) M1、M0 任务方式选择位任务方式选择位 M1 M0 工工 作作 方方 式式 0 0 方式方式0,13位定时器位定时器/计数器。计数器。 0 1 方式方式1,16位定时器位定时器/计数器。计数器。 1 0 方式方式2,8位常数自动重新装载位常数自动重新装载 1 1 方式方式3,仅适用于,仅适用于T0,低4位与外部中断有关,后面引见。

13、高4位的功能如下: (1) TF1、TF0 计数溢出标志位 定时器T0或T1计数溢出时,由硬件自动将此位置“1;TFx可以由程序查询,也是定时中断的恳求源;(2) TR1、TR0 计数运转控制位 TRx=1: 启动定时器/计数器任务 TRx=0: 停顿定时器/计数器任务 MCS-51单片机的定时器/计数器是可编程的,但在进展定时或计数之前要对程序进展初始化,详细步骤如下:1对TMOD赋值,以确定定时器的任务方式;2置定时/计数器初值,直接将初值写入存放器的TH0、TL0或TH1、TL1;3根据需求,对IE置初值,开放定时器中断;4对TCON存放器中的TR0或TR1置位,启动定时/计数器,置位以

14、后,计数器即按规定的任务方式和初值进展计数或开场定时。初值计算: 设计数器的最大值为M,那么置入的初值X为: 计数方式:X=M-计数值 定时方式:由(M-X)T=定时值,得X=M-定时值/T T为计数周期,是单片机的机器周期。方式0: M为213,方式1: M为216,方式2和3: M为28例如:机器周期为例如:机器周期为1s 1s 时,时, 假设任务在方式假设任务在方式0 0,那么最大定时值为,那么最大定时值为:213:2131s 1s =8.192ms=8.192ms 假设任务在方式假设任务在方式1,1,那么最大定时值为那么最大定时值为: : 216 2161s =65.536ms1s =

15、65.536msMCS-51的定时器T0有4种任务方式:即:方式0,方式1,方式2,方式3。MCS-51的定时器T1有3种任务方式:即:方式0,方式1,方式2。5.2.1 方式0 M1、M0设置为00 ,为13位计数器,以T1为例,其框图如下:计数脉冲输入加1计数器TH1 D12 D11 D10 D9 D8 D7 D6 D5TL1 D4 D3 D2 D1 D0n在这种方式下,在这种方式下,16位存放器位存放器TH1和和TL1只用只用13位,位,由由TH1的的8位和位和TL1的低的低5位组成。位组成。TL1的高的高3位不定。位不定。n当当TL1的低的低5位计数溢出时,向位计数溢出时,向TH1进位

16、。而进位。而TH1计计数溢出时,那么向中断标志位数溢出时,那么向中断标志位TF1进位即硬件将进位即硬件将TF1置置1,并恳求中断。,并恳求中断。n可经过查询可经过查询TF1能否置能否置“1或调查中断能否发生来断或调查中断能否发生来断定定时器定定时器T1的操作完成与否。的操作完成与否。当C/T=0时,为定时任务方式,开关接到振荡器的12分频器输出上,计数器对机器周期脉冲计数。其定时时间为:(213-初值)振荡周期12例如:假设晶振频率为12MHz,那么最长的定时时间为(213-0)(1/12)12us=8.191ms当C/T=1时,为计数任务方式,开关与外部引脚T1(P3.5)接通,计数器对来自

17、外部引脚的输入脉冲计数。当外部信号发生负跳变时计数器加1。GATE控制定时器Tx(T1或T0)的条件:(1) 当GATE=0时,“或门输出恒为1,“与门的输出信号K由TRx决议(即此时K=TRx),定时器不受INTx输入电平的影响,由TRx直接控制定时器的启动和停顿。TRx=1;计数启动;TRx=0;计数停顿;(2) 当GATE=1时, “与门的输出信号K由INTx输入电平和TRx位的形状一同决议(即此时K=TRxINTx),当且仅当TRx=1且INTx=1(高电平)时,计数启动;否那么,计数停顿。5.3.2 方式1 M1、M0=01,为16位的计数器,除位数外,其他与方式0一样。其定时时间为

18、:(216-初值)振荡周期12例如:假设晶振频率为12MHz,那么最长的定时时间为(216-0)(1/12)12us=65.536ms5.3.3 方式2 M1、M0=10 ,为自动恢复初值的8位计数器,等效框图如下: TLx作为8位计数器,THx作为重置初值的缓冲器。 THx作为常数缓冲器,当作为常数缓冲器,当TLx计数溢出时,在置计数溢出时,在置“1溢出标志溢出标志TFx的同时,还自动的将的同时,还自动的将THx中的初值送至中的初值送至TLx,使,使TLx从初值开场重从初值开场重新计数。定时器新计数。定时器/计数器的方式计数器的方式2任务过程如图任务过程如图 (x=0, 1) 。优点:方式0

19、和方式1用于循环反复定时或计数时,在每次计数器挤满溢出后,计数器复0。假设要进展新一轮的计数,就得重新装入计数初值。这样一来不仅呵斥编程费事,而且影响定时精度。而方式2具有初值自动装入的功能,防止了这个缺陷,可实现准确的定时。缺陷:只需8位计数器,定时时间短、计数范围小。其定时时间为: (28-初值)振荡周期12假设晶振频率为12MHz,那么最长的定时时间为(28-0)(1/12)12us=0.256ms方式方式2 2任务过程图任务过程图 (x=0, 1) (x=0, 1) 。5.3.4 方式3 只适用于定时器/计数器T0。T1不能任务在方式3。假设将T1置为方式3,那么相当于TR1=0,停顿

20、计数 (此时T1可用来作串行口波特率产生器) 。1. 任务方式3下的T0 T0在方式3时被拆成两个独立的8位计数器:TH0和TL0。8位计数器TL0运用T0的形状控制位C/T*、GATE、TR0、INT0,它既可以任务在定时方式,也可以任务在计数方式。8位定时器TH0被固定为一个8位定时器(不能作外部计数方式) ,并运用定时器T1的形状控制位TR1,同时占用定时器T1的中断恳求源TF1。此时,定时器TH0的启动或停顿只受TR1控制。TR1=1时,启动TH0的计数; TR1=0时,停顿TH0的计数各引脚与各引脚与T0T0的逻辑关系如下图的逻辑关系如下图: : 2. T0任务在方式3下T1的各种任

21、务方式 留意:当T0处于方式3时, T1仍可设置为方式0、方式1和方式2。当时由于TR1、TF1和T1的中断源都已被定时器T0(中的TH0)占用,所以定时器T1 仅有控制位C/T来决议其任务在定时方式或计数方式。当计数器计满溢出时,不能置位“TF1,而只能将输出送往串口。所以,此时定时器T1普通用作串口的波特率发生器,或不需求中断的场所。(1) T1任务在方式0编程阐明MCS-51单片机的定时器是可编程的,但在进展定时或计数之前要对程序进展初始化,详细步骤如下:1确定任务方式字:对TMOD存放器正确赋值;2确定定时初值:计算初值,直接将初值写入存放器的TH0、TL0或TH1、TL1;初值计算:

22、 设计数器的最大值为M,那么置入的初值X为: 计数方式:X=M-计数值 定时方式:由(M-X)T=定时值,得X=M-定时值/T T为计数周期,是单片机的机器周期。方式0 M为213,方式1 M为216,方式2和3 M为283根据需求,对IE置初值,开放定时器中断;4启动定时/计数器,对TCON存放器中的TR0或TR1置位,置位以后,计数器即按规定的任务方式和初值进展计数或开场定时。例5-1 要在P1.0上输出一个周期为2ms的方波,假设系统振荡频率采用12MHz。 利用T0方式0产生1ms的定时方波的周期用T0来确定,让T0每隔1ms计数溢出1次,即TF0=1;查询到TF0=1 那么CPU对P

23、1.0取反。即要使即要使P1.0P1.0每隔每隔1ms1ms取反取反一次。一次。第一步: 确定任务方式字 方式0 (13位)最长可定时 8.192ms; 方式1 (16位)最长可定时 65.536ms; 方式2 (8位)最长可定时 256s。T0为方式0, M1M0=00 定时任务形状, C/T=0GATE=0,不受INT0控制,T1不用全部取“0值。故TMOD=00H第二步: 计算1ms定时的初值X 设初值为X,那么有: (213-X) 1210-6 1/12=110-3可求得:X=8192-1000=7192X化为16进制,即X=1C18H=1,1100,000 1,1000B。所以,T0

24、的初值为: TH0=E0H TL0=18HTH0 1 1 1 0 0 0 0 0TL0 1 1 0 0 0第三步: 程序设计 采用查询TF0的形状来控制P1.0的输出,同时要重新装入初值。 参考程序: ORG 0100HMAIN:MOV TMOD, #00H;设置T0为方式0MOVTL0, #18H;送计数初值 MOVTH0, #0E0H;送计数初值SETB TR0 ;启动T0LOOP:JBC TF0,NEXT ;查询定时时间到,转NEXT,同时清TF0SJMPLOOP;反复循环NEXT:MOV TL0, #18H ;T0重置初值 MOV TH0, #0E0H ;T0重置初值 CPL P1.0

25、 ;P1.0的形状取反SJMPLOOP;反复循环END例5-2 将例5-1中的输出方波周期改为1秒。 分析: 周期为1s的方波要求500ms的定时。 (1) T0任务方式确实定因定时时间较长,采用哪一种任务方式?由各种任务方式的特性,可计算出: 方式0 (13位)最长可定时 8.192ms; 方式1 (16位)最长可定时 65.536ms; 方式2 (8位)最长可定时 256s。 所以采用定时器定时加软件计数的方法来实现延伸定时。选方式1,定时50ms,软件计数10次。50ms 10=500ms。 所以,TMOD=01H以上各方式以上各方式都不满足要求都不满足要求 (2) 计算计数初值由于:

26、(216-X)1210-6 1/12=5010-3所以: X=15536=3CB0H因此: TH0=3CH,TL0=B0H (3) 10次计数的实现设计一个软件计数器,初始值设为10。每隔50ms定时时间到,产生溢出标志TF0,程序查询到TF0=1,那么软件计数器减1。这样减到0时就获得了500ms的定时。(4) 程序设计参考程序 MAIN: MOV TMOD,#01H ;设T0任务在方式1MOV TL0, #0B0H ;给T0设初值MOV TH0,#3CHMOV R7, #10;软件计数器初值SETB TR0 ;启动T0LOOP:JBCTF0, NEXT;查询定时时间到,转NEXT,同时清T

27、F0SJMP LOOP NEXT: DJNZ R7,EXIT;R7不等于0,那么不对P1.0取反CPL P1.0MOV R7,#10;重置软件计数器初值EXIT:MOV TL0,#0B0H ;T0中断子程序,重装初值MOV TH0,#3CH SJMPLOOPEND 以上的定时程序中,程序都要重置计时器初值,这样从定时器溢出发出溢出标志,到重装完定时器初值,在开场计数,之间总会有一段时间间隔,使定时时间添加了假设干微秒,呵斥定时不够准确。为了减小这种定时误差,单片机中设置了任务方式2(自动重装初值),那么可防止上述要素,省去程序中重装初值的指令,实现准确定时。但是任务方式2的缺陷是只需8位计数器

28、,定时时间遭到很大限制。例5-3 利用T0方式2产生250us的定时,在P1.0引脚上输出周期为500us的方波(要求准确定时)。(设系统振荡为12MHz)(1) 任务方式选择实现准确定时,采用方式2。对于12MHz晶振,方式2的最大计数时间为28=256us, 所以可实现250us的准确定时。故,设置TMOD=02H。(2) 计算初值设初值为X: 那么 (28-X) 1210-61/12=25010-6 X=28-250=6=06H(3) 程序设计采用查询TF0的形状来控制P1.0的输出。(4) 参考程序MAIN: MOVTMOD, #02H ;置T0方式2MOVTH0,#06H ;送计数初

29、值MOVTL0,#06HSETB TR0 ;启动T0LOOP: JBC TF0,NEXT ;查询定时时间到,转NEXT,同时清TF0SJMP LOOPNEXT:CPL P1.0;输出取反SJMPLOOP;反复循环ENDGATE门可使定时器Tx(T0或T1)的启动计数受INTx*的控制,可丈量引脚INTx*(P3.2或P3.3) 上正脉冲的宽度(机器周期数) 。以T1为例:当当GATE=1GATE=1时,时,K=TRxINTxK=TRxINTxK K例5-4 利用T1门控位GATE测试INT1*(P3.3)引脚上出现的正脉冲的宽度。分析:根据设计要求,将T1设定为定时任务方式、方式1、GATE=

30、1;当TR1=1时,一旦INT1*(P3.3)引脚上出现高电平就开场计数,直到出现低电平为止。然后读取TH1、TL1中的计数值,分别送到存放器A和B中。由于T1任务在定时方式,计数器计数的是机器周期的脉冲数;将脉冲数转化成时间,就可得到正脉冲的宽度。ORG 0100HMAIN: MOV TMOD, #90H ;T1为方式1定时控制字MOV TL1, #00H;计数器初值为0MOV TH1, #00HLOOP: JB P3.3, LOOP;等待INT1*低SETB TR1;如INT1*为低,启动T1LOOP1: JNB P3.3, LOOP1;等待INT1*升高,开场计数LOOP2: JB P3

31、.3, LOOP2 ;等待INT1*降低,停顿计数CLR TR1;停顿T1计数MOV A, TL1;T1计数值的低8位送AMOV B, TH1;T1计数值的高8位送B由于定时器最长为16位计数器,因此被测脉冲高电平的宽度不能超越65536个机器周期。参考程序参考程序: :例5-5 当T0(P3.4) 引脚上发生负跳变时,从P1.0引脚上输出一个周期为1ms的方波,如下图。(系统振荡为6MHz) 两个计数器同时运用(1) 任务方式选择T0为方式1计数,初值 0FFFFH,即外部计数输入端T0(P3.4) 发生一次负跳变时,T0加1且溢出,溢出标志TF0置“1,发中断恳求。在进入T0中断程序后,把

32、F0标志置“1,阐明T0引脚上已接纳了负跳变信号。T1定义为方式2定时。在T0引脚产生一次负跳变后,启动T1每500s产生一次中断,在中断效力程序中对P1.0求反,使P1.0产生周期1ms的方波。TMOD=0010,0101=25H(2) 计算T1初值设T1的初值为X: 那么 (28-X) 210-6=510-4 X=28-250=6=06HMAIN: MOV TMOD, #25H ;初始化,T1为方式2定时,T0为方 式1计数MOV TL0, #0FFH ;T0置初值 MOV TH0, #0FFHSETB TR0 ;启动T0MOV TL1, #06H ;T1置初值MOV TH1, #06HL

33、OOP0: JBC TF0,NEXT0 ;查询T0有无负跳变,有那么转到NEXT0SJMP LOOP0NETX0:CPL P1.0;P1.0取反SETB TR1;启动T1LOOP1: JBC TF1,NEXT1 ;查询T1定时时间到否,到那么转到NEXT1SJMP LOOP1NEXT1:CPL P1.0;P1.0取反SJMP LOOP1END(3) (3) 程序设计程序设计T0 方式3时,TL0和TH0被分成两个独立的8位定时器/计数器。其中, TL0: 8位定时器/计数器; TH0: 8位定时器。当T1作串行口波特率发生器时,T0才设置为方式3。以上例题均采用查询的方法,这种方法很简单,但是

34、在定时器整个计数的过程中,CPU要不断地查询溢出标志TFx的形状,很难执行其他操作,占用了CPU的任务时间,使得CPU的任务效率不高。假设采用中断的方式来实现,可大大提高CPU的任务效率。例5-6 如下图:P1中接有八个发光二极管,编程使八个管轮番点亮,每个管亮100ms,设晶振为6MHz。分析 : 利用T1完成100ms的定时,当P1口线输出1时,发光二极管亮,每隔100ms,1左移一次。采用方式1定时,先计算计数初值: 6MHz晶体,机器周期 MC=2s 计数值: 100ms/2s =50000=C350H定时器初值:C350H补 =10000H-C350H=3CB0HM0M1GATEM0

35、M1GATEC/ TC/ TT1 方式1 :TMOD=10H ORG 00HMOV TMOD,#10H ;T1任务于定时方式1MOV A,#01H ;置初值,第一个LED亮NEXT:MOV P1,A MOV TH1,#3CH MOV TL1,#0B0H ; 定时100ms SETB TR1 AGAI: JBC TF1,SHI ; 100ms到转SHI,并清TF1SJMP AGAISHI: RL A SJMP NEXT 查询方式 ORG 0030H ;主程序MAIN:MOV A,#01H MOV P1,A ;置初值,第一个LED亮 MOV TMOD,#10H ;T1任务于定时方式1 MOV TH

36、1,#3CH MOV TL1,#0B0H ;定时100ms SETB EA ;中断总允许 SETB TR1 ;启动T1任务 SETB ET1 ;允许T1中断WAIT:SJMP WAIT ;等待中断 ORG 0000H AJMP MAIN ;单片机复位后从0000H开场执行 ORG 001BH ;T1中断入口 AJMP TIME1 ;转到T1 中断效力程序TIME1:RL A ;左移一位 MOV P1,A ;下一个发光二极管亮 MOV TH1,#3CH MOV TL1,#0B0H ;重装计数值 RETI ;中断前往以上程序执行结果,八个LED不断循环轮番点亮。例5-7 在P1.7端接一个发光二极管LED,要求利用定时控制使LED亮一秒灭一秒,周而复始,设fosc=6MHZ。89C51P1.7+5VLEDP1.0T11s分析:16位定时最大 65536

温馨提示

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

评论

0/150

提交评论