定时计数与实验验证_第1页
定时计数与实验验证_第2页
定时计数与实验验证_第3页
定时计数与实验验证_第4页
定时计数与实验验证_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

09:57应用电子系1二、定时计数与实验验证单片机内部资源应用

定时/计数器是单片机系统一个重要的部件,其工作方式灵活、编程简单、使用方便,可用来实现定时控制、延时、频率测量、脉宽测量、信号发生、信号检测等。此外,定时/计数器还可作为串行通信中波特率发生器。1.定时/计数器的结构一.定时/计数器概述内部总线工作方式工作方式TH1TL1TH0TL0TCONTMODT1(P3.5)T0(P3.4)微处理器定时器:对片内机器时钟(周期方波)进行计数计数器:对Tx引脚输入的负脉冲进行计数09:57应用电子系2二、定时计数与实验验证单片机内部资源应用二、定时计数与实验验证80C51内部有两个定时/计数器T0和T1,其核心是计数器,基本功能是加1。对外部事件脉冲(下降沿)计数,是计数器;对片内机周脉冲计数,是定时器。计数器由二个8位计数器组成。定时时间和计数值可以编程设定。方法:在计数器内设置一个初值,然后加1计满后溢出。调整计数器初值,可调整从初值到计满溢出的数值,即调整了定时时间和计数值。定时/计数器作为计数器时,外部事件脉冲必须从规定的引脚输入。且外部脉冲的最高频率不能超过时钟频率的1/24。09:57应用电子系3单片机内部资源应用二、定时计数与实验验证⒈定时/计数器控制寄存器TCONTCONT1中断标志T1运行标志T0中断标志T0运行标志INT1中断标志INT1触发方式INT0中断标志INT0触发方式位名称TF1TR1TF0TR0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88H二

定时/计数器的控制寄存器09:57应用电子系4单片机内部资源应用09:57应用电子系5二、定时计数与实验验证单片机内部资源应用TCON低4位与外中断、有关,已在中断中叙述。高4位与定时/计数器T0、T1有关。⑴TF1:定时/计数器T1溢出标志。⑵TF0:定时/计数器T0溢出标志。⑶TR1:定时/计数器T1运行控制位。TR1=1,T1运行;TR1=0,T1停。⑷TR0:定时/计数器T0运行控制位。TR0=1,T0运行;TR0=0,T0停。TCON的字节地址为88H,每一位有位地址,均可位操作。二、定时计数与实验验证高4位控制T1低4位控制T0门控位计数/定时方式选择工作方式选择门控位计数/定时方式选择工作方式选择GC/TM1M0GC/TM1M0TMOD用于设定定时/计数器的工作方式低4位用于控制T0,高4位用于控制T1。⒉定时/计数器工作方式控制寄存器TMOD09:57应用电子系6单片机内部资源应用⑴M1M0——工作方式选择位M1M0工作方式功能00方式013位计数器01方式116位计数器10方式2两个8位计数器,初值自动装入11方式3两个8位计数器,仅适用T009:57应用电子系7二、定时计数与实验验证单片机内部资源应用⑵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才能运行。

TMOD字节地址89H,不能位操作,设置TMOD须用字节操作指令。09:57应用电子系8单片机内部资源应用二、定时计数与实验验证三

定时/计数器工作方式⒈工作方式0

13位计数器,由TL0低5位和TH08位组成,TL0低5位计数满时不向TL0第6位进位,而是向TH0进位,13位计满溢出,TF0置“1”。最大计数值213=8192。⒉工作方式1

16位计数器,最大计数值为216=65536。当fosc=12MHZ,最大定时65536S,而用方式0最大定时时间为8192S.09:57应用电子系9二、定时计数与实验验证单片机内部资源应用⒊工作方式2

8位计数器,仅用TL0计数,最大计数值为28=256,计满溢出后,一方面进位TF0,使溢出标志TF0=1;另一方面,使原来装在TH0中的初值装入TL0。优点:定时初值可自动恢复,TH0中存放初值;

缺点:计数范围小。

适用范围:需要重复定时,而定时范围不大的应用场合。09:57应用电子系10二、定时计数与实验验证单片机内部资源应用⒋工作方式3

方式3仅适用于T0,T1无方式3。⑴T0方式3

在方式3情况下,T0被拆成二个独立的8位计数器TH0、TL0。

TL0可以为定时/计数器;TH0只能作为8位定时器。

①TL0使用T0原有的控制寄存器资源:TF0,TR0,GATE,C/T,INT0,组成一个8位的定时/计数器;②TH0借用T1的中断溢出标志TF1,运行控制开关TR1,只能对片内机周脉冲计数,组成另一个8位定时器(不能用作计数器)。

⑵T0方式3情况下的T1T1由于其TF1、TR1被T0的TH0占用,计数器溢出时,只能将输出信号送至串行口,即用作串行口波特率发生器。09:57应用电子系11二、定时计数与实验验证单片机内部资源应用二、定时计数与实验验证其中:N与工作方式有关:方式0时,N=13;

方式1时,N=16;

方式2、3时,N=8。机周时间与主振频率有关:机周时间=12/foscfosc=12MHZ时,1机周=1S;fosc=6MHZ

时,1机周=2S。

定时/计数器的应用⒈计算定时/计数初值80C51定时/计数初值计算公式:09:57应用电子系12单片机内部资源应用解:⑴工作方式0:

213–500S/2S=8192-250=7942=1F06H 1F06H化成二进制: 1F06H=0001111100000110B =00011111000

00110B其中:低5位00110前添加3位000送入TL0 TL0=00000110B=06H;

高8位11111000B送入TH0TH0=11111000B=F8H。【例】已知晶振6MHz,要求定时0.5ms,试分别求出T0工作于方式0、方式1、方式2、方式3时的定时初值。09:5713单片机内部资源应用⑵工作方式1:

T0初值=216-500s/2s=65536–250=65286=FF06HTH0=FFH;TL0=06H。⑶工作方式2:

T0初值=28-500s/2s=256-250=6TH0=06H;TL0=06H。⑷工作方式3:

T0方式3时,被拆成两个8位定时器,定时初值可分别计算,计算方法同方式2。两个定时初值一个装入TL0,另一个装入TH0。因此:

TH0=06H;TL0=06H。09:57应用电子系14单片机内部资源应用⒉定时/计数器应用步骤⑴合理选择定时/计数器工作方式⑵计算定时/计数器定时初值(按上述公式计算)⑶编制应用程序①定时/计数器的初始化包括定义TMOD、写入定时初值、设置中断系统、启动定时/计数器运行等。②正确编制定时/计数器中断服务程序注意:若需要连续反复使用原定时时间,且未工作在方式2,则应在中断服务程序中重装定时初值。09:57应用电子系15二、定时计数与实验验证单片机内部资源应用【例】试用T1方式2编制程序,在P1.0引脚输出周期为400S的脉冲方波,已知fosc=12MHZ。解:①计算定时初值

T1初值=28-200s/1s=256–200=56=38HTH1=38H;TL1=38H②设置TMOD:

0

0

10

0000B=20HT0控制位,与T1无关

T1方式2T1定时器

T1启动与无关09:57应用电子系16单片机内部资源应用③编制程序:

ORG 0000H ;复位地址

LJMP MAIN ;转主程序

ORG 001BH ;T1中断入口地址

LJMP IT1 ;转T1中断服务程序

ORG 0100H ;主程序首地址MAIN:MOV TMOD,#20H ;置T1定时器方式2

MOV TL1,#38H ;置定时初值

MOV TH1,#38H ;置定时初值备份

MOV IP,#00001000B;置T1高优先级

MOV IE,#0FFH ;全部开中

SETB TR1 ;T1运行

SJMP $ ;等待T1中断

ORG0200H;T1中断服务程序首地址IT1: CPLP1.0;输出波形取反首地址

RETI;中断返回二、定时计数与实验验证【课堂练习题】

参照以上例题工作方式2与方式1,按下列要求分别修改程序: ①脉冲方波从P3.0输出; ②fosc=12MHz; ③脉冲方波脉宽分别为100s与1s; ④用定时/计数器T0;09:57应用电子系18单片机内部资源应用【例】已知晶振12MHZ,电路如图,要求利用定时器T0使图中发光二极管D进行秒闪烁。解:发光二极管进行秒闪烁。即一秒钟一亮一暗,亮500ms,暗500ms。晶振12MHz,每机周1s,T0方式1最大定时只能65ms余。取T0定时50ms,计数10次,即可实现500ms定时。单片机内部资源应用09:57应用电子系19①计算定时初值

T0初值=216-50000s/1s=65536–50000=15536=3CB0HTH0=3CH;TL0=B0H。②设置TMOD:

0000

0

0

01B=01HT0方式1

T0

与无关

T1控制位09:57应用电子系20单片机内部资源应用③编制程序:

ORG 0000H ;复位地址

LJMP MAIN ;转主程序

ORG 000BH ;T0中断入口地址

LJMP IT0 ;转T0中断服务程序

ORG 0100H ;主程序首地址MAIN:MOV TMOD,#01H ;置T0定时器方式1 MOV TH0,#3CH ;置T0初值50ms MOV TL0,#0B0H ; MOV IE,#10000010B;T0开中

MOV R7,#0AH ;置50ms计数器初值

SETB TR0 ;T0运行

SJMP $ ;等待中断

ORG0200HITO:MOVTH0,#3CH;重置T0初值50msMOVTLO,#0BOH

DJNZR7,GORET

;判500ms到否?CPLP1.7;500ms到,输出取反

MOVR7,#0AH;恢复50ms计数器初值GORET:RETI

【例】已知fosc=6MHz,检测T0引脚上的脉冲数,并将1s内的脉冲数显示在显示屏上,每隔1s刷新一次显示值(设一秒内脉冲数≤65535个)。

根据题目要求,T0用作计数器方式1,T1用作定时器方式1,定时100ms。

3)编制程序:

ORG0000HLJMPMAIN;转主程序

0RG000BHLJMPIT0;转T0中断服务程序

ORG001BHLJMPITl;转T1中断服务程序

ORG0100HMAIN:MOVSP,#60H;置堆栈

MOVTMOD,#15H;置T0计数器方式1,T1定时器方式1MOVTH0,#00H;置T0初值

MOVTL0,#00H;

MOVTH1,#3CH;置T1初值

MOVTL1,#0BOH;

SETBPT1;置T1为高优先级

MOVIE,#10001101B;TO、串口不开中,其余开中

SETBTR0;TO启动

SETBTRl;T1启动

MOVR7,#OAH;置lOOms计数器初值LDIR:LCALLDIR;调用显示子程序,并等待中断

SJMPLDIR;循环显示T0中断服务程序没有编写.ORG0200H;T1中断服务程序首地址ITl:MOVTHl,#3CH;重置T1初值

MOVTL1,#0BOH;

DJNZR7,GORET

;判1s到否?1s未到转返回

CLRTR0;1s到,T0停

MOV30H,TL0;记录ls内T0引脚脉冲个数

MOV31H,THO;

MOVTLO,#00H;脉冲计数器T0清0MOVTH0,#00H;

SETBTR0;TO重新运行

MOVR7,#0AH;恢复lOOms计数器初值

PUSHAcc;保护现场

PUSHPSW;

PUSHDPH;

PUSHDPL;

LCALLWORK;调用数据处理子程序

POPDPL;恢复现场

POPDPH;

POPPSW;

POPAcc;GORET:RETI;T1中断返回

【例】已知fosc=6MHz,试编写24小时模拟电子钟程序,秒分时数分别存在R1、R2、R3中,可直接调用显示程序DIR。解:

ORG0000H;复位地址

LJMPSTART;转主程序

ORG000BH;T0中断入口地址

LJMPIT0;T0中断,转T0中断服务子程序IT0ORG1000H;主程序首地址START:MOVR1,#0;秒计数器清0MOVR2,#0;分计数器清0MOVR3,#0;时计数器清0MOVR4,#0;500S计数器清0MOVR5,#0;100ms计数器清0MOVTMOD,#02H;置T0定时器方式2MOVTL0,#06H;置T0定时初值500SMOVTH0,#06H;用于自动恢复定时初值

SETBTR0;启动T0WAIT:LCALLDIR;显示时钟时分秒并等待中断

SJMPWAIT;循环显示ORG 2000H ;T0中断服务子程序首地址IT0:

INC R4 ;500S计数器计数

CJNE R4,#200,IT01;判100ms满否?IT01:

JC IT06 ;未满100ms,转返回

MOVR4,#0 ;满100ms,500S计数器清0 INCR5 ;100ms计数器计数

CJNER5,#10,IT02 ;判1s满否?IT02:

JC IT06 ;未满1s,转返回

MOV R5,#0 ;满1s,100ms计数器清0 INC R1 ;秒计数器加1 CJNER1,#60,IT03 ;判60秒满否?IT03:

JC IT06 ;未满60秒,转返回

MOV R1,#0 ;满60秒,秒计数器清0INC R2 ;分计数器加1CJNE R2,#60,IT04 ;判60分满否?IT04:

JC IT06 ;未满60分,转返回

MOV R2,#0 ;满60分,分计数器清0INC R3 ;时计数器加1CJNE R3,#24,IT05 ;判24小时满否?IT05:

JC IT06 ;未满24小时,转返回

MOV R3,#0 ;满24小时,时计数器清0IT06:

RETI ;返回解:利用定时/计数器T0扩展成外中断时须有两个条件:

一是外部触发脉冲从P3.4输入(下降沿有效);

二是将定时/计数器设置成计数临界状态,即定时初值为FFH,再来一个脉冲即能溢出触发中断。【例】因外中断INT0、INT1已被占用,试利用定时/计数器T0扩展成外中断。编程:

ORG0000H;复位地址

LJMPSTART;复位,转初始化程序STARTORG000BH;T0中断入口地址

LJMPIT0;转T0中断服务子程序IT0ORG1000H;初始化程序首地址START:MOV

温馨提示

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

评论

0/150

提交评论