《单片机 定时器与计数器.ppt》由会员分享,可在线阅读,更多相关《单片机 定时器与计数器.ppt(81页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机原理与接口技术 大连理工大学出版社第6章 定时器/计数器 时间就是生命第6章 定时器/计数器 6.1定时器/计数器的计数与定时6.2定时器/计数器的控制6.3 定时器/计数器的编程6.4 定时器/计数器的工作方式6.5 定时器/计数器的综合应用举例第6章 定时器/计数器 定时器/计数器与CPU并行工作,实现定时/计数功能,并以定时/计数的结果对单片机系统进行控制。本章主要介绍MCS-51系列单片机定时器/计数器的控制方法、工作方式、简单应用。6.1 定时器/计数器的计数与定时MCS-51系列单片机定时器/计数器的功能是用以实现定时、计数,并以定时、计数的结果进行控制。8051内部有两个1
2、6位可编程的定时器/计数器T0和T1。T0(T1)由两个8位寄存器TH0(TH1)和TL0(TL1)拼装而成。其中TH0(TH1)为高8位,TL1(TH1)为低8位。T0和T1有定时和计数两种工作模式。图6-1是MCS-51系列单片机定时器/计数器的内部结构图。6.1.1 计数计数就是对来自单片机外部的事件进行计数,为了与请求中断的外部事件区分开,称此种外部事件为外部计数事件。外部计数事件由脉冲引入,单片机的P3.4(T0)和P3.5(T1)即为外部计数脉冲的输入端。所谓计数,就是对有效计数脉冲的计数。注意:51系列单片机的两个定时器/计数器采用加法计数结构。单片机在每个机器周期对P3.4(T
3、0)和P3.5(T1)进行采样,若在一个机器周期采样到高电平,在下一个机器周期采样到低电平,即得到一个有效的计数脉冲。计数寄存器在下一个机器周期自动加1。6.1.2 定时MCS-51系列单片机中的计数器除了可以作为计数之用外,还可以用作时钟完成定时功能。定时就是对来自单片机内部的计数脉冲进行计数。注意:在定时模式下,51系列单片机的计数源是晶振的12分频产生的脉冲。思考:定时模式下,晶振频率为12MHz时,计数脉冲的时间间隔为多少?6.2.1定时方式寄存器TMOD定时方式寄存器TMOD是单片机专门用来控制两个定时器/计数器的工作方式的寄存器。这个寄存器的各位定义如下:6.2.1定时方式寄存器T
4、MOD下面介绍与定时器/计数器T0相关的TMOD的低4位。GATE门控位。由图6-2可以看出,GATE=0时,由TR0来启动定时/计数;GATE=1时,由TR0和(P3.2)共同启动定时/计数,只有当二者同时为1时才进行计数操作。定时/计数模式选择位。=0时,处于定时模式,内部计数脉冲是对晶振进行12分频产生的;=1时,处于计数模式,外部计数脉冲由T0(P3.4)引入。6.2.1定时方式寄存器TMODM1、M0工作方式选择位。M1、M0与定时器/计数器T0的四种工作方式有下面的对应关系:00工作方式001工作方式110工作方式211工作方式36.2.1定时方式寄存器TMODTMOD对定时器/计
5、数器T1的控制与对T0的控制类似,此时,门控位GATE所控制的定时/计数启动由TR1和(P3.3)共同参与完成。TMOD对定时器/计数器的控制由软件进行设定,大大提高了控制的灵活性。6.2.2定时控制寄存器TCON定时控制寄存器TCON既参与中断控制又参与定时控制。此处只对与定时控制功能有关的控制位进行回顾。6.2.2定时控制寄存器TCONTCON的高四位进行定时/计数控制TF0(TCON.5)定时器/计数器T0的溢出中断标志位,当T0定时(或计数)结束时,由硬件自动置1。TF1(TCON.7)定时器/计数器T1的溢出中断标志位,当T1定时(或计数)结束时,由硬件自动置1。TR0(TCON.4
6、)定时器/计数器T0的启动停止控制位,由软件设定。TR0=0,停止T0定时(或计数);TR0=1,启动T0定时(或计数)。TR1(TCON.6)定时器/计数器T1的启动停止控制位,由软件进行设定。TR1=0,停止T1定时(或计数);TR1=1,启动T1定时(或计数)。6.2.3定时器/计数器工作原理定时器/计数器工作原理如图6-2所示。6.2.3定时器/计数器工作原理当 =0时,为定时工作模式,计数脉冲是晶振的12分频。当 =1时,为计数工作模式,外部计数脉冲由Ti(P3.(i+4)引入。6.2.3定时器/计数器工作原理当GATE=0时,或门输出为高电平,与引脚(P3.(2+i)无关。此时与门
7、的输出仅由TRi决定。TRi=1,与门输出高电平,接通模拟控制开关,引入计数脉冲,进行定时/计数操作。TRi=0,与门输出低电平,断开模拟控制开关,定时/计数停止。6.2.3定时器/计数器工作原理当GATE=1时,或门的输出由引脚(P3.(2+i)决定,因此与门的输出由TRi和引脚(P3.(2+i)共同决定。若TRi=1,而(P3.(2+i)为高电平,则与门输出高电平,接通模拟控制开关,进行定时/计数;若TRi=1,而(P3.(2+i)为低电平,则定时/计数停止。6.2.3定时器/计数器工作原理当模拟控制开关接通时,计数寄存器在计数脉冲的作用下进行增1计数,当计数溢出时向计数溢出标志位TFi进
8、位。6.3.1中断方式定时器/计数器在中断方式下的编程步骤如下:(1)开中断(2)设置中断优先级(3)TMOD初始化(4)设置定时/计数初值(5)启动定时/计数(6)编写定时/计数中断处理程序6.3.2查询方式定时器/计数器在查询方式下的编程步骤如下:(1)关中断(2)TMOD初始化(3)设置定时/计数初值(4)启动定时/计数(5)查询TFi及相关处理6.4.16.4.1工作方式工作方式0 0定时器/计数器T0和T1在方式0下的工作情况完全相同。此时的计数寄存器为13位,构成如下:方式0下的计数溢出值为8192(213)。则:计数次数=8192-计数初值 (公式6-1)定时时间=(8192-计
9、数初值)机器周期(公式6-2)6.4 6.4 定时器定时器/计数器的工作方式计数器的工作方式6.4.16.4.1工作方式工作方式0 0方式0没有充分利用16位计数寄存器的计数范围,这是为了与MCS-48系列单片机兼容。13位的计数寄存器的初始化有些烦琐,步骤如下:(1)由公式6-1和6-2计算出十进制的计数初值。(2)若计数初值小于32(25),将其送入TLi,将0送入THi,完成计数寄存器初始化。(3)若计数初值不小于32,先将其转化为二进制形式。补足13位后,将低5位送入TLi,将高8位送入THi,完成计数寄存器初始化。6.4.16.4.1工作方式工作方式0 0【例6-1】设fOSC=6M
10、Hz,定时器/计数器T0以工作方式0定时2ms,编写初始化程序。说明:fOSC即为晶振频率。首先计算计数初值。根据公式6-2有:定时时间=(8192-计数初值)12fOSC计数初值=8192-定时时间fOSC/12 =8192-20006MHz/12 =7192 =0E018H=11100000 11000B6.4.16.4.1工作方式工作方式0 0设置TMOD。对T0的工作方式进行选择,因此设置TMOD的低4位。定时,为0;方式0,M1M0的组合为00;与外部脉冲无关,GATE为0。初始化程序如下:MOV TMOD,#00H ;设置TMOD MOVTH0,#0E0H ;设置计数初值 MOVT
11、L0,#18H SETB TR0 ;启动定时6.4.16.4.1工作方式工作方式0 0【例6-2】设fosc=6MHz,定时器/计数器1以工作方式0实现在P2口8个引脚产生频率为250Hz的等宽方波。光盘提供Proteus仿真文件,运行仿真文件夹第6章LT6_2LT6_2.DSN,观察运行结果,并进一步分析源程序。图6-3 P2.X引脚输出的方波(仿真截图)6.4.16.4.1工作方式工作方式0 0(1)首先计算定时时间。方波频率为250Hz,则周期为4ms。即P2口8个引脚每2ms取反一次,定时时间为2ms。(2)计算计数初值。如例6-1所述,计数初值为=0E018H=11100000 11
12、000B(3)设置TMOD。对T1的工作方式进行选择,因此设置TMOD的高4位。6.4.16.4.1工作方式工作方式0 0定时,为0;方式0,M1M0的组合为00;与外部脉冲无关,GATE为0。(4)编制程序(中断方式)如下:ORG 0000H LJMP MAIN ORG 001BH AJMP SFT1 ORG 0050HMAIN:MOV A,#00H6.4.16.4.1工作方式工作方式0 0 SETB EA ;开中断 SETB ET1 MOV IP,#0 ;设置中断优先级 MOV TMOD,#00H ;设置TMOD,T1工作 ;方式0,计时 MOV TH1,#0E0H ;设置计数初值 MOV
13、 TL1,#18H SETB TR1 ;启动定时6.4.16.4.1工作方式工作方式0 0 SJMP$ORG 0100HSFT1:MOV TH1,#0E0H;重新设置计数初值 MOV TL1,#18H CPL A MOV P2,A RETI END注意:由于一次计数溢出时计数寄存器的内容为0,在下次计数前需要重新为计数寄存器赋初值。6.4.2.工作方式1定时器/计数器T0和T1在方式0下的工作情况完全相同。此时的计数寄存器为16位,构成如下:方式1下的计数溢出值为65536(216)。则:计数次数=65536-计数初值 (公式6-3)定时时间=(65536-计数初值)机器周期(公式6-4)TH
14、i 70TLi 706.4.2.工作方式1方式1利用了全部16位计数寄存器的计数范围,计数寄存器的初始化步骤如下:(1)由公式6-3和6-4计算出十进制的计数初值。(2)若计数初值小于256(28),将其送入TLi,将0送入THi,完成计数寄存器初始化。(3)若计数初值不小于256,将其转化为十六进制形式,再将高低字节分别送入THi和TLi,完成计数寄存器初始化。6.4.2.工作方式1【例6-3】设fosc=12MHz,定时器/计数器0以工作方式1实现在P2口8个引脚产生频率为250Hz的等宽方波。光盘提供Proteus仿真文件,运行仿真文件夹第6章LT6_3LT6_3.DSN,观察运行结果,
15、并进一步分析源程序。图6-4 P2.X引脚输出的方波(仿真截图)6.4.2.工作方式1(1)首先计算定时时间。方波频率为250Hz,则周期为4ms。即P2口8个引脚每2ms取反一次,定时时间为2ms。计算计数初值。根据公式6-4有:定时时间=(65536-计数初值)12fOSC计数初值=65536-定时时间fOSC/12 =65536-200012MHz/12=63536=0F8 30H6.4.2.工作方式1(2)设置TMOD。对T0的工作方式进行选择,因此设置TMOD的低4位。定时,为0;方式1,M1M0的组合为01;与外部脉冲无关,GATE为0。(3)编制程序(查询方式)如下:ORG000
16、0HAJMPMAIN6.4.2.工作方式1 ORG 0050HMAIN:MOV A,#00H CLR EA ;关中断 MOV TMOD,#01H;设置TMOD,T0工作方;式1,计时 MOV TH0,#0F8H ;设置计数初值 MOV TL0,#30H SETB TR0 ;启动定时6.4.2.工作方式1WAIT:JNB TF0,WAIT CLR TF0;注意:将TF0软件清0 MOV TH0,#0F8H MOV TL0,#30H CPL A MOV P2,A SJMP WAIT END6.4.2.工作方式1【例6-4】设fOSC=6MHz,编程实现以定时器/计数器T0方式1定时控制在P2口8个
17、引脚产生周期为2s的方波。光盘提供Proteus仿真文件,运行仿真文件夹第6章LT6_4LT6_4.DSN,观察运行结果,并进一步分析源程序。图6-5 P2.X引脚输出的方波(仿真截图)6.4.2.工作方式1(1)首先计算定时时间。方波周期为2s。即P2口8个引脚每1s取反一次,定时时间为1s。(2)计算计数初值。根据公式6-4有:定时时间=(65536-计数初值)12fOSC计数初值=65536-定时时间fosc/12 =65536-10000006MHz/12 =65536-5000000这里,计数初值大于计数溢出值,说明定时不能一次完成。考虑到500000=5000010,设一次计数次数
18、为50000,则计数初值=65536-50000=15536=3C B0H这样的定时需要10次才能完成题目要求,每次定时0.1秒。6.4.2.工作方式1(3)设置TMOD。对T0的工作方式进行选择,因此设置TMOD的低4位。定时,为0;方式0,M1M0的组合为01;与外部脉冲无关,GATE为0。(4)编制程序(中断方式)如下:ORG 0000H AJMP MAIN ORG 000BH AJMP SFT06.4.2.工作方式1 ORG 0050HMAIN:MOV A,#00H SETB EA ;开中断 SETB ET0 MOV IP,#0 ;设置中断优先级 MOV TMOD,#01H;设置TMO
19、D,T0工作 ;方式1,计时 MOV TH0,#3CH ;设置计数初值 MOV TL0,#0B0H MOV R7,#10 ;设置定时次数 SETB TR0 ;启动定时6.4.2.工作方式1 SJMP$ORG 0100HSFT0:MOV TH0,#3CH ;注意:重新设置计数 ;初值 MOV TL0,#0B0H DJNZ R7,WAIT ;定时不够1s则等待 MOV R7,#10 CPL A MOV P2,AWAIT:RETI END6.4.2.工作方式1【例6-5】设fOSC=12MHz,编程测试 引入的外部脉冲信号的高电平宽度(机器周期数)。参看仿真文件:测脉宽.DSN分析:外部脉冲来自 ,
20、应由T0的外部控制电路进行定时。测试 的高电平宽度,即高电平时进行定时,低电平时停止定时,应设置T0的门控位GATE为1。T0用来累加高电平的宽度,计数初值为0,应选择计数范围大的工作方式,令其方式1定时;编制程序(查询方式)如下:6.4.2.工作方式1 ORG0000H AJMPMAIN ORG0050HMAIN:CLR EX0 CLR ET0 MOVTMOD,#9 ;T0方式1,Gate1 MOVTH0,#0 ;计数器清0 MOVTL0,#06.4.2.工作方式1 CLRET0 MOVTMOD,#9 ;T0方式1,Gate1 MOVTH0,#0 ;计数器清0 MOVTL0,#0W1:JB
21、P3.2,W1 ;让过高电平 SETB TR0 ;启动定时计数6.4.2.工作方式1W2:JNB P3.2,W2 ;等候上升沿,自动启动计数W3:JB P3.2,W3 ;定时计数 CLR TR0 ;停止定时计数 MOV 30H,TL0 ;将脉冲宽度存入在31H、;30H寄存器中 MOV 31H,TH06.4.36.4.3工作方式工作方式2 2由于每次定时/计数之后计数寄存器的内容为0,在下一次定时/计数后都要进行初值重载。在方式0和方式1中,初值重载是由软件实现的。如果需要多次进行定时/计数,则需占用较多CPU时间。定时器/计数器在方式2下可由硬件实现初值重载。T0和T1在方式2下为8位定时器
22、/计数器,二者的工作情况相同。由TLi充当计数寄存器,由THi充当初值重载寄存器,如图6-3所示。图6-6 定时器/计数器方式2下的初值重载6.4.36.4.3工作方式工作方式2 2在方式2下,当低8位计数器产生计数溢出时,一方面会把溢出信号写入TFi,一方面会启动THi自动为TLi赋初值。方式2下的计数溢出值为256(28)。则:计数次数=256-计数初值 (公式6-5)定时时间=(256-计数初值)机器周期 (公式6-6)6.4.36.4.3工作方式工作方式2 2方式2只利用了低8位计数寄存器,因此计数初值一定小于256,计数器的初始化步骤如下:(1)由公式6-5和6-6计算出十进制的计数
23、初值。(2)将计数初值送入TLi,也将其送入THi,完成计数寄存器初始化。工作方式2通常用于波特率发生器(我们将在串行接口中讲解)。注意:方式2下计数初值既要送入TLi,也要送入THi。6.4.36.4.3工作方式工作方式2 2【例6-6】【例6-6】设fOSC=12MHz,T0方式2计数,T1方式2定时,编程实现在P1.0脚输出频率为10kHz的方波,将P1.0上的信号进行12分频为在P1.5脚输出。P1.0输出的脉冲作为T0的计数脉冲。光盘提供Proteus仿真文件,运行仿真文件夹第6章LT6_6LT6_6.DSN,观察运行结果。6.4.36.4.3工作方式工作方式2 2【例6-6】图6-
24、7 P1.0和P1.5引脚输出的方波(仿真截图)6.4.36.4.3工作方式工作方式2 2 【例6-6】(1)首先计算定时时间。P1.0脚上输出的方波频率为10kHz,则周期为0.1ms。即P1.0引脚每50s取反一次,定时时间为50s。(2)计算计数初值。根据公式6-6有:6.4.36.4.3工作方式工作方式2 2 【例6-6】T1的定时时间=(256-T1计数初值)12fOSCT1的计数初值=256-T1定时时间fosc/12=256-5012MHz/12=206P1.5脚的方波为对P1.0脚方波的12分频,即P1.5脚的方波周期为P1.0脚方波周期的12倍,即P1.0脚每输出6个脉冲,P
25、1.5脚取反一次。根据公式6-5有:T0的计数初值=256-T0的计数次数 =256-6 =2506.4.36.4.3工作方式工作方式2 2 【例6-6】(3)设置TMOD。T0方式2计数,与外部脉冲无关,TMOD的低4位为0110;T1方式2定时,与外部脉冲无关,TMOD的高4位为0010。(4)编制程序(中断方式)如下:ORG 0000HAJMP MAINORG 000BH ;T0的中断服务程序 CPL P1.5 RETI6.4.36.4.3工作方式工作方式2 2 【例6-6】ORG 001BH ;T1的中断服务程序 CPL P1.0 RETI ORG 0050HMAIN:SETB EA
26、;开中断 SETB ET0 SETB ET16.4.36.4.3工作方式工作方式2 2 【例6-6】MOV IP,#4 ;设置中断优先级MOV TMOD,#26H ;设置TMOD,T0方 ;式2计数,T1方式2定时MOV TL0,#250 ;设置计数初值MOV TH0,#250MOV TL1,#206MOV TH1,#2066.4.36.4.3工作方式工作方式2 2 【例6-6】SETB TR0;启动计数 SETB TR1;启动定时HERE:SJMP HERE END6.4.36.4.3工作方式工作方式2 2 【例6-6】本题中T1控制输出的脉冲是T0的计数脉冲,是引起T0中断的原因。如果两者
27、同时产生计数溢出,则应先响应T1的中断请求,即T1的优先级高于T0的优先级。定时器/计数器工作在方式2下,在计数溢出时具有初值自动加载功能,无需在中断服务程序中重载计数初值。中断服务程序的长度不超过8个字节时,直接在中断程序入口处编写中断服务程序即可,无需另外开辟中断程序服务区。6.4.4 工作方式定时器/计数器T0在方式3下是双8位计数器结构,定时器/计数器T1在方式3下停止计数。图6-4是定时器/计数器T0在方式3下的逻辑电路图。图6-8 T0在方式3下的逻辑电路图6.4.6.4.工作方式工作方式T0的低8位(TL0)在方式3下占用T0的控制位和引脚信号,成为一个8位的定时/计数器。其功能
28、和操作与方式0和方式1完全相同。6.4.6.4.工作方式工作方式T0的高8位(TH0)在方式3下借用T1的TR1和TF1,成为一个8位的定时器。这样,在方式3下,定时器/计数器T0就构成了两个8位的定时器和一个8位的计数器。6.4.6.4.工作方式工作方式如果定时器/计数器T0工作在方式3下,那么定时器/计数器T1只能工作于方式0、1、2下。由于没有TR1可用,只要为T1的计数寄存器装入初值,再设置好工作方式,T1就可以自动运行了。通常,只有当T1用作波特率发生器时,T0才会工作于方式3下。由于没有TF1可用,T1只能把计数溢出直接送给串行口。将T1的方式控制设置为方式3,T1就会停止计数。6
29、.5 6.5 定时器定时器/计数器的综合应用举例计数器的综合应用举例时间是控制系统中的一个重要参数。这一节有4个例题,都是很有用的题目。由于篇幅的原因,其内容转移到光盘,需要选用此例题可以查看光盘文件:定时器综合应用举例.DOC。这里只留下例题的内容说明。6.5 6.5 定时器定时器/计数器的综合应用举例计数器的综合应用举例【例6-7】编写一段程序,让P2口输出占空比为70%,频率为100Hz的矩形波,单片机晶振为6MHz。光盘提供Proteus仿真文件,运行仿真文件夹第6章LT6_7LT6_7.DSN,观察运行结果,并进一步分析源程序。图6-9 P2.X引脚输出的波形(仿真截图)6.5 6.
30、5 定时器定时器/计数器的综合应用举例计数器的综合应用举例分析:100Hz的方波周期:=1/100=0.01s=10ms。高电平时间为7ms,低电平为3ms,对于这种高、低电平不一致的波形,通常取出两个时间的相同单位时间作为定时器的定时时间,对不同电平采用不同的定时次数。本题可用1ms作为定时器的定时时间,高电平段定时7次,低电平段定时3次,定时器计数初值=65536-1000/2=65036=FE0CH源程序:(略)6.5 6.5 定时器定时器/计数器的综合应用举例计数器的综合应用举例【例6-8】由P3.4引脚(T0)输入一个低频脉冲信号(其频率=0.5KHz),当P3.4每发生一次负跳变脉
31、冲时,P1.0输出一个500s的同步脉冲,同时P1.1输出一个1ms同步正脉冲,晶振为6MHz。光盘提供Proteus仿真文件,运行仿真文件夹第6章LT6_8LT6_8.DSN,观察运行结果,并进一步分析源程序。6.5 6.5 定时器定时器/计数器的综合应用举例计数器的综合应用举例图6-10 例题6-8的波形图(仿真截图)6.5 6.5 定时器定时器/计数器的综合应用举例计数器的综合应用举例分析:按题意所示,初始P1.0输出高电平,初始P1.1输出低电平,T0采用方式2计数外部脉冲数(计一个脉冲,初始值为FFH),当加在P3.4上的外部脉冲负跳变时,T0加1,计数溢出,此时修改T0为500s定
32、时工作方式,并取反P1.0输出0,P1.1输出1。T0第一次定时500s溢出后,P1.0恢复为1;6.5 6.5 定时器定时器/计数器的综合应用举例计数器的综合应用举例T0第二次定时500s溢出后,P1.1恢复为0;T0恢复为对p3.4上外部脉冲计数;晶振频率为6MHz,工作方式2初值为256-500/2=6源程序:(略)6.5 6.5 定时器定时器/计数器的综合应用举例计数器的综合应用举例【例6-9】利用外部中断和T1,按钮每按一次计一次数,实现09计数循环显示。硬件连接如图6-5所示。光盘提供Proteus仿真文件,运行仿真文件夹第6章LT6_9LT6_9.DSN,观察运行结果,并进一步分
33、析源程序。6.5 6.5 定时器定时器/计数器的综合应用举例计数器的综合应用举例图6-11 09循环计数器 6.5 6.5 定时器定时器/计数器的综合应用举例计数器的综合应用举例分析:利用外部中断0中断实现计数值的显示,定时器T1外部计数,T1中断显示值清零;外部中断0中断和定时器T1外部计数同时发生,T1为高中断优先级。源程序:(略)6.5 6.5 定时器定时器/计数器的综合应用举例计数器的综合应用举例【例6-10】利用定时器T0产生时钟信号。这个程序的目的是为了练习用定时器产生实时时钟信号,此程序是自动打铃器程序的一部分,个别地方有改动,主要是不让一些其他功能影响定时器的思路。程序文件名是
34、:T0实时钟.ASM。6.5 6.5 定时器定时器/计数器的综合应用举例计数器的综合应用举例可以使用伟福纯软件仿真来观察程序的运行和所产生的时间信息。利用伟福软件打开这个程序,编译通过后,复位,全速运行,一小会之后,按暂停。软件界面下方有运行时间,然后比较在DATA窗口中地址为08H,09H,0AH,0BH等单元的数据所代表的时间,应该是相同的。注意,DATA窗口中的数据是16进制的。还要注意一点,把仿真器设置的晶振频率设置为6MHZ。程序中有几条指令前面打了分号,是不用的指令,保留在此的目的是与自动打铃器建立联系(见第十一章)。源程序:(略)6.5 6.5 定时器定时器/计数器的综合应用举例
35、计数器的综合应用举例当然,在例题6-10的基础之上,你还可以建立一个Proteus仿真项目,增加显示电路,编写显示程序,把时间显示出来,这样就更直观了。需要做的是,将08H0FH中的16进制时间数据转换成十进制数,还要再转换成显示器需要的代码(比如数码管需要字型码),然后送到显示器去显示,相信你能够办到。(参看仿真文件:T0实时钟.DSN)本章小结定时器/计数器T0有四种工作方式。T0在方式0下是13位的定时器/计数器;在方式1下是16位的定时器/计数器;在方式2下是8位的定时器/计数器,具有自动加载初值的功能;在方式3下的低8位是定时器/计数器,高8位是定时器。定时器/计数器1也有四种工作方
36、式,在方式0、1、2下的工作与定时器/计数器T0完全相同,在方式3下停止工作。定时器/计数器与CPU并行工作,提高了控制的效率。本章小结定时器/计数器T0、T1工作于定时模式还是计数模式,是否与外部事件有关,工作于方式0、1、2或是3,都由寄存器TMOD来决定。定时器/计数器的启动或是否计数溢出,由寄存器TCON来决定。定时器/计数器工作于中断方式还是查询方式,由寄存器IE、IP来决定。当定时器/计数器T0或T1计数溢出时,由硬件对TF0或TF1置1,在中断方式下向CPU请求中断服务,中断响应时TF0或TF1由硬件清0;也可以在不允许中断的时候查询TF0或TF1的状态,捕捉到计数溢出,然后由软件对TF0或TF1进行清0。本章小结对定时器/计数器的编程主要有三个步骤:设置TMOD,设置计数初值,启动计数。通过对定时器/计数器的学习,应达到以下要求:1掌握定时/计数的概念;定时器/计数器的构成和工作原理;2.掌握定时器/计数器的4种工作方式以及初始化步骤。本章到此结束谢谢观看!谢谢观看!