![单片机定时概念_第1页](http://file4.renrendoc.com/view/2ebdc61159dcb35cc1f1c990d385b55f/2ebdc61159dcb35cc1f1c990d385b55f1.gif)
![单片机定时概念_第2页](http://file4.renrendoc.com/view/2ebdc61159dcb35cc1f1c990d385b55f/2ebdc61159dcb35cc1f1c990d385b55f2.gif)
![单片机定时概念_第3页](http://file4.renrendoc.com/view/2ebdc61159dcb35cc1f1c990d385b55f/2ebdc61159dcb35cc1f1c990d385b55f3.gif)
![单片机定时概念_第4页](http://file4.renrendoc.com/view/2ebdc61159dcb35cc1f1c990d385b55f/2ebdc61159dcb35cc1f1c990d385b55f4.gif)
![单片机定时概念_第5页](http://file4.renrendoc.com/view/2ebdc61159dcb35cc1f1c990d385b55f/2ebdc61159dcb35cc1f1c990d385b55f5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机定时概念第1页,共47页,2023年,2月20日,星期一上图为定时器结构框图80C51单片机内部有两个定时/计数器T0和T1,其核心是计数器,基本功能是加1(加1计数)。对外部事件脉冲(下降沿)计数,是计数器;对片内机器脉冲计数,是定时器。计数器由二个8位计数器组成。第2页,共47页,2023年,2月20日,星期一
定时时间和计数值可以编程设定,其方法是在计数器内设置一个初值,然后加1计满后溢出。调整计数器初值,可调整从初值到计满溢出的数值,即调整了定时时间和计数值。
定时/计数器作为计数器时,外部事件脉冲必须从规定的引脚输入。
定时器均采用加一定时2、定时/计数器的控制寄存器TMOD:设定定时器/计数器T0、T1的工作模式和工作方式。TCON:控制T0、T1的启动和停止计数,同时包含了T0、T1的状态,即各定时计数器是否计数时间到(即是否需要服务)。第3页,共47页,2023年,2月20日,星期一TCON低4位与外中断INT有关,已在中断中叙述。高4位与定时/计数器T0、T1有关。TF1:定时/计数器T1溢出标志。
TF0:定时/计数器T0溢出标志。TR1:定时/计数器T1运行控制位。
TR1=1,T1运行;TR1=0,T1停。
TR0:定时/计数器T0运行控制位。
TR0=1,T0运行;TR0=0,T0停。第4页,共47页,2023年,2月20日,星期一2、定时/计数器工作方式控制寄存器TMOD
TMOD用于设定定时/计数器的工作方式
低4位用于控制T0,高4位用于控制T1。
⑴M1M0——工作方式选择位第5页,共47页,2023年,2月20日,星期一⑵C/T——计数/定时方式选择位
C/T=1,计数工作方式,对外部事件脉冲计数,用作计数器。
C/T=0,定时工作方式,对片内机周脉冲计数,用作定时器。⑶GATE——门控位,见下图
GATE=0,运行只受TCON中运行控制位TR0/TR1的控制。
GATE=1,运行同时受TR0/TR1和外中断输入信号的双重控制。只有当INT0/INT1=1且TR0/TR1=1,T0/T1才能运行。
当GATE=1且TR0/TR1=1时,用做对INT0/INT1输入脉冲高电平长度的测量TMOD字节地址89H,不能位操作,设置TMOD须用字节操作指令。
第6页,共47页,2023年,2月20日,星期一3、定时/计数器工作方式
(1)工作方式0
13位计数器,由TL0低5位和TH08位组成,TL0低5位计数满时不向TL0第6位进位,而是向TH0进位,13位计满溢出,TF0置“1”。最大计数值213=8192。所有工作方式0计数都可以用方式1代替,因此,方式0比较少用(2)工作方式1:16位定时计数器第7页,共47页,2023年,2月20日,星期一
THx/TLx赋初值:THx赋高8位,TLx赋低8位工作方式1的编程要点:
TMOD选方式:写“M1,M0”=01b选方式1若不用门控位,直接用软件写TRx控制启/停若使用门控位,先置位TRx,然后由INTx端的高/低电平来控制其启/停第8页,共47页,2023年,2月20日,星期一
定时器(方式1)应用程序举例:分析:已知fosc
=6MHz则:(振荡周期)1Tc=1/6MHz
(机器周期)1Tm=12Tc=12/6MHz=2S
粗略地说:Tmin2S16位定时器最大数值为:216=65536=0FFFFH+1
故选择方式1工作可以得到:
Tmax=655362=131072S=131.072mS若晶振频率为6MHz,计算单片机的最小与最大定时时间:第9页,共47页,2023年,2月20日,星期一分析:已知fosc
=6MHz则:(机器周期)1Tm=12Tc=12/6MHz=2S100mS÷2S=5000016位定时器最大数值为:
216=65536(=0FFFFH+1)
故选择方式1工作可以满足要求。计算初值:65536-50000=15536=3CB0H要求对T0产生100mS定时进行初始化。(晶振=6MHz)第10页,共47页,2023年,2月20日,星期一GATEC/TM1M0GATEC/TM1M0由分析得知:T0选择方式1,初值=3CB0H
XXXX0001初始化:MOVTMOD,#01H;选T0方式1MOVTH0,#3CH;赋初值高8位
MOVTL0,#0B0H;赋初值低8位
若需要定时器0产生中断还应当写如下语句:
SETBET0;开T0中断允许
SETBEA;开总中断允许
SETBTR0;启动T0定时以及相应的中断服务程序。第11页,共47页,2023年,2月20日,星期一(3)工作方式2:——8位自动重装的定时/计数器☞THx/TLx赋相同初值(X=0或1)在TLx计数达到0FFH再加“1”时,TL0
将溢出,“TFx”位置1,提出中断请求并使THx中的值自动重装(Copy)进TLx第12页,共47页,2023年,2月20日,星期一☞TMOD寄存器选方式:
写“M1,M0”=10b选中方式2分析:fosc
=6MHz1机器周期=2S1KHz方波周期=1mS
半个方波周期=500S500uS÷2uS=250若选择方式2工作,8位定时器最大数值为:
28=256=0FFH+1可以满足要求。计算初值:256-250=6从P1.0脚输出频率=1KHz方波。设:晶振=6MHz。利用T1定时中断。定时器(方式2)应用程序举例:第13页,共47页,2023年,2月20日,星期一所以初始化程序为:
MOVTMOD,#20HMOVTH0,#6MOVTL0,#6SETBET1SETBEASETBTR1……第14页,共47页,2023年,2月20日,星期一4、定时/计数器的应用1、计算定时/计数初值80C51定时/计数初值计算公式:定时时间=计数周期数×机器周期长度
=(2n-初值N)×12/f初值N=2n-(时间t÷12/f)其中:n与工作方式有关:方式0时,n=13;方式1时,n=16;方式2、3时,n=8。机器周期与主振频率有关:机器周期=12/fosc,f=12MHZ时,1机周=1S;
f=6MHZ时,1机周=2S。第15页,共47页,2023年,2月20日,星期一【例1】已知晶振6MHz,要求定时0.5ms,试分别求出T0工作于方式1、方式2时的定时初值。解:⑵工作方式1:
T0初值=216-500s/2s=65536–250=65286=0FF06HTH0=0FFH;TL0=06H。⑶工作方式2:
T0初值=28-500s/2s=256-250=6TH0=06H;TL0=06H。第16页,共47页,2023年,2月20日,星期一定时器/计数器的编程和应用
采用中断的定时初始化过程:(1)设置中断寄存器(tmod寄存器,开中断、优先级、启动计数),以及定时初值的写入。(2)定时时间=计数周期数×机器周期长度
=(2n-初值N)×12/f初值N=2n-(时间t÷12/f)(3)对于较长时间的定时,可以采用与循环程序相结合进行设计●采用中断方式,定时时间到在执行中断服务后返回的
时候会将tf0或tf1清零。第17页,共47页,2023年,2月20日,星期一例5-1假设系统时钟频率采用6MHz,要在P1.0上输出一个周期为2ms的方波,如图所示。第18页,共47页,2023年,2月20日,星期一(1)计算初值X
设初值为X,则有:
延时时间为1ms,相当于500个机器周期长度,因此可以采用方式1,计数初始值为
X=216-500=65036X化为16进制,即X=0FE0CH=11111110,00001100B。所以,T0的初值为:
TH0=0FEHTL0=0CH因此可以用定时器0,选择工作方式1,每定时中断一次,执行一次P1.0的取反操作。
由于方式1不能循环计数,因此,每执行一次中断还要重装初期进行计数。第19页,共47页,2023年,2月20日,星期一(2)初始化程序设计:对寄存器IP、IE、TCON、TMOD的相应位进行正确设置,将计数初值送入定时器中。
(3)程序设计
ORG0000HRESET:LJMPMAIN;转主程序
ORG000BH
;T0的中断入口
LJMPIT0P ;转T0中断处理程序IT0P
ORG0100HMAIN:MOVSP,#60H;设堆栈指针
MOVTMOD,#01H ;设置T0为方式1MOVTL0,#0CH ;T0中断服务程序,T0重新置初值
MOVTH0,#0FEHSETBET0 ;允许T0中断
SETBEA;CPU开中断
SETBTR0 ;启动T0SJMP$第20页,共47页,2023年,2月20日,星期一ITOP:MOVTL0,#0CH;T0中断服务子程序,T0置初值
MOVTH0,#0FEHCPLP1.0;P1.0的状态取反
RETIEND第21页,共47页,2023年,2月20日,星期一例6-2
假设系统时钟为6MHz,编写定时器T0产生1秒定时的程序。
(1)T0工作方式的确定
定时时间较长,采用哪一种工作方式?
由各种工作方式的特性,可计算出:
方式0最长可定时16.384ms;
方式1最长可定时131.072ms;
方式2最长可定时512s。选方式1,每隔100ms中断一次,中断10次为1s。(2)计算计数初值因为:100ms=50000个机器周期所以:X=65536-50000=15536=3CB0H
因此:TH0=3CH,TL0=B0H第22页,共47页,2023年,2月20日,星期一(3)10次计数的实现
采用循环程序法。(4)参考程序:
ORG0000HRESET:LJMPMAIN ;上电,转主程序入口MAIN
ORG000BH
;T0的中断入口
LJMPIT0P ;转T0中断处理程序IT0P
ORG1000HMAIN:MOVSP,#60H ;设堆栈指针
MOVR1,#0AH;设循环次数10次
MOVTMOD,#01H;设T0工作在方式1MOVTL0,#0B0H;给T0设初值
MOVTH0,#3CH
第23页,共47页,2023年,2月20日,星期一SETBET0 ;允许T0中断
SETBEA;CPU开放中断
SETBTR0 ;启动T0HERE:SJMPHERE;等待中断
ITOP:MOVTL0,#0B0H;T0中断子程序,重装初值
MOVTH0,#3CH;
DJNZR1,LOOPCLRTR0;1s定时时间到,停止T0工作
LOOP:RETI如要使P1口所接8盏等每秒左移跑动一位,应该怎么处理?第24页,共47页,2023年,2月20日,星期一
查询方式的参考程序:
查询方式主要利用的是:当计数器定时时间到的时候会自动的把中断标志位TF1或TF0置为1,因此,启动定时后,只要评定对应的服务标志位TF0或TF1是否为1就可以判断是否定时时间到,即是否要开始执行服务程序。
5-1的查询方式的参考程序可以写为:第25页,共47页,2023年,2月20日,星期一例5-1假设系统时钟频率采用6MHz,要在P1.0上输出一个周期为2ms的方波,如图所示。第26页,共47页,2023年,2月20日,星期一ORG0000LJMPMAINORG0100HMAIN:MOVTMOD,#01H;设置T0为方式1
LOOP:MOVTH0,#0FEH;T0置初值
MOVTL0,#0CHSETBTR0;接通T0LOOP1:JNBTF0,LOOP1;查询TF0标志
CLRTF0 ;
CPLP1.0;P1.0的状态求反
SJMPLOOP第27页,共47页,2023年,2月20日,星期一门控制位GATE的应用—测量脉冲宽度GATE1可使定时器/计数器T1的启动计数受INT1*的控制,可测量引脚INT1或INT0引脚上正脉冲的宽度(机器周期数)。第28页,共47页,2023年,2月20日,星期一如上图所示:测量引脚INT1(P3.3)上正脉冲的宽度。第29页,共47页,2023年,2月20日,星期一参考程序:
ORG0000HRESET:AJMPMAIN;复位入口转主程序
ORG0100HMAIN:MOVSP,#60HMOVTMOD,#90H;T1为方式1定时控制字
MOVTL1,#00HMOVTH1,#00HMOVR0,#30HLOOP0:JBP3.3,LOOP0 ;INT1*高,则循环
SETBTR1 ;如INT1*为低,启动T1LOOP1:JNBP3.3,LOOP1
;INT1*低,则循环等待LOOP2:JBP3.3,LOOP2 ;INT1*高,则循环等待(两个等待的意义?)第30页,共47页,2023年,2月20日,星期一CLRTR1 ;停止T1计数
MOV@R0,TL1 ;T1计数值送AINCR0
MOV@R0,TH1 ;T1计数值送A
SJMP$END执行程序,使INT1*引脚上出现的正脉冲宽度以机器周期数的形式存放在30H和31H单元。第31页,共47页,2023年,2月20日,星期一例3、书本P125例题5-3测量高低电平持续时间ORG0000HLJMPMAINORG0100HMAIN:MOVTMOD,#10011001B;MOVTH1,#00HMOVTL1,#00HMOVTH0,#00HMOVTL0,#00H第32页,共47页,2023年,2月20日,星期一
WAIT1:JBP3.2,$SETBTR0;被测为低时开始计数,此时P3.2为高WAIT2:JNBP3.2,WAIT1;即被测信号为高电平,等待WAIT3:JBP3.2,WAIT2;等待计数完成CLRTR0;计数完关闭T0,输入信号由低变为高电平SETBTR1;启动T1后t1开始工作WAIT3:JBP3.3WAIT3;表示波形电平为高,继续计数CLRTR1;关T1MOVR0,#35HMOV@R0,TL0INVR0MOV@R0,TH0;T0用于保存低电平时间INCR0MOV@R0,TL1INVR0MOV@R0,TH1;T1用于保存高电平时间END第33页,共47页,2023年,2月20日,星期一例6-3
当T0(P3.4)引脚上发生负跳变时,从P1.0引脚上输出一个周期为1ms的方波,如图所示。(系统时钟为6MHz)(1)工作方式选择
T0为方式1计数,初值0FFFFH,即外部计数输入端T0(P3.4)发生一次负跳变时,T0加1且溢出,溢出标志TF0置“1”,发中断请求。说明T0脚已接收了负跳变信号。第34页,共47页,2023年,2月20日,星期一T1定义为方式2定时。在T0脚发生一次负跳变后,启动T1每500s产生一次中断,在中断服务程序中对P1.0求反,使P1.0产生周期1ms的方波。
注意方式2可以循环计数
(2)计算T1初值设T1的初值为X:因为1MS=1000um=2×250个机器周期所以X=28-250=6=06HT0的初值为:0ffffh(3)程序设计
ORG0000HRESET:LJMPMAIN;复位入口转主程序
ORG001BHLJMPIT1P;转T1中断服务程序第35页,共47页,2023年,2月20日,星期一MAIN:MOVTMOD,#00100101H;初始化,T1为方式2定时,T0为方式1计数SETBEASETBET1;允许T1中断MOVTL0,#0FFH;T0置初值
MOVTH0,#0FFH
MOVTL1,#06H;T1置初值
MOVTH1,#06H
SETBTR0 ;启动T0JNBTF0,$CLRTR0SETBTR1;启动T1HERE:AJMPHEREIT1P:CPLP1.0 ;T1中断服务,P1.0位取反
RETI第36页,共47页,2023年,2月20日,星期一实训题目:1、手动控制跑马灯的跑动(中断)org0000hljmpmainorg0003hljmpzd0main:setbeasetbex0setbit0movip,#00000001bmova,#0fehmovp1,asjmp$zd0:rlamovp1,aretiend第37页,共47页,2023年,2月20日,星期一2、计程器的实现(中断)org0000hljmpmainorg0003hljmpzd0main:setbeasetbex0setbit0movip,#00000001bmova,#00hmovp1,asjmp$zd0:adda,#2movb,acplamovp1,amova,bretiend第38页,共47页,2023年,2月20日,星期一2`、计程器的实现(中断)改:org0000hljmpmainorg0003hljmpzd0org0013hljmpzd1org0100hmain:setbeasetbex0setbex1setbit0setbit1mova,#00hmovp1,asjmp$zd0:adda,#2movb,acplamovp1,amova,bretizd1:mova,#00hretiend第39页,共47页,2023年,2月20日,星期一1`、手动控制跑马灯的跑动(中断)改:org0000hljmpmainorg0003hljmpzd0main:setbeasetbex0setbit0movip,#00000001bmovr7,#08hmova,#0fehmovp1,asjmp$zd0:rlamovp1,alcalldelaydjnzr7,zd0movr7,#08hretidelay:……(1秒)end第40页,共47页,2023年,2月20日,星期一定时练习:8、内部30H单元内容为55h,定时30ms,否则定时15ms,进行初始化编程。9、利用T0通过P1.0输出一个矩形波,高电平为50um,低电平为300um。10、用T1实现P1.0和P1.1分别输出周期为2ms和500us的方波。(定时1ms和250us,1ms看成4个250us)第41页,共47页,2023年,2月20日,星期一8、内部30H单元内容为55h,定时30ms,否则定时15ms,进行初始化编程。ORG0000HLJMPMAINORG000BHLJMPIT0PORG0100HMAIN:MOVTMOD,#00000001BSETBEASETBET0CJNE30H,#55H,AAMOVDPTR,#NUM1MOVTH0,DPHMOVTL0,DPLSETBTR0SJMP$AA:MOVDPTR,#NUM2MOVTH0,DPHMOVTL0,DPLSETBTR0SJMP$IT0P:…………RETIEND第42页,共47页,2023年,2月20日,星期一9、利用T0通过P1.0输出一个矩形波,高电平为50um,低电平为300um。ORG0000HLJMPMAINORG000BHLJMPIT0PORG0100HMAIN:MOVTMOD,#00000010BSETBEASETBET0MOVTH0,#231MOVTL0,#231SETBP1.0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023三年级语文下册 第一单元 2 燕子配套说课稿 新人教版
- 2024-2025学年高中语文 名著导读 莎士比亚戏剧说课稿 新人教版必修4
- 9古诗三首清明说课稿2023-2024学年统编版语文三年级下册
- Unit 4 Natural Disasters Reading for Writing 说课稿-2024-2025学年高中英语人教版(2019)必修第一册
- Unit 2 lconic Attractions Learning About Language (1)说课稿 2023-2024学年高中英语人教版选择性第四册
- 2025主体信用评级合同
- 2025吊顶劳务承包合同
- 19《夜宿山寺》(说课稿)2024-2025学年部编版语文二年级上册
- 2024-2025学年高中生物 第一章 人体的内环境与稳态 专题1.2 内环境稳态的重要性说课稿(基础版)新人教版必修3001
- 7《压岁钱的使用与思考》(说课稿)-2023-2024学年四年级下册综合实践活动长春版
- 杭州市房地产经纪服务合同
- 放射科护理常规
- 2024年大宗贸易合作共赢协议书模板
- 初中数学教学经验分享
- 新闻记者证600道考试题-附标准答案
- 2024年公开招聘人员报名资格审查表
- TSG ZF001-2006《安全阀安全技术监察规程》
- 长螺旋钻孔压灌桩工程劳务清包合同(范本)
- 中考语文二轮复习:记叙文阅读物象的作用(含练习题及答案)
- 老年外科患者围手术期营养支持中国专家共识(2024版)
- 子宫畸形的超声诊断
评论
0/150
提交评论