文档库 最新最全的文档下载
当前位置:文档库 › MCS-51单片机的定时器-计数器应该掌握的知识

MCS-51单片机的定时器-计数器应该掌握的知识

MCS-51单片机的定时器-计数器应该掌握的知识

MCS-51单片机的定时器/计数器应该掌握的知识

1.如果采用的晶振的频率为3MHz,/工作在方式0、1、2下,其最大

的定时时间各为多少?

2.定时器/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些

因素有关?

3.定时器/计数器作计数器模式使用时,对外界计数频率有何限制?

4.采用定时器/计数器TO对外部脉冲进行计数,每计数100个脉冲后,

T0转为定时工作方式。定时1ms后,又转为计数方式,如此循环不止。假定

的晶体振荡器的频率为6MHz,请使用方式1实现,要求编写出程序。

5.定时器/计数器的工作方式2有什么特点?适用于什么应用场合?

6.编写程序,要求使用T0,采用方式2定时,在P1.0输出周期为

400μs,占空比为10:1的矩形脉冲。

7.一个定时器的定时时间有限,如何实现两个定时器的串行定时,来实

现较长时间的定时?

8.当定时器T0用于方式3时,应该如何控制定时器T1的启动和关闭?

9.定时器/计数器测量某正单脉冲的宽度,采用何种方式可得到最大量程?若时钟频率为6MHz,求允许测量的最大脉冲宽度是多少?

10.编写一段程序,功能要求为:当P1.0引脚的电平上跳变时,对P1.1

的输入脉冲进行计数;当P1.2引脚的电平负跳变时,停止计数,并将计数值写

入R0、R1(高位存R1,低位存R0)。

11.THX与TLX(X=0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后的新值是立即刷新还是等当前计数器计满之后才能刷新?

12.判断下列说法是否正确?

定时器、计数器操作与应用实验报告

实验三 定时器、计数器操作与应用实验报告 、实验目的 1、 了解和熟悉FX 系列可编程序控制器的结构和外 部接线方法; 2、 了解 和熟 悉 GX Developer Version 7.0 软件的 使用 方法 ; 3、 掌握 可编 程序 控制器 梯形 图程 序的 编制 与调 试。 二、实验要求 仔 细阅 读实 验指 导书 中关 于编 程软 件的 说明 ,复习 教材 中有 关内 容 , 分 析程 序运 行结 果。 三、实验设备 2 、 开关 量输 入 / 输出 实验 箱 3、 计算 机 4、 编程 电缆 注 意: 1) 开关量输入/输出实验 箱内的钮子开关用来产生模拟的 开关量输入 信 号; 2) 开关量输入/输出实验箱内的LED 用来指示开关 量输出信号; 3) 编程电缆在连接PLC 与计算机时请注意方向。 四、实验内容 1 、梯形图 1 、 FX 系列可 编程 序控 制器 一只 一套 5、 GX Developer Version 7.0 软件 一套

2、梯形图程序 0LD xooo 1OUT YOOO X001 2LD 3OR¥001 4AN I X002 5OUT Y001 6OUT TO K50 9MPS 10AHI TO 11OUT Y002 12MPP 13ASD TO 14OUT¥003 15LD X003 16RST CO 18LD X004 19OUT CO K5 22LD CO 23OUT Y004 24END 3、时序图

r 时序10 □ ?Si 正在进荷囲1SL 金冃勖厂手祜r XI广X3厂X5厂K1Q拧应C 40 J2fl MIB -380 .360 '340 -33 MW 脚 M 创Q,220,200,13Q -1?-14D ,1如■!? 如也 40 如厂「 五、实验步骤 1、程序的编辑、检查和修改; 2、程序的变换; 3、程序的离线虚拟设备仿真测试; 4、程序写入PLC; 5、用PLC运行程序; 6、比较程序的分析结果与实际运行结果。 六、实验报告 1、实验梯形图程序的编写; 2、梯形图程序的理论分析与结果; 3、梯形图程序的实际运行结果; 4、结论。 七、实验心得 通过这样一次实验,我对GX Developer Version 7.0 软件的使用方 法更加的熟悉了,也了解到在实验中需要我们集中精力,仔细认真地完成■XDU "Tlr-.Ll-t-1!- D LJ D-IT--1 z?E I4J 一 — Ti ll IL — 」 ill-t-ll-r — 1

第5章习题解答

第5章思考题及习题5参考答案 一、填空 1.如果采用晶振的频率为3MHz,定时器/计数器T x(x=0,1)工作在方式0、1、2下,其方式0的最大定时时间为,方式1的最大定时时间为,方式2的最大定时时间为。 答:32.768ms,262.144ms,1024μs 2.定时器/计数器用作计数器模式时,外部输入的计数脉冲的最高频率为系统时钟频率的。 答:1/24 3.定时器/计数器用作定时器模式时,其计数脉冲由提供,定时时间与有关。 答:系统时钟信号12分频后,定时器初值 4.定时器/计数器T1测量某正单脉冲的宽度,采用方式可得到最大量程?若时钟频率为6MHz,求允许测量的最大脉冲宽度为。 答:方式1定时,131.072ms。 5. 定时器T2 有3种工作方式:、和,可通过对寄存器中的相关位进行软件设置来选择。 答:捕捉,重新装载(增计数或减计数),波特率发生器,T2CON 6. AT89S52单片机的晶振为6MHz,若利用定时器T1的方式1定时2ms,则(TH1)= ,(TL1)= 。 答:FCH,18H。 二、单选 1.定时器T0工作在方式3时,定时器T1有种工作方式。 A.1种 B.2种 C.3种D.4种 答:C 2. 定时器T0、T1工作于方式1时,其计数器为位。 A.8位 B.16位 C.14位 D.13位 答:B 3. 定时器T0、T1的GATE x=1时,其计数器是否计数的条件。

A. 仅取决于TR x状态 B. 仅取决于GATE位状态 C. 是由TR x和INT x两个条件来共同控制 D. 仅取决于INT x的状态 答:C 4. 定时器T2工作在自动重装载方式时,其计数器为位。 A.8位 B. 13位 C.14位 D. 16位 答:D 5. 要想测量INT0引脚上的正单脉冲的宽度,特殊功能寄存器TMOD的内容应为。 A.87H B. 09H C.80H D. 00H 答:B 三、判断对错 1.下列关于T0、T1的哪些说法是正确的。 A.特殊功能寄存器SCON,与定时器/计数器的控制无关。对 B.特殊功能寄存器TCON,与定时器/计数器的控制无关。错 C.特殊功能寄存器IE,与定时器/计数器的控制无关。错 D.特殊功能寄存器TMOD,与定时器/计数器的控制无关。错 2.定时器T0、T1对外部脉冲进行计数时,要求输入的计数脉冲的高电平或低电平的持 续时间不小于1个机器周期。特殊功能寄存器SCON与定时器/计数器的控制无关。错 3.定时器T0、T1对外部引脚上的脉冲进行计数时,要求输入的计数脉冲的高电平和低电平的持续时间均不小于2个机器周期。对 四、简答 1.定时器/计数器T1、T0的工作方式2有什么特点?适用于哪些应用场合? 答:方式2为初值自动装入的8位定时器/计数器,克服了在循环定时或循环计数应用时就存在用指令反复装入计数初值影响定时精度的问题。 2.TH x与TL x(x=0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后的新值是立即刷新还是等当前计数器计满后才能刷新? 答:THx与TLx(x = 0,1)是计数器,其内容可以随时用指令更改,但是更改后的新值要等当前计数器计满后才能刷新。 3.如果系统的晶振的频率为24MHz,定时器/计数器工作在方式0、1、2下,其最大定时时间各为多少? 答:晶振的频率为24MHz, 机器周期为0.5μs。

单片机定时器与计数器的工作方式解析

单片机定时器与计数器的工作方式解析 1 工作方式0 定时器/计数器的工作方式0称之为13位定时/计数方式。它由TL(1/0)的低5位和TH (0/1)的8位组成13位的计数器,此时TL(1/0)的高3位未用。 我们用这个图来讨论几个问题: M1M0:定时/计数器一共有四种工作方式,就是用M1M0来控制的,2位正好是四种组合。C/T:前面我们说过,定时/计数器即可作定时用也可用计数用,到底作什么用,由我们根据需要自行决定,也说是决定权在我们??编程者。如果C/T为0就是用作定时器(开关往上打),如果C/T为1就是用作计数器(开关往下打)。顺便提一下:一个定时/计数器同一时刻要么作定时用,要么作计数用,不能同时用的,这是个极普通的常识,几乎没有教材会提这一点,但很多开始学习者却会有此困惑。 GATE:看图,当我们选择了定时或计数工作方式后,定时/计数脉冲却不一定能到达计数器端,中间还有一个开关,显然这个开关不合上,计数脉冲就没法过去,那么开关什么时候过去呢?有两种情况 GATE=0,分析一下逻辑,GATE非后是1,进入或门,或门总是输出1,和或门的另一个输入端INT1无关,在这种情况下,开关的打开、合上只取决于TR1,只要TR1是1,开关就合上,计数脉冲得以畅通无阻,而如果TR1等于0则开关打开,计数脉冲无法通过,因此定时/计数是否工作,只取决于TR1。 GATE=1,在此种情况下,计数脉冲通路上的开关不仅要由TR1来控制,而且还要受到INT1管脚的控制,只有TR1为1,且INT1管脚也是高电平,开关才合上,计数脉冲才得以通过。这个特性能用来测量一个信号的高电平的宽度,想想看,怎么测? 为什么在这种模式下只用13位呢?干吗不用16位,这是为了和51机的前辈48系列兼容而设的一种工作式,如果你觉得用得不顺手,那就干脆用第二种工作方式。 2 工作方式1

第五章定时器/计数器

第五章MCS-51定时器/计数器及其应用 5.1定时方法概述 在单片机的应用中,可供选择的定时方法主要有: 1.软件定时 软件定时是靠执行一个循环程序以进行时间延迟。软件定时的特点是时间较精确,且不需外加硬件电路。但软件定时要占用CPU的时间,增加CPU开销,因此软件定时的时间不宜太长。 当单片机时钟确定后,每条指令的指令周期是确定的,在指令表中用振荡周期表示出来了。因此,根据程序执行所用的总的振荡周期数和振荡频率,可以较准确的计算,程序执行完所用的时间。软件延时是实际经常采用的一种短时间定时方法。 例4-16 ORG 1000H TIME:MOV R1, #0FAH ;12个振荡周期 L1 :MOV R0, #0FFH ;12个振荡周期 W1 :DJNZ R0 , W1 ;24个振荡周期 DJNZ R1 , L1 ;24个振荡周期 NOP ;12个振荡周期 NOP ;12个振荡周期 RET ;24个振荡周期 计算延时时间: N=12+(12+24×255+24)×250+12+12+24 =1539060个振荡周期 如果?=6MHz T?=1/?=1/6μs Tt=N×T?=1539060×1/6μS=256510μS=0.25651S 调整R 0和R 1 中的参数,可改变延时时间,如果需要加长延时间,可以增加循环嵌入。 当延时时间较长、不便多占用CPU时间的情况下,一般采用定时器方法。

2.内部可编程定时器 这种定时方法是通过对系统时钟脉冲的计数来实现的。计数值通过程序设定,改变计数值,也就改变了定时时间,使用起来既灵活又方便。此外,由于采用计数方法实现定时,因此可编程定时器都兼有计数功能,可以对外来脉冲进行计数。 3.外部扩展专用定时器 对于时间较长的定时,常使用外部扩展专用定时器完成。这种方法定时全部由硬件电路完成,不占用CPU时间。例如:DALLAS 公司的DS1302低功耗时钟芯片.它可以对年月日时分秒计时,并且有闰年补偿功能,它可以很方便地和单片机接口. 5.2 51单片机内部的定时器/计数器 作为基本组成内容,8051单片机共有两个可编程的定时器/计数器,分别称定时 器/计数器0和定时器/计数器1。它们都是十六位加法计数结构,分别由TH 0和TL 及TH 1和TL 1 两个8位计数器组成,它们具有计数和定时两种工作方式以及四种工作模 式。两个特殊功能寄存器(定时器控制寄存器TCON和定时器方式寄存器TMOD)用于确定定时器/计数器的功能和操作方式。图5-1给出了定时器/计数器的结构框图, 它反映了单片机中微处理器、寄存器TCON和TMOD与定时器T 0、T 1 之间的关系。计数 器的输入脉冲源可以是外部脉冲源或系统时钟振荡器,计数器对这两个输入脉冲之一进行递增计数。 顾名思义,MCS-51的每个定时器/计数器都具有定时和计数两种功能。

单片机实验之定时器计数器应用实验二

一、实验目的 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 三、电路原理图 六、实验总结 通过本实验弄清楚了定时/计数器计数功能的初始化设定(TMOD,初值的计算,被计数信号的输入点等等),掌握了查询和中断工作方式的应用。 七、思考题 1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对 P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。 答:程序见程序清单。

四、实验程序流程框图和程序清单。 1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态。 汇编程序: ORG 0000H START: LJMP MAIN ORG 0100H MAIN: MOV IE, #00H MOV TMOD, #60H MOV TH1, #9CH MOV TL1, #9CH SETB TR1 LOOP: JNB TF1, LOOP CLR TF1 CPL P1.0 AJMP LOOP END C语言程序: #include sbit Y=P1^0; void main() { EA=0; ET1=0; TMOD=0x60; TH1=0x9C; TL1=0x9C; while(1) { TR1=1; while(!TF1); TF1=0; Y=!Y; } } 开始 TMOD初始化 计数初值初始化 中断初始化 启动定时器 计数溢出 清计数溢出标志 Y N P1.0口线取反

单片机计数器与定时器的区别

单片机计数器与定时器的区别 在的学习过程中,我们经常会发现中断、串口是学习的难点,对于初学者来说,这几部分的内容很难理解。但是我个人觉得这几部分内容是的重点,如果在一个学期的课堂学习或者自学中没有理解这几部分内容,那就等于还没有掌握51单片机,那更谈不上单片机的开发了,我们都知道在成品的单片机项目中,有很多是以这几部分为理论基础的,万年历是以定时器为主的,报警器是以中断为主的,联机通讯是以串口为主的。 在这几部分内容中,计数器/定时器对于初学者说很容易搞混淆,下面我将对这方面的内容结合自己的学习经验谈几点看法。 计数器和定时器相同的,他们都是对单片机中产生的脉冲进行计数,只不过计数器是单片机外部触发的脉冲,定时器是单片机内部在晶振的触发下产生的脉冲。当他们的脉冲间隔相同的时候,计数器和定时器就是一个概念。 在定时器和计数器中都有一个溢出的概念,那什么是溢出了。我们可以从一个生活小常识得到答案,当一个碗放在水龙头下接水的时候,过了一会儿,碗的水满了,就发生溢出。同样的道理,假设水龙头的水是一滴滴的往碗里滴,那

么总有一滴水是导致碗中的水溢出的。在碗中溢出的水就浪费了,但是在单片机的中溢出将导致一次中断。 在定时器计数器中,我们有个概念叫容量,就是最大计数量。 把水滴比喻成脉冲,那么导致碗中水溢出的最后一滴水的就是定时计数器的溢出的最后一个脉冲。 在各种单片机书本中,在介绍定时计数器时都讲到一个计数初值,那什么是计数初值呢?在这里我们还是假设水滴碗。假设第一百滴水能够使碗中的水溢出,我们就知道这个碗的容量是100。 在这里计数初值有3个,假设: 根据所得的初始值,再将其转换为,就可以进行计数或者定时了。后面讲解定时器初值的。 单片机, 计数器, 定时器

单片机定时器详解

一、MCS-51单片机的定时器/计数器概念 单片机中的定时器和计数器其实是同一个物理的电子元件,只不过计数器记录的是单片机外部发生的事情(接受的是外部脉冲),而定时器则是由单片机自身提供的一个非常稳定的计数器,这个稳定的计数器就是单片机上连接的晶振部件;MCS-51单片机的晶振经过12分频之后提供给单片机的只有1MHZ的稳定脉冲;晶振的频率是非常准确的,所以单片机的计数脉冲之间的时间间隔也是非常准确的,这个准确的时间间隔是1微秒; MCS-51单片机外接的是12MHZ的晶振(实际上是11.0592MHZ),所以,MCS-51单片机内部的工作频率(时钟脉冲频率)是12MHZ/12=1MHZ=1000000次/秒=1000000条指令/秒=1000000次/1000000微秒=1次/微秒=1条指令/微秒;也就是说,晶振振荡一次,就会给单片机提供一个时钟脉冲,花费的时间是1微秒,此时,CPU会执行一条指令,经历一个机器周期;即:1个时钟脉冲=1个机器周期=1微秒=1条指令; 注:个人PC机上的CPU主频是晶振经过倍频之后的频率,这一点恰好与MCS-51单片机的相反,MCS-51单片机的主频是晶振经过分频之后的频率; 总之:MCS-51单片机中的时间概念就是通过计数脉冲的个数来测量出来的;1个脉冲=1微秒=1条指令=1个机器周期; MCS-51单片机定时器/计数器的简单结构图: 8051系列单片机有两个定时器:T0和T1,分别称为定时器和定时器T1,这两个定时器都是16位的定时器/计数器;8052系列单片机增加了第三个定时器/计数器T2;它们都有定时或事件计数功能,常用于时间控制、延时、对外部时间计数和检测等场合; 二、定时器/计数器的结构 8051单片机的两个定时器T0和T1分别都由两个特殊功能寄存器组成;T0由特殊功能寄存器

实验三定时器计数器应用实验一

定时器/计数器应用实验一 设计性试验 2012年11月14日星期三第三四节课 一、实验目的 1、掌握定时器/计数器定时功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,在P1.0口线上产生周期为200μS的连续方波,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,在P1.1口线上产生周期为240μS的连续方波,在P 1.1口线上接示波器观察波形。 三、电路原理图

四、实验程序流程框图和程序清单及实验结果 /********* 设计要求:(a)单片机的定时器/计数器以查询方式工作, 在P1.0口线上产生周期为200us的连续方波 编写:吕小洋 说明:用定时器1的方式1以查询方式工作 时间:2012年11月10日 ***************/ ORG 0000H 开始 系统初始化

START: LJMP MAIN ORG 0100H MAIN: MOV SP, #2FH CLR EA ;关总中断 CLR ET1 ;禁止定时器1中断 MOV TMOD, #00010000B ;设置定时器1为工作方式1 MOV TH1, #0FFH ;设置计数初值 MOV TL1, #9CH SETB TR1 ;启动定时器 LOOP: JNB TF1, LOOP ;查询计数是否溢出 MOV TH1, #0FFH ;重置计数初值 MOV TL1, #9CH CLR TF1 ;清除计数溢出标志 CPL P1.0 ;输出取反 LJMP LOOP ;重复取反 END

51单片机学习笔记(三)_定时器和计数器

51单片机学习笔记(三)_定时器和计数器 注:定时器与计数器原理与使用方法相似、此处计数器知识为基础普及、后 面详讲2 个定时器(寄存器)、定时器0、定时器1、(计数器0、计数器1) TMOD:定时器/计数器模式控制寄存器详见百度百科TMOD 每经过一个机器周期、寄存器+1TF:定时器溢出标志。溢出时自动置1。中 断时硬件清零否则必须软件清零。TR:定时器运行控制位。置1 开始计时、清 零停止计时。C/T:该位为0 时用作计时器、该位为1 时用作计数器。溢出时 时间-开始计时时间=预设定时时间 一个机器周期共有12 个振荡脉冲周期若设定时为0.02s,则: 12*(65535-X)/11059200=0.02s 定时器作加1 次数:X=47104=0xB800 次时间为0.02s 使用定时器的方法 1、设置特殊功能寄存器TMOD,使之工作在需求的状态。 2、设置计数寄存 器的初值,精确设定好定时时间。3、设置特殊功能寄存器TCON,通过打开 TR 来让定时器进行工作。 4、判断寄存器TCON 的FT0 位、检测定时器溢出情况。 假设我们使用定时器0、定时为0.02s,两个寄存器计时 TMOD=0x01; TMOD=0x01,指的是采用T0 方式,将M1 置0,M0 置1,是 方式一的定时器 高八位寄存器TH0=0xB8、低八位寄存器TL0=0x00 C 程序实现1s 钟定时 #include typedef unsigned char uint8;typedef unsigned int uint16;sbit led=P1;uint8 counter;void main(){TMOD=0x01;TH0=0xb8;TL0=0x00;TR0=1;

单片机实验-定时器计数器应用实验二

定时器/计数器应用实验二 一、实验目的和要求 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、实验内容或原理 1、利用单片机的定时器/计数器以查询方式计数外 部连续周期性矩形波并在单片机口线上产生某一 频率的连续周期性矩形波。 2、利用单片机的定时器/计数器以中断方式计数外 部连续周期性矩形波并在单片机口线上产生某一 频率的连续周期性矩形波。 三、设计要求 1、用Proteus软件画出电路原理图,单片机的定时 器/计数器以查询方式工作,设定计数功能,对 外部连续周期性脉冲信号进行计数,每计满100 个脉冲,则取反P1.0口线状态,在P 1.0口线上 接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时 器/计数器以中断方式工作,设定计数功能,对 外部连续周期性脉冲信号进行计数,每计满200 个脉冲,则取反P1.0口线状态,在P 1.0口线上 接示波器观察波形。 四、实验报告要求 1、实验目的和要求。 2、设计要求。 3、电路原理图。 4、实验程序流程框图和程序清单。 5、实验结果(波形图)。 6、实验总结。 7、思考题。 五、思考题 1、利用定时器0,在P1.0口线上产生周期为200微秒的连续 方波,利用定时器1,对P1.0口线上波形进行计数,满 50个,则取反P1.1口线状态,在P 1.1口线上接示波器 观察波形。 原理图:

程序清单: /*功能:用计数器1以工作方式2实现计数(查询方式)每计满100个脉冲,则取反P1.0口线状态*/ ORG 0000H START:MOV TMOD,#60H MOV TH1,#9CH MOV TL1,#9CH MOV IE,#00H SETB TR1 LOOP:JBC TF1,LOOP1 AJMP LOOP LOOP1:CPL P1.0

单片机定时器计数器实验报告

单片机定时器计数器实验报告 篇一:单片机计数器实验报告 计数器实验报告 ㈠实验目的 1. 学习单片机内部定时/计数器的使用和编程方法; 2. 进一步掌握中断处理程序的编程方法。 ㈡实验器材 1. 2. 3. 4. 5. G6W仿真器一台 MCS—51实验板一台 PC机一台电源一台信号发生器一台 ㈢实验内容及要求 8051内部定时计数器,按计数器模式和方式1工作,对 P3.4(T0)引脚进行计数,使用8051的T1作定时器,50ms 中断一次,看T0内每50ms来了多少脉冲,将计数值送显(通过LED发光二极管8421码来表示),1秒后再次测试。 ㈣实验说明 1. 本实验中内部计数器其计数器的作用,外部事件计数器脉冲由P3.4引入 定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变,这就要求被采样电平至少维持一个完整的机器周期,以保证电

平在变化之前即被采样,同时这就决定了输入波形的频率不能超过机器周期频率。 2. 计数脉冲由信号发生器输入(从T0端接入)。 3. 计数值通过发光二极管显示,要求:显示两位,十位用L4~L1的8421 码表示,个位用L8~L5的8421码表示 4. 将脉搏检查模块接入电路中,对脉搏进行计数,计算出每分钟脉搏跳动 次数并显示 ㈤实验框图(见下页) 程序源代码 ORG 00000H LJMP MAIN ORG 001BH AJMP MAIN1 MAIN: MOV SP,#60H MOV TMOD,#15H MOV 20H,#14H MOV TL1,#0B0H MOV TH1,#3CHMOV TL0,#00H ;T0的中断入口地址 ;设置T1做定时器,T0做计数器,都于方式1工作 ;装入中断次数 ;装入计数值低8位 ;装入计数值高8位 MOV TH0,#00H SETB TR1 ;启动定时器T1 SETB TR0 ;启动计数器T0 SETB ET1 ;允许T1中断 SETB EA ;允许CPU中断 SJMP $;

第5章 定时器计数器2(1)

2、模式1 模式1(M1M0=01)除了使用了THn和TLn全部16位外,其它与模式0相同。 (1)计数工作方式 由于定时器/计数器以加1方式计数,假定计数值为X,则应装入定时器/计数器的初值为: 初值=216-计数值【216=初值+计数值】 所以方式1的计数值范围是:1~65536(216=65536),最大值为:65536 (2)定时工作方式 定时时间t的计算公式为:【t的时间单位为微秒(μs)】 计数值=216-初值 定时时间t=计数值×机器周期 =(216-初值)×(1/晶体振荡频率)×12 在模式1下的情况下,如果fosc=12MHz,最大定时时间为: t=(65536-初值)×(1/12)×12=65536-0=65.536ms 在模式1下的情况下,如果fosc=6MHz,最大定时时间为: t=(65536-初值)×(1/6)×12=(65536-0)×2=131.072 ms。 【例如】:若晶体振荡为12MHz,要定时2.5ms,计算初值。 要定时2.5ms,也可以用模式1。 2500=(216-初值)×(1/12)×12 初值=65536-2500=63036=32768+16384+8192+4096+1024+512+32+16+8+4=1111 0110 0011 1100 ――> THn =0xF6 和TLn=0x3C 在fosc=12MHz时,如果定时时间大于65.536ms,这时用一个定时/计数器直接处理不能实现,这时可用: 1、2个定时/计数器共同处理; 2、1个定时/计数器配合软件计数方式处理。 3、模式2 方式0和方式1的最大特点是计数溢出后,计数器为全0。因此在循环定时或循环计数应用时就存在用指令反复装入计数初值的问题。这不仅影响定时精度,也给程序设计带来麻烦。方式2就是针对此问题而设置的。 该方式可省去用户软件中重装初值的指令执行时间,简化定时初值的计算方法,可以相当精确地确定定时时间。 此模式下定时器寄存器作为可自动重装载的8位计数器(TLn),如下图所示。

51单片机定时器计数器汇编实验报告

批 阅 长沙理工大学 实验报告 年级光电班号姓名同组姓名实验日期月日 指导教师签字:批阅老师签字: 内容 一、实验目的四、实验方法及步骤 二、实验原理五、实验记录及数据处理 三、实验仪器六、误差分析及问题讨论 单片机定时器/计数器实验 一、实验目的 1、掌握51单片机定时器/计数器的基本结构。 2、掌握定时器/计数器的原理及编程方法。 二、实验仪器 1、装有keil软件的电脑 2、单片机开发板 三、实验原理 51单片机有2个16位的定时器/计数器,分别是T0和T1,他们有四种工作方式,现以方式1举例。若定时器/计数器0工作在方式1,计数器由TH0全部8位和TL0全部8位构

成。 方式1作计数器用时,计数范围是:1-65536(2^16);作定时器用时,时间计算公式是:T=(2^16-计数初值)×晶振周期×12。 四、实验内容 1、计算计数初值 单片机晶振频率为6MHz,使用定时器0产生周期为120000μs等宽方波连续脉冲,并由P1.0输出。设待求计数初值为x,则: (2^16-x)×2×10^-6 = 120000×10^-6解得x=5536。二进制表示为:00010101 10100000B。十六进制为:高八位(15H),低八位(A0H)。 2、设置相关控制寄存器 TMOD设置为xxxx0001B 3、程序设计 ORG 0000H AJMP MAIN ORG 30H MAIN: MOV P1,#0FFH ;关闭所有灯 ANL TMOD,#0F0H ;置定时器0工作方式1 ORL TMOD,#01H ;不影响T1的工作 MOV TH0,#15H ;设置计数初始值 MOV TL0,#0A0H SETB EA ;CPU开中断 SETB ET0 ;定时器0开中断 SETB TR0 ;定时器开始运行 LOOP: JBC TF0,INTP ;如果TF0=1,则清TF0并转到INTP AJMP LOOP ;然跳转到LOOP处运行 INTP: MOV TH0,#15H ;重新设置计数初值 MOV TL0,#0A0H CPL P1.0 ;输出取反 AJMP LOOP END AJMP LOOP

51单片机计数器和定时器的本质区别及应用方法

51单片机计数器和定时器的本质区别及应用方法 在51单片机的学习过程中,我们经常会发现中断、计数器/定时器、串口是学习单片机的难点,对于初学者来说,这几部分的内容很难理解。但是我个人觉得这几部分内容是单片机学习的重点,如果在一个学期的课堂学习或者自学中没有理解这几部分内容,那就等于还没有掌握51单片机,那更谈不上单片机的开发了,我们都知道在成品的单片机项目中,有很多是以这几部分为理论基础的,万年历是以定时器为主的,报警器是以中断为主的,联机通讯是以串口为主的。 在这几部分内容中,计数器/定时器对于初学者说很容易搞混淆,下面我将对这方面的内容结合自己的学习经验谈几点看法。 计数器和定时器的本质是相同的,他们都是对单片机中产生的脉冲进行计数,只不过计数器是单片机外部触发的脉冲,定时器是单片机内部在晶振的触发下产生的脉冲。当他们的脉冲间隔相同的时候,计数器和定时器就是一个概念。 在定时器和计数器中都有一个溢出的概念,那什么是溢出了。我们可以从一个生活小常识得到答案,当一个碗放在水龙头下接水的时候,过了一会儿,碗的水满了,就发生溢出。同样的道理,假设水龙头的水是一滴滴的往碗里滴,那么总有一滴水是导致碗中的水溢出的。在碗中溢出的水就浪费了,但是在单片机的定时计数器中溢出将导致一次中断。 在定时器计数器中,我们有个概念叫容量,就是最大计数量。 方式0是2的13次方, 方式1是2的16次方, 方式2是2的8次方, 把水滴比喻成脉冲,那么导致碗中水溢出的最后一滴水的就是定时计数器的溢出的最后一个脉冲。 在各种单片机书本中,在介绍定时计数器时都讲到一个计数初值,那什么是计数初值呢?在这里我们还是假设水滴碗。假设第一百滴水能够使碗中的水溢出,我们就知道这个碗的容量是100。

定时器计数器应用实验一

一、实验目的和要求 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作, 设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100 个脉冲, 则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作, 设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲, 则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 三、电路原理图如下所示:

四:实验程序流程框图和程序清单 查询法流程框图: 中断法流程框图: 开始定时器初始化开定时器 清零TF0结束 TF0=0 P1.0取反N 开始堆栈初始化 定时器 中断初始化 开定时器进行中断 P1.1取反结束 程序清单: 查询法汇编: ORG 0000H MAIN: MOV TMOD, #02H MOV TH0, #9CH MOV TL0, #9CH MOV IE, #00H SETB TR0 LOOP: JBC TF0, LOOP1 LJMP LOOP LOOP1: CPL P1.0 LJMP LOOP END

查询法C语言:#include sbit cha=P1^0; void main() { TMOD=0x02; IE=0x00; TH0=0x9c; TL0=0x9c; TR0=1; while(1) { while(!TF0); TF0=0; cha=!cha; } } 中断法汇编:ORG 0000H MAIN: MOV IE, #82H MOV TMOD, #02H MOV TH0, #88H MOV TL0, #88H SETB TR0 HERE: LJMP HERE LOOP1: CPL P1.1 RETI END

(完整版)第五章中断系统及定时计数器

第五章中断系统及定时/计数器参考答案 1、80C51有几个中断源?各中断标志是如何产生的?又是如何复位的?CPU 响应各中断时,其中断地址入口是多少? 答:80C51有5个中断源,具体的名称、产生方式、复位方式和中断入口地址如下: (1)INT0(P302), 外部中断0请求信号输入引脚。当CPU检测到P3.2引脚出现有效的中断信号时,中断标志IE0(TCON.1)置一,向CPU 申请中断,中断入口地址为0003H。可由IT0(TCON.0)选择其为低 电平有效还是下降沿有效。当IT0=0时,中断标志在CPU响应中断 时不能自动清零,只能撤除INT0引脚的低电平,IE0才清零;当ITO=1 时,由硬件自动清除IE0标志。 (2)INT1(P3.3), 外部中断1请求信号输入引脚。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置一,向CPU 申请中断,入口地址为000BH。可由IT1(TCON.2)选择其为低电平 有效还是下降沿有效,中断标志复位清零与INTO类同。 (3)TF0(TCON.5), 片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断,入口地址为0013H。 CPU响应中断时,TF0自动清零。 (4)TF1(TCON.7), 片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断,入口地址为001 BH。CPU响应中断时,TF1自动清零。 (5)RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI, 向 CPU申请中断,入口地址为0023H。RI和TI必须由软件清除。 2、某系统有三个外部中断源1、2、3,当某一中断源变低电平时便要求CPU 处理,它们的优先处理次序由高到低为3、2、1,处理程序的入口地址分别为2000H、2100H、2200H,试编写主程序及中断服务程序(转至相应的入口即可)。 答:ORG 0000H LJMP BOOT ORG 0003H LJMP INT3 ORG 000BH LJMP INT2 ORG 0013H LJMP INT1 ORG 001BH RETI BOOT:ACALL INT0_0 ;中断启动程序 ACALL T0_0 ACALL INT1_0 SETB EA SJMP $

单片机定时计数器的方式控制字

单片机定时器/计数器的方式控制字 单片机中的定时/计数器都能有多种用途,那么我怎样才能让它们工作于我所需要的用途呢?这就要通过定时/计数器的方式控制字来设置。在单片机中有两个特殊功能寄存器与定时/计数有关,这就是TMOD和TCON。顺便说一下,TMOD和TCON是名称,我们在写程序时就能直接用这个名称来指定它们,当然也能直接用它们的地址89H和88H来指定它们(其实用名称也就是直接用地址,汇编软件帮你翻译一下而已)。 从图1中我们能看出,TMOD被分成两部份,每部份4位。分别用于控制T1和T0,至于这里面是什么意思,我们下面介绍。 从图2中我们能看出,TCON也被分成两部份,高4位用于定时/计数器,低4位则用于中断(我们暂不管)。而TF1(0)我们上节课已提到了,当计数溢出后TF1(0)就由0变为1。原来TF1(0)在这儿!那么TR0、TR1又是什么呢?看上节课的图。 计数脉冲要进入计数器还真不不难,有层层关要通过,最起码,就是TR0(1)要为1,开关才能合上,脉冲才能过来。因此,TR0(1)称之为运行控制位,可用指令SETB来置位以启动计数器/定时器运行,用指令CLR来关闭定时/计数器的工作,一切尽在自已的掌握中。 <单片机定时器/计数器结构> 定时/计数器的四种工作方式 工作方式0 定时器/计数器的工作方式0称之为13位定时/计数方式。它由TL(1/0)的低5位和TH(0/1)的8位组成13位的计数器,此时TL(1/0)的高3位未用。 我们用这个图来讨论几个问题: M1M0:定时/计数器一共有四种工作方式,就是用M1M0来控制的,2位正好是四种组合。C/T:前面我们说过,定时/计数器即可作定时用也可用计数用,到底作什么用,由我们根据需要自行决定,也说是决定权在我们��编程者。如果C/T为0就是用作定时器(开关往上打),如果C/T为1就是用作计数器(开关往下打)。顺便提一下:一个定时/计数器同一时刻要么作定时用,要么作计数用,不能同时用的,这是个极普通的常识,几乎没有教材会提这一点,但很多开始学习者却会有此困惑。 GA TE:看图,当我们选择了定时或计数工作方式后,定时/计数脉冲却不一定能到达计数器

51单片机实现LCD1602显示定时计数器(自己整理的)

每隔一分钟,蜂鸣器响一次,按键按一下,计数器清0。从新开始、 #include<> #include<> #define uchar unsigned char #define uint unsigned int sbit RS=P2^0; sbit RW=P2^1; sbit EN=P2^2; uchar code dis2[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; uchar code p[]="-";//code 可以不加,加了之后就是固定了这个数组不能对其进行操作、、这个一定要注意。。。uchar j,k,kk,miao,miao1,fen,fen1,shi,shi1; void delay_ms(int x)//延时程序,延时1ms { uint i; while(x--) for(i=0;i<120;i++); } uchar busy()//对LCD1602进行判断是否为忙 { uchar status; RS=0; RW=1; EN=1; delay_ms(1); status=P1; EN=0; return status; }

void write_cmd(uchar cmd)//写命令程序,首先对其进行判忙 { while((busy()&0x80)==0x80);//对返回进行判断,如果为忙就进行等待RS=0; RW=0; EN=0; P1=cmd; EN=1; delay_ms(1); EN=0; } void write_data(uchar dat) { while((busy()&0x80)==0x80); RS=1; RW=0; EN=0; P1=dat; EN=1; delay_ms(1); EN=0; } void canshu() { write_cmd(0x38); delay_ms(1); write_cmd(0x01); delay_ms(1); write_cmd(0x06); delay_ms(1); write_cmd(0x0c); delay_ms(1); } /*void xianshi(uchar x,uchar y,uchar *str) { uint i=0; if(y==0) write_cmd(0x80|x); if(y==1) write_cmd(0xc0|x); for(i=0;i<16;i++) { write_data(str[i]); if(p=='\0') break; }

51单片机定时器设置

51单片机定时器设置入门(STC89C52RC) STC单片机定时器设置 STC单片机定时器的使用可以说非常简单,只要掌握原理,有一点的C语言基础就行了。要点有以下几个: 1. 一定要知道英文缩写的原形,这样寄存器的名字就不用记了。 理解是最好的记忆方法。好的教材一定会给出所有英文缩写的原形。 2. 尽量用形像的方法记忆 比如TCON和TMOD两个寄存器各位上的功能,教程一般有个图表,你就在学习中不断回忆那个图表的形像 TMOD:定时器/计数器模式控制寄存器(TIMER/COUNTER MODE CONTROL REGISTER) 定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。 其格式为: 其中低四位定义定时器/计数器C/T0,高四位定义定时器/计数器C/T1,各位的说明: GA TE——门控制。 GA TE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1。 当INT0引脚为高电平时TR0置位,启动定时器T0; 当INT1引脚为高电平时TR1置位,启动定时器T1。 GA TE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。 C/T——功能选择位 C/T=0时为定时功能,C/T=1时为计数功能。 置位时选择计数功能,清零时选择定时功能。

M0、M1——方式选择功能 由于有2位,因此有4种工作方式: M1M0 工作方式计数器模式TMOD(设置定时器模式) 0 0 方式0 13位计数器TMOD=0x00 0 1 方式1 16位计数器TMOD=0x01 1 0 方式 2 自动重装8位计数器TMOD=0x02 1 1 方式3 T0分为2个8位独立计数器,T1为无中断重装8位计数器TMOD=0x03 单片机定时器0设置为工作方式1为TMOD=0x01 这里我们一定要知道,TMOD的T是TIMER/COUNTER的意思,MOD是MODE的意思。至于每位上的功能,你只要记住图表,并知道每个英文缩写的原型就可以了。 在程序中用到TMOD时,先立即回忆图表,并根据缩写的单词原形理出每位的意义,如果意义不是很清楚,就查下手册,几次下来,TMOD的图表就已经在脑子里了。 8位GA TE位,本身是门的意思。 7位C/T Counter/Timer 6位M1 Mode 1 5位M0 Mode 0 TCON: 定时器/计数器控制寄存器(TIMER/COUNTER CONTROL REGISTER) TMOD分成2段,TCON控制更加精细,分成四段,在本文中只要用到高四段。 TF0(TF1)——计数溢出标志位,当计数器计数溢出时,该位置1。 TR0(TR1)——定时器运行控制位 当TR0(TR1)=0 停止定时器/计数器工作 当TR0(TR1)=1 启动定时器/计数器工作 IE0(IE1)——外中断请求标志位 当CPU采样到P3.2(P3.3)出现有效中断请求时,此位由硬件置1。在中断响应完成后转向中断服务时,再由硬件自动清0。 IT0(IT1)——外中断请求信号方式控制位 当IT0(IT1)=1 脉冲方式(后沿负跳有效) 当IT0(IT1)=0 电平方式(低电平有效)此位由软件置1或清0。 TF0(TF1)——计数溢出标志位

相关文档
相关文档 最新文档