第四章16定时计数器T0作定时应用技术

合集下载

定时计数器的结构与工作原理

定时计数器的结构与工作原理

定时器方式寄存器TMOD (不能按位寻址)
注意 TMOD只能以字节方式进行初始化
T1
T0
定时器方式寄存器TMOD (不能按位寻址)
振荡器
Tx端 TRx位 GATE位 01 INTx端
12 C/T=0
C/T=1
10
1&
≥1 与门
或门
计数器
控制=1 开关接通
TFx
申请 中断
GATE门控位: Timer可由软件与硬件两者控制 ▼ GATE = 0 ——普通用法
单片机的定时/计数器 -定时/计数器的结构与工作原理
秒表计时器
家用定时器ຫໍສະໝຸດ 智能计数器智能排插 计时器
定时/计数器的结构
▼ 2个16位计数器T0 (TH0、TL0)和T1 (TH1、TL1)——加1计数器 ▼ 8位特殊功能寄存器TMOD——选择定时/计数器的工作模式和工作方式 ▼ 8位特殊功能寄存器TCON ——控制定时器的启动与停止 ▼ 2个外部引脚T0(P3.4)和T1(P3.5)——接入外部计数脉冲
Timer的启/停由软件对TRx位写“1”/“0”控制
▼ GATE = 1 ——门控用法 (很少用到) Timer的启/停由软件对TRx位写“1”/“0” 和在INTx引脚上出现的信号的高/低共同控制
小 结
▼定时/计数器的内部结构与工作原理 ▼定时器控制寄存器TCON ▼定时器方式寄存器TMOD
D7
D0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
▼ TFx: T0/T1计数溢出标志位。
=1 计数溢出; =0 计数未满 TFx标志位可用于申请中断或供CPU查询。
在进入中断服务程序时会自动清零; 但在查询方式时必须软件清零。

单片机定时器T0作定时应用技术

单片机定时器T0作定时应用技术

定时计数器T0作定时应用技术1.实验任务用AT89S51单片机的定时/计数器T0产生一秒的定时时间,作为秒计数时间,当一秒产生时,秒计数加1,秒计数到60时,自动从0开始。

硬件电路如下图所示2.电路原理图图3.系统板上硬件连线(1.把“单片机系统”区域中的-端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:对应着a,对应着b,……,对应着h。

(2.把“单片机系统”区域中的-端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:对应着a,对应着b,……,对应着h。

4.程序设计内容AT89S51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。

只要通过设置特殊功能寄存器TMOD,即可完成。

定时/计数器何时工作也是通过软件来设定TCON特殊功能寄存器来完成的。

现在我们选择16位定时工作方式,对于T0来说,最大定时也只有65536us,即,无法达到我们所需要的1秒的定时,因此,我们必须通过软件来处理这个问题,假设我们取T0的最大定时为50ms,即要定时1秒需要经过20次的50ms的定时。

对于这20次我们就可以采用软件的方法来统计了。

因此,我们设定TMOD=00000001B,即TMOD=01H下面我们要给T0定时/计数器的TH0,TL0装入预置初值,通过下面的公式可以计算出TH0=(216-50000)/256TL0=(216-50000)MOD256当T0在工作的时候,我们如何得知50ms的定时时间已到,这回我们通过检测TCON特殊功能寄存器中的TF0标志位,如果TF0=1表示定时时间已到。

5.程序框图6.汇编源程序(查询法)SECOND EQU 30HTCOUNT EQU 31HORG 00HSTART: MOV SECOND,#00HMOV TCOUNT,#00HMOV TMOD,#01HMOV TH0,#(65536-50000) / 256MOV TL0,#(65536-50000) MOD 256SETB TR0DISP: MOV A,SECONDMOV B,#10DIV ABMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,AMOV A,BMOVC A,@A+DPTRMOV P2,AWAIT: JNB TF0,WAITCLR TF0MOV TH0,#(65536-50000) / 256MOV TL0,#(65536-50000) MOD 256INC TCOUNTMOV A,TCOUNTCJNE A,#20,NEXTMOV TCOUNT,#00HINC SECONDMOV A,SECONDCJNE A,#60,NEXMOV SECOND,#00HNEX: LJMP DISPNEXT: LJMP WAITTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND7. C语言源程序(查询法)#include <A T89X51.H>unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsigned char second;unsigned char tcount;void main(void){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;tcount=0;second=0;P0=dispcode[second/10];P2=dispcode[second%10];while(1){if(TF0==1){tcount++;if(tcount==20){tcount=0;second++;if(second==60){second=0;}P0=dispcode[second/10];P2=dispcode[second%10];}TF0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;}}}1.汇编源程序(中断法)SECOND EQU 30HTCOUNT EQU 31HORG 00HLJMP STARTORG 0BHLJMP INT0XSTART: MOV SECOND,#00HMOV A,SECONDMOV B,#10DIV ABMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,AMOV A,BMOVC A,@A+DPTRMOV P2,AMOV TCOUNT,#00HMOV TMOD,#01HMOV TH0,#(65536-50000) / 256MOV TL0,#(65536-50000) MOD 256SETB TR0SETB ET0SETB EASJMP $INT0X:MOV TH0,#(65536-50000) / 256MOV TL0,#(65536-50000) MOD 256INC TCOUNTMOV A,TCOUNTCJNE A,#20,NEXTMOV TCOUNT,#00HINC SECONDMOV A,SECONDCJNE A,#60,NEXMOV SECOND,#00HNEX: MOV A,SECONDMOV B,#10DIV ABMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,AMOV A,BMOVC A,@A+DPTRMOV P2,ANEXT: RETITABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND2.C语言源程序(中断法)#include <A T89X51.H>unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsigned char second;unsigned char tcount;void main(void){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0=1;EA=1;tcount=0;second=0;P0=dispcode[second/10];P2=dispcode[second%10];while(1);}void t0(void) interrupt 1 using 0{tcount++;if(tcount==20){tcount=0;second++;if(second==60){second=0;}P0=dispcode[second/10];P2=dispcode[second%10];}TH0=(65536-50000)/256;TL0=(65536-50000)%256;}。

定时计数器

定时计数器
) (8位)
T1端 TR1 GATE l
≥l
TF1
中断
C/T=1 &
控制
INT1端
2.工作方式1 ( M1M0=01 ,16位定时器/计数器) 由TH1和TL1构成16位加1计数器,其他特性与工作 方式0相同。
振荡器 ÷12 C/T=0 TL1 (8位) T1端 TR1 GATE INT1端 l ≥l TH1 (8位)
第6章
定时/计数器
P132
定时/计数器的结构及工作原理 定时/计数器的工作方式 定时/计数器方式和控制寄存器 定时/计数器的编程举例
6.1 概述
在测量控制系统中,常需要有实时时钟和计数器,以实现 定时(或延时)控制以及对外界事件进行计数。 一、常用的定时(或延时)方法: 软件延时:利用执行一个循环程序进行时间延迟。其特点是 定时时间精确,不需外加硬件电路,但占用CPU时间。因此软 件定时的时间不宜过长。 硬件定时:利用硬件电路实现定时。其特点是不占用CPU时 间,通过改变电路元器件参数来调节定时,但使用不够灵活方 便。对于时间较长的定时,常用硬件电路来实现。 可编程定时器/计数器(硬件+软件):通过专用的定时器/ 计数器芯片实现。其特点是通过对系统时钟脉冲进行计数实 现定时,定时时间可通过程序设定的方法改变,使用灵活方 便。也可实现对外部脉冲的计数功能。
TL0,#83H P1.0 TH0,#06H P1.1
;送方式字 ;送时间常数 ;送时间常数 ;送控制宇 ;送中断控制字
;等待中断
;重装时间常数 ;控制方波倒相 ;重装时间常数 ;控制方波倒相
RETI DONE2: MOV CPL RETI
【*例3】试用T1方式2编制程序,在P1.0引脚输出周 期为400S的脉冲方波,已知fosc=12MHZ。

单片机原理与应用技能比赛模拟试题与答案(五)

单片机原理与应用技能比赛模拟试题与答案(五)

5、要想测量INT0 引脚上的一个正脉冲宽度,那么特殊功能寄存器TMOD的内容可以为( A )。

A 、09HB 、87HC 、00HD 、80H单片机原理及应用技能比赛模拟试题(五)6、使用定时器T1时,有几种工作方式( C )A 、1 种B 、2 种C 、3 种D 、4 种一、填空题7、8031 单片机的定时器T1 用作定时方式时是( B )。

1、当定时器T0 工作在方式 3 时,要占用定时器T1 的TR1 和TF1 两个控制位。

A、由内部时钟频率定时,一个时钟周期加 1 B 、由内部时钟频率定时,一个机器周期加 12、在定时器T0 工作方式 3 下,TH0溢出时,TF1 标志将被硬件置 1 去请求中断。

C、由外部时钟频率定时,一个时钟周期加 1 D 、由外部时钟频率定时,一个机器周期加 13、在定时器T0 工作方式 3 下,欲使TH0停止工作,应执行一条CLR TR1 的指令。

8、8031 单片机的定时器T0 用作计数方式时是( C )。

4、使用定时器/ 计数器 1 设置串行通信的波特率时,应把定时器/ 计数器 1 设定作方式 2A、由内部时钟频率定时,一个时钟周期加 1 B 、由内部时钟频率定时,一个机器周期加 1,即自动重新加载方式。

C、由外部计数脉冲计数,下降沿加 1 D 、由外部计数脉冲计数,一个机器周期加 15、当计数器产生计数溢出时,把定时器/ 计数器的TF0(TF1)位置“1”。

对计数溢出的处理,在中断方式时,9、8031 单片机的定时器T1 用作计数方式时计数脉冲是( A )。

该位作为中断标志位使用;在查询方式时,该位作状态位使用。

A、外部计数脉冲由T1(P3.5 )输入 B 、外部计数脉冲由内部时钟频率提供6、在定时器工作方式 1 下,计数器的宽度为16 位,如果系统晶振频率为6MHz,则最大定时时间C 、外部计数脉冲由T0(P3.4 )输入D 、由外部计数脉冲计数为131.072ms ,若系统晶振频率为12MHz,则最大定时时间为65.536ms 。

定时器t0 脉冲时间

定时器t0 脉冲时间

定时器t0 脉冲时间1. 什么是定时器t0?定时器t0是一种常见的计时器,用于测量时间间隔或控制定时任务的执行。

它通常由计算机系统中的硬件或软件实现,可以精确地计时并触发特定的操作。

定时器t0通常是一个计数器,它通过递增或递减计数值来跟踪经过的时间。

2. 脉冲时间的概念脉冲时间是指定时器t0产生的脉冲信号的时间间隔。

脉冲时间可以用来测量事件的持续时间或控制设备的操作。

脉冲时间通常以毫秒(ms)为单位表示,表示每个脉冲信号的持续时间。

3. 定时器t0的工作原理定时器t0的工作原理基于计数器的递增或递减操作。

通常,定时器t0会在启动时将计数器的初始值设置为0,并开始递增或递减计数值。

当计数器的值达到设定的阈值时,定时器t0会触发一个脉冲信号,并重置计数器的值。

定时器t0的计数速度通常由系统的时钟频率决定。

时钟频率越高,定时器t0的计数速度越快,脉冲时间的精确度也就越高。

定时器t0的计数速度可以通过设置预分频器来调整,预分频器可以将时钟频率分频为较低的频率。

4. 使用定时器t0测量时间间隔定时器t0可以用于测量两个事件之间的时间间隔。

具体操作如下:1.设置定时器t0的计数器初始值为0。

2.启动定时器t0开始计时。

3.让系统执行第一个事件。

4.当第一个事件完成时,停止定时器t0,记录当前计数器的值。

5.执行第二个事件。

6.当第二个事件完成时,再次停止定时器t0,记录当前计数器的值。

7.通过计算两次记录的计数器值之差,可以得到两个事件之间的时间间隔。

使用定时器t0测量时间间隔可以在很多应用中发挥重要作用,例如测量任务执行的时间、检测设备响应时间等。

5. 使用定时器t0控制定时任务定时器t0还可以用于控制定时任务的执行。

具体操作如下:1.设置定时器t0的计数器初始值为0。

2.设置定时器t0的阈值,即触发脉冲信号的计数器值。

3.启动定时器t0开始计时。

4.当计数器的值达到设定的阈值时,定时器t0触发一个脉冲信号。

单片机 第四章答案

单片机  第四章答案

LP1: JBC TF0 ,LP2
JB P3.2 , LP1
INC R0
;低电平到,停止定时器1,存储单元地址加1
SJMP LP0
;低电平到,停止定时器1 宽度
LP2: INC @R0
;存储溢出次数加1ms
MOV TH0,#0FCH ;定时1ms
MOV TL0,#18H SJMP LP1
INT1
INT1 为高时T1 开始计数
中断程序结构框架
20.利用定时/计数器T0从P1.0输出周期为1s,脉宽为20ms的正 脉冲信号,晶振频率为12MHz。试设计程序。参照【例4-6】
解:因方式2是8位计数器,其最大定时时间为:256×1 s = 256 s,为实现1 s延时,
可选择定时时间为200 s,再循环5000次。定时时间选定后,可确定计数值为200,则定
时器0的初值为:X = M 计数值=256 200 = 56 。采用定时器0,方式2工作,因此,
TMOD =02H。
ORG 0000H
MOV TMOD,#02H ;置定时器0为方式2
MOV TH1,#56
;置定时器初值
MOV TL1,#56
CLR P1.0 MAIN: MOV R5,#50
;置20 ms计数循环初值 1s
②计算定时500us初值:方式0:X = 213 - 500 = 7692 = 1E0CH
ORG START:MOV
CLR CLR MOV MOV MOV SETB LOOP: JNB CLR MOV MOV INC CJNE MOV CPL JNB CPL SJMP END
0000H TMOD, #00H
ORG 0000H
START:MOV TMOD, #02H;定时器T0工作方式2

单片机习题集及其规范标准答案12

单片机习题集及其规范标准答案12

习题一1.什么是单片机,和微机相比较,它有什么优点?2.请叙述51系列单片机的主要产品及其特点。

3.除51系列单片机外,常用的单片机还有哪些型号,各有什么优点?4.单片机中常用的数制有哪些,它们之间相互如何转换?5.计算机中常用的二进制编码有哪些,请分别予以叙述。

6.(1)10和(-1)10的原码、反码和补码分别是多少?习题二1.单片机主要应用在什么领域?2. 89C51单片机包含哪些主要逻辑功能部件? 各有什么主要功能?3.89C51单片机EA端如何使用?4.什么是机器周期、指令周期?89C51指令周期、机器周期和时钟周期的关系如何?当主频为12MHz时,一个机器周期等于多少微秒?执行一条最长的指令需多少微秒?5.如何认识89C51存储器空间在物理结构上可划分为四个空间,而在逻辑上又可划分为三个空间?各空间的寻址范围、寻址方式是什么?6.89C51有哪些主要的特殊功能寄存器,分布在哪里?7.内部RAM低128B从功能和用途方面,可划分为哪三个区域?8.89C51内部RAM有几组工作寄存器?每组工作寄存器有几个工作寄存器?寄存器组的选择由什么决定?9.89C51的外部RAM和I/O口是如何编址的,如何寻址?10.89C51的程序存储器的寻址空间是多少,如何区别片内程序存储器和片外程序存储器的?11.89C51的位寻址区在哪里,位寻址空间是多少?12.什么是堆栈,什么是SP,89C51的堆栈位于什么地方,复位后堆栈指针初值是多少,一般将SP设置为多少?进栈、出栈时堆栈指针将怎样变化?13.单片机包括哪两种复位方式,在单片机应用系统中为何需要系统复位,复位后主要寄存器的状态如何?14.89C51的P3口各引脚的第二功能是什么?15.89C51有几种低功耗方式,如何进入和退出?习题三1.什么是指令,什么是指令系统?2.89C51总共有多少条指令,分为哪几类?3.89C51有哪些寻址方式,各自的寻址空间如何?4.说明下列指令中源操作数采用的寻址方式。

定时计数器的工作原理

定时计数器的工作原理

定时计数器的工作原理定时计数器是一种常见的计时器,用于测量时间间隔,控制定时操作或执行循环等。

该计数器具有一定的精度和稳定性,其工作原理及应用场景也非常广泛。

下面我们将为大家介绍定时计数器的工作原理,包括硬件和软件实现。

硬件实现定时计数器通常由一个计数器和一个时钟源组成。

时钟源提供固定的时钟信号,计数器通过计数来测量时间间隔或执行定时操作。

时钟源通常是晶振,可以提供极高的稳定性和精度。

计数器可以是简单的二进制计数器,也可以是复杂的倒计数器和分频器等。

不同类型的计数器可以根据不同的应用场景进行选择。

在定时计数器的设计中,需要考虑到时钟信号的频率和计数器的位数。

时钟信号的频率决定了时间分辨率的大小,而计数器的位数则限制了计数器的最大值。

一个10位二进制计数器可以计数到1023,而一个16位二进制计数器可以计数到65535。

选取合适的时钟频率和计数器位数可以满足不同的应用要求。

定时计数器还可以通过外部信号触发计数器开始计数。

这种触发方式通常称为外部触发或同步触发,可以提高计数器的精度和控制性能。

在测试仪器中,可以通过外部触发控制测试时序,在控制系统中,可以通过外部触发控制执行任务。

在嵌入式系统中,定时计数器通常由软件实现。

软件实现的定时计数器主要依赖于系统时钟和定时中断。

系统时钟提供了一个固定的时钟信号,一般由晶振或外部时钟源提供。

定时中断是一个由硬件实现的中断,可以周期性地触发软件中断服务程序的执行。

定时计数器通过定时中断实现定时操作和时间测量。

每当定时中断发生时,中断服务程序会对定时计数器进行更新,并执行相应的定时操作。

在控制系统中,可以通过定时计数器实现周期性的任务执行,定时采样和控制输出等功能。

在嵌入式系统中,定时计数器还可以用于实现延时等操作。

1. 定时中断的触发频率:定时中断的触发频率决定了定时计数器的分辨率和响应速度。

合理的触发频率可以提高定时计数器的精度和控制性能。

2. 定时计数器的位数:定时计数器的位数决定了定时器的最大值和分辨率。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

16.定时计数器T0作定时应用技术(二)
1.实验任务
用AT89S51的定时/计数器T0产生2秒钟的定时,每当2秒定时到来时,更换指示灯闪烁,每个指示闪烁的频率为0.2秒,也就是说,开始L1指示灯以0.2秒的速率闪烁,当2秒定时到来之后,L2开始以0.2秒的速率闪烁,如此循环下去。

0.2秒的闪烁速率也由定时/计数器T0来完成。

2.电路原理图
图4.16.1
3.系统板硬件连线
(1.把“单片机系统”区域中的P1.0-P1.3用导线连接到“八路发光二极管指示模块”
区域中的L1-L4上
4.程序设计内容
(1.由于采用中断方式来完成,因此,对于中断源必须它的中断入口地址,对于定时/计数器T0来说,中断入口地址为000BH,因此在中断入口地方加入长
跳转指令来执行中断服务程序。

书写汇编源程序格式如下所示:
ORG00H
LJMP START
ORG0BH ;定时/计数器T0中断入口地址
LJMP INT_T0
START: NOP ;主程序开始
.
.
INT_T0: PUSH ACC ;定时/计数器T0中断服务程序
PUSH PSW
.
.
POP PSW
POP ACC
RETI ;中断服务程序返回
END
(2.定时2秒,采用16位定时50ms(计满为65.536MS),共定时40次才可达到2秒,每50ms产生一中断,定时的40次数在中断服务程序中完成,同样0.2
秒的定时,需要4次才可达到0.2秒。

对于中断程序,在主程序中要对中断开
中断。

(3.由于每次2秒定时到时,L1-L4要交替闪烁。

采用ID来号来识别。

当ID=0时,L1在闪烁,当ID=1时,L2在闪烁;当ID=2时,L3在闪烁;当ID=
3时,L4在闪烁
5.程序框图
T0中断服务程序框图
主程序框图
图4.16.2
6.汇编源程序
TCOUNT2S EQU 30H
TCNT02S EQU 31H
ID EQU 32H
ORG 00H
LJMP START
ORG 0BH
LJMP INT_T0
START: MOV TCOUNT2S,#00H
MOV TCNT02S,#00H
MOV ID,#00H
MOV TMOD,#01H; 使用计数方式一16位的定时器!
MOV TH0,#(65536-50000) / 256 置初值牵扯到二进制的除法
MOV TL0,#(65536-50000) MOD 256
SETB TR0;开启定时器
SETB ET0
SETB EA 开放所有中断
SJMP $
INT_T0: MOV TH0,#(65536-50000) / 256
MOV TL0,#(65536-50000) MOD 256
INC TCOUNT2S
MOV A,TCOUNT2S
CJNE A,#40,NEXT
MOV TCOUNT2S,#00H
INC ID
MOV A,ID
CJNE A,#04H,NEXT
MOV ID,#00H
NEXT: INC TCNT02S
MOV A,TCNT02S
CJNE A,#4,DONE
MOV TCNT02S,#00H
MOV A,ID
CJNE A,#00H,SID1
CPL P1.0
SJMP DONE
SID1: CJNE A,#01H,SID2
CPL P1.1
SJMP DONE
SID2: CJNE A,#02H,SID3
CPL P1.2
SJMP DONE
SID3: CJNE A,#03H,SID4
CPL P1.3
SID4: SJMP DONE
DONE: RETI
END
7.C语言源程序
#include <A T89X51.H>
unsigned char tcount2s;
unsigned char tcount02s;
unsigned char ID;
void main(void)
{
TMOD=0x01;
TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1;
ET0=1;
EA=1;
while(1);
}
void t0(void) interrupt 1 using 0 {
tcount2s++;
if(tcount2s==40)
{
tcount2s=0;
ID++;
if(ID==4)
{
ID=0;
}
}
tcount02s++;
if(tcount02s==4)
{
tcount02s=0;
switch(ID)
{
case 0:
P1_0=~P1_0;
break;
case 1:
P1_1=~P1_1;
break;
case 2:
P1_2=~P1_2;
break;
case 3:
P1_3=~P1_3;
break;
}
}
}。

相关文档
最新文档