版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机定时概念第1页,共47页,2022年,5月20日,2点46分,星期二上图为定时器结构框图80C51单片机内部有两个定时/计数器T0和T1,其核心是计数器,基本功能是加1(加1计数)。对外部事件脉冲(下降沿)计数,是计数器;对片内机器脉冲计数,是定时器。计数器由二个8位计数器组成。第2页,共47页,2022年,5月20日,2点46分,星期二 定时时间和计数值可以编程设定,其方法是在计数器内设置一个初值,然后加1计满后溢出。调整计数器初值,可调整从初值到计满溢出的数值,即调整了定时时间和计数值。 定时/计数器作为计数器时,外部事件脉冲必须从规定的引脚输入。 定时器均采用加一定时2、 定时/计
2、数器的控制寄存器TMOD:设定定时器/计数器T0、T1的工作模式和 工作方式。 TCON:控制T0、T1的启动和停止计数,同时包 含了T0、T1的状态,即各定时计数器是 否计数时间到(即是否需要服务)。第3页,共47页,2022年,5月20日,2点46分,星期二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页,
3、2022年,5月20日,2点46分,星期二2、 定时/计数器工作方式控制寄存器TMODTMOD用于设定定时/计数器的工作方式低4位用于控制T0,高4位用于控制T1。 M1M0 工作方式选择位第5页,共47页,2022年,5月20日,2点46分,星期二 C/T 计数/定时方式选择位 C/T=1,计数工作方式,对外部事件脉冲计数,用作计数器。 C/T=0,定时工作方式,对片内机周脉冲计数,用作定时器。 GATE 门控位,见下图 GATE=0,运行只受TCON中运行控制位TR0/TR1的控制。 GATE=1,运行同时受TR0/TR1和外中断输入信号的双重控制。 只有当INT0/INT1=1且TR0/
4、TR1=1,T0/T1才能运行。 当GATE=1且 TR0/TR1=1时,用做对INT0/INT1输入脉冲高 电平长度的测量TMOD字节地址89H,不能位操作,设置TMOD须用字节操作指令。 第6页,共47页,2022年,5月20日,2点46分,星期二3、 定时/计数器工作方式(1) 工作方式0 13位计数器,由TL0低5位和TH0 8位组成,TL0低5位计数满时不向TL0第6位进位,而是向TH0进位,13位计满溢出,TF0置“1”。最大计数值213 = 8192。所有工作方式0计数都可以用方式1代替,因此,方式0比较少用(2) 工作方式1:16位定时计数器 第7页,共47页,2022年,5月
5、20日,2点46分,星期二 THx/TLx赋初值:THx赋高8位,TLx赋低8位工作方式1 的编程要点: TMOD选方式: 写“M1,M0”=01 b 选方式1 若不用门控位,直接用软件写TRx控制启/停 若使用门控位,先置位TRx,然后由INTx端 的高/低电平来控制其启/停第8页,共47页,2022年,5月20日,2点46分,星期二 定时器(方式1)应用程序举例:分析:已知fosc = 6MHz 则: (振荡周期)1Tc=1/6MHz (机器周期)1Tm=12Tc=12/6MHz=2S 粗略地说:Tmin 2S 16位定时器最大数值为:216=65536=0FFFFH+1 故选择方式 1
6、工作可以得到: Tmax = 655362 = 131072S131.072mS若晶振频率为6MHz,计算单片机的最小与最大定时时间:第9页,共47页,2022年,5月20日,2点46分,星期二分析:已知fosc = 6MHz 则: (机器周期)1Tm=12Tc=12/6MHz=2S 100mS2 S = 50000 16位定时器最大数值为: 216 = 65536 (=0FFFFH+1) 故选择方式1工作可以满足要求。计算初值:6553650000=15536=3CB0H要求对T0产生100mS定时进行初始化。(晶振=6MHz)第10页,共47页,2022年,5月20日,2点46分,星期二G
7、ATE C / T M1 M0 GATE C / T M1 M0由分析得知:T0选择方式1,初值=3CB0H X X X X 0 0 0 1初始化:MOV TMOD,#01H ;选 T0 方式 1 MOV TH0, #3CH ;赋初值高8位 MOV TL0, #0B0H ;赋初值低8位 若需要定时器0产生中断还应当写如下语句: SETB ET0 ;开T0中断允许 SETB EA ;开总中断允许 SETB TR0 ;启动 T0定时以及相应的中断服务程序。第11页,共47页,2022年,5月20日,2点46分,星期二(3)工作方式2:8 位自动重装的定时/计数器 THx/TLx赋相同初值(X=0或
8、1) 在TLx计数达到0FFH 再加“1”时,TL0 将溢出, “TFx”位置1,提出中断请求并 使THx中的值自动重装(Copy)进TLx第12页,共47页,2022年,5月20日,2点46分,星期二 TMOD寄存器选方式: 写“M1,M0” = 10 b 选中方式2分析:fosc = 6MHz 1机器周期 = 2 S 1KHz方波周期 = 1 mS 半个方波周期 =500S 500uS2 uS = 250 若选择方式2 工作,8位定时器最大数值为: 28 =256 =0FFH + 1 可以满足要求。计算初值:256250=6从P1.0 脚输出频率=1KHz方波。设:晶振=6MHz。利用T1
9、定时中断。定时器(方式2)应用程序举例:第13页,共47页,2022年,5月20日,2点46分,星期二所以初始化程序为: MOV TMOD,#20H MOV TH0, #6 MOV TL0, #6 SETB ET1 SETB EA SETB TR1 第14页,共47页,2022年,5月20日,2点46分,星期二4、 定时/计数器的应用1、计算定时/计数初值80C51定时/计数初值计算公式:定时时间计数周期数机器周期长度 =(n初值N) f初值n(时间t f)其中: n与工作方式有关: 方式0时,n=13; 方式1时,n=16; 方式2、3时,n=8。机器周期与主振频率有关:机器周期=12/fo
10、sc,f=12MHZ时,1机周=1S; f=6MHZ 时,1机周=2S。 第15页,共47页,2022年,5月20日,2点46分,星期二【例1】 已知晶振6MHz,要求定时0.5ms,试分别求出T0工作于方式1、方式2时的定时初值。解: 工作方式1: T0初值 =216-500s/2s =65536250=65286=0FF06H TH0=0FFH;TL0=06H。 工作方式2: T0初值 =28-500s/2s=256-250=6 TH0=06H;TL0=06H。第16页,共47页,2022年,5月20日,2点46分,星期二定时器/计数器的编程和应用 采用中断的定时初始化过程: (1)设置中
11、断寄存器(tmod寄存器,开中断、优先级、启动计数),以及定时初值的写入。 (2)定时时间计数周期数机器周期长度 =(n初值N) f初值n(时间t f) (3)对于较长时间的定时,可以采用与循环程序相结合进行设计 采用中断方式,定时时间到在执行中断服务后返回的 时候会将tf0或tf1清零。第17页,共47页,2022年,5月20日,2点46分,星期二例5-1 假设系统时钟频率采用6MHz,要在P1.0上输出一个周期为2ms的方波,如图所示。第18页,共47页,2022年,5月20日,2点46分,星期二(1)计算初值X 设初值为X,则有: 延时时间为1ms,相当于500个机器周期长度,因此可以采
12、用方式1,计数初始值为 X = 216-500 = 65036 X化为16进制,即X=0FE0CH=11111110,00001100B。 所以,T0的初值为: TH0=0FEH TL0=0CH因此可以用定时器0,选择工作方式1,每定时中断一次,执行一次P1.0的取反操作。 由于方式1不能循环计数,因此,每执行一次中断还要重装初期进行计数。第19页,共47页,2022年,5月20日,2点46分,星期二(2)初始化程序设计:对寄存器IP、IE、TCON、TMOD的相应位进行正确设置,将计数初值送入定时器中。 (3)程序设计 ORG 0000HRESET: LJMP MAIN ;转主程序 ORG
13、000BH ;T0的中断入口 LJMP IT0P ;转T0中断处理程序IT0P ORG 0100HMAIN: MOV SP,#60H ;设堆栈指针 MOV TMOD,#01H ;设置T0为方式1 MOV TL0,#0CH;T0中断服务程序,T0重新置初值 MOV TH0,#0FEH SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 SETB TR0 ;启动T0 SJMP $第20页,共47页,2022年,5月20日,2点46分,星期二ITOP: MOV TL0,#0CH;T0中断服务子程序,T0置初值 MOV TH0,#0FEH CPL P1.0 ;P1.0的状态取反 RETI
14、 END第21页,共47页,2022年,5月20日,2点46分,星期二例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页,2022年,5月20日,2点46分,星期
15、二(3)10次计数的实现 采用循环程序法。(4) 参考程序 : ORG 0000HRESET: LJMP MAIN ;上电,转主程序入口MAIN ORG 000BH ;T0的中断入口 LJMP IT0P;转T0中断处理程序IT0P ORG 1000H MAIN: MOV SP,#60H ;设堆栈指针 MOV R1,#0AH ;设循环次数10次 MOV TMOD,#01H ;设T0工作在方式1 MOV TL0,#0B0H ;给T0设初值 MOV TH0,#3CH 第23页,共47页,2022年,5月20日,2点46分,星期二 SETB ET0 ;允许T0中断 SETB EA ;CPU开放中断 S
16、ETB TR0 ;启动T0 HERE: SJMP HERE ;等待中断 ITOP: MOV TL0,#0B0H ;T0中断子程序,重装初值 MOV TH0,#3CH ; DJNZ R1,LOOP CLR TR0 ;1s定时时间到,停止T0工作 LOOP: RETI 如要使P1口所接8盏等每秒左移跑动一位,应该怎么处理?第24页,共47页,2022年,5月20日,2点46分,星期二 查询方式的参考程序: 查询方式主要利用的是:当计数器定时时间到的时候会自动的把中断标志位TF1或TF0置为1,因此,启动定时后,只要评定对应的服务标志位TF0或TF1是否为1就可以判断是否定时时间到,即是否要开始执行
17、服务程序。5-1的查询方式的参考程序可以写为:第25页,共47页,2022年,5月20日,2点46分,星期二例5-1 假设系统时钟频率采用6MHz,要在P1.0上输出一个周期为2ms的方波,如图所示。第26页,共47页,2022年,5月20日,2点46分,星期二ORG 0000LJMP MAINORG 0100HMAIN: MOV TMOD,#01H ;设置T0为方式1 LOOP: MOV TH0,#0FEH ;T0置初值 MOV TL0,# 0CH SETB TR0 ;接通T0LOOP1:JNB TF0,LOOP1 ;查询TF0标志 CLR TF0 ; CPL P1.0 ;P1.0的状态求反
18、 SJMP LOOP第27页,共47页,2022年,5月20日,2点46分,星期二门控制位GATE的应用测量脉冲宽度GATE1可使定时器/计数器T1的启动计数受INT1*的控制,可测量引脚INT1或INT0引脚上正脉冲的宽度(机器周期数)。第28页,共47页,2022年,5月20日,2点46分,星期二如上图所示:测量引脚INT1(P3.3)上正脉冲的宽度。第29页,共47页,2022年,5月20日,2点46分,星期二参考程序: ORG 0000HRESET: AJMP MAIN ;复位入口转主程序 ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#90H ;T1为方式
19、1定时控制字 MOV TL1,#00H MOV TH1,#00H MOV R0,#30HLOOP0: JB P3.3,LOOP0;INT1*高,则循环 SETB TR1;如INT1*为低,启动T1LOOP1: JNB P3.3,LOOP1;INT1*低,则循环等待LOOP2: JB P3.3,LOOP2 ;INT1*高,则循环等待(两个等待的意义?)第30页,共47页,2022年,5月20日,2点46分,星期二 CLR TR1;停止T1计数 MOV R0,TL1;T1计数值送A INC R0 MOV R0,TH1;T1计数值送A SJMP $ END执行程序,使INT1*引脚上出现的正脉冲宽度
20、以机器周期数的形式存放在30H和31H单元。第31页,共47页,2022年,5月20日,2点46分,星期二例3、书本P125例题53测量高低电平持续时间ORG 0000HLJMP MAINORG 0100HMAIN:MOV TMOD,#10011001B;MOV TH1,#00HMOV TL1,#00HMOV TH0,#00HMOV TL0,#00H第32页,共47页,2022年,5月20日,2点46分,星期二 WAIT1:JB P3.2,$ SETB TR0 ;被测为低时开始计数,此时P3.2为高WAIT2:JNB P3.2,WAIT1;即被测信号为高电平,等待WAIT3:JB P3.2,W
21、AIT2 ;等待计数完成CLR TR0 ;计数完关闭T0,输入信号由低变为高电平SETB TR1;启动T1后t1开始工作WAIT3:JB P3.3 WAIT3;表示波形电平为高,继续计数CLR TR1;关T1MOV R0,#35HMOV R0,TL0INV R0MOV R0,TH0 ;T0用于保存低电平时间INC R0MOV R0,TL1INV R0MOV R0,TH1 ;T1用于保存高电平时间END第33页,共47页,2022年,5月20日,2点46分,星期二例6-3 当T0(P3.4)引脚上发生负跳变时,从P1.0引脚上输出一个周期为1ms的方波,如图所示。(系统时钟为6MHz)(1)工作
22、方式选择T0为方式1计数,初值 0FFFFH,即外部计数输入端T0(P3.4)发生一次负跳变时,T0加1且溢出,溢出标志TF0置“1”,发中断请求。说明T0脚已接收了负跳变信号。第34页,共47页,2022年,5月20日,2点46分,星期二T1定义为方式2定时。在T0脚发生一次负跳变后,启动T1每500s产生一次中断,在中断服务程序中对P1.0求反,使P1.0产生周期1ms的方波。注意方式2可以循环计数(2)计算T1初值设T1的初值为X: 因为 1MS=1000um=2250个机器周期 所以 X=28-250=6=06H T0的初值为:0ffffh(3)程序设计 ORG 0000H RESET
23、: LJMP MAIN ;复位入口转主程序 ORG 001BH LJMP IT1P ;转T1中断服务程序第35页,共47页,2022年,5月20日,2点46分,星期二MAIN: MOV TMOD,#00100101H ;初始化,T1为方式2定 时,T0为方式1计数 SETB EA SETB ET1 ;允许T1中断 MOV TL0,#0FFH ;T0置初值 MOV TH0,#0FFH MOV TL1,#06H ;T1置初值 MOV TH1,#06H SETB TR0 ;启动T0 JNB TF0,$ CLR TR0 SETB TR1 ;启动T1 HERE: AJMP HEREIT1P: CPL P
24、1.0;T1中断服务,P1.0位取反 RETI第36页,共47页,2022年,5月20日,2点46分,星期二实训题目:1、手动控制跑马灯的跑动(中断)org 0000hljmp mainorg 0003hljmp zd0main:setb easetb ex0setb it0mov ip,#00000001bmov a,#0fehmov p1,asjmp $zd0: rl a mov p1,aretiend第37页,共47页,2022年,5月20日,2点46分,星期二2、计程器的实现(中断)org 0000hljmp mainorg 0003hljmp zd0main:setb easetb
25、ex0setb it0mov ip,#00000001bmov a,#00hmov p1,asjmp $zd0:add a,#2 mov b,a cpl a mov p1,a mov a,b retiend第38页,共47页,2022年,5月20日,2点46分,星期二2、计程器的实现(中断)改:org 0000hljmp mainorg 0003hljmp zd0org 0013hljmp zd1org 0100hmain:setb easetb ex0setb ex1setb it0setb it1mov a,#00hmov p1,asjmp $zd0:add a,#2 mov b,a cp
26、l a mov p1,a mov a,b retizd1:mov a,#00h retiend第39页,共47页,2022年,5月20日,2点46分,星期二1、手动控制跑马灯的跑动(中断)改:org 0000hljmp mainorg 0003hljmp zd0main: setb easetb ex0setb it0mov ip,#00000001bmov r7,#08hmov a,#0fehmov p1,asjmp $zd0: rl a mov p1,a lcall delay djnz r7,zd0 mov r7,#08h retidelay:(1秒)end第40页,共47页,2022年
27、,5月20日,2点46分,星期二定时练习: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页,2022年,5月20日,2点46分,星期二8、内部30H单元内容为55h,定时30ms,否则定时15ms,进行初始化编程。ORG 0000HLJMP MAINORG 000BHLJMP IT0PORG 0100HMAIN:MOV TMOD,#000000
28、01B SETB EA SETB ET0 CJNE 30H,#55H,AA MOV DPTR,#NUM1 MOV TH0,DPH MOV TL0,DPL SETB TR0 SJMP $AA: MOV DPTR,#NUM2 MOV TH0,DPH MOV TL0,DPL SETB TR0 SJMP $IT0P: RETI END第42页,共47页,2022年,5月20日,2点46分,星期二9、利用T0通过P1.0输出一个矩形波,高电平为50um,低电平为300um。ORG 0000HLJMP MAINORG 000BHLJMP IT0PORG 0100HMAIN:MOV TMOD,#00000010B SETB EA SETB ET0 MOV T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗废物收集转运协管实施方案
- 数据中心液冷系统改造设计方案
- 数据中心建设工程实施方案
- 实验室临时用电安全培训课件
- 外墙防水方案
- 老旧管网机器人巡检项目可行性研究报告
- 校车驾驶员安全培训课件
- 冷链仓储建筑防火施工方案
- 烟气余热回收系统操作人员培训制度
- 老旧小区门禁系统更新项目可行性研究报告
- 2026年纪检监察业务模拟试题(含答案)
- 再喂养综合征的识别及护理进展
- 巨幼细胞性贫血诊疗专家共识(2025版)
- 2026年高考广西卷地理高考真题(试卷+解析)
- 国有企业意识形态工作责任制实施细则
- 2026-2027学年六年级上册数学期中核心考点必刷综合测试试卷
- 2026年心肺康复学习题库(含答案)
- 危化品安全5分钟(001-200期)
- 【低空经济】2026低空安全无人机反制系统建设方案
- 《感动中国》2025年度人物揭晓!附颁奖词+人物事迹+作文素材+范文
- DL-T 5220-2021《10kV及以下架空配电线路设计规范》
评论
0/150
提交评论