单片机原理与接口技术(第七版)课件 项目4 定时器_第1页
单片机原理与接口技术(第七版)课件 项目4 定时器_第2页
单片机原理与接口技术(第七版)课件 项目4 定时器_第3页
单片机原理与接口技术(第七版)课件 项目4 定时器_第4页
单片机原理与接口技术(第七版)课件 项目4 定时器_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

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

文档简介

DANPIANJIYUANLIYUJIEKOUJISHU单片机的定时器/计数器单片机原理与接口技术(第七版)“十四五”职业教育国家规划教材项目规划12电子秒表电路345认识定时器定时器/计数器的控制定时器/计数器的工作方式与应用举例6电子秒表的仿真调试和制作利用LED数码管显示时分秒。具有启动停止功能。项目规划利用单片机的定时器产生时分秒,使用6个LED数码管显示时间,精确到0.01秒。2个按键,实现计时的启动和停止功能,还有清零按键。项目规划

1.定时器/计数器的结构、工作方式、控制方法。

2.查询、中断编程。

3.定时器/计数器的应用(初始化、中断服务)。项目规划

1.使用软件设计电路图、编写并调试程序

2.使用工具制作电路板并测试其正确性

3.软硬件联调,完成要求功能项目规划参考样本:光盘仿真文件:电子秒表.DSN(包括电路和程序)这个项目比较简单,主要是定时器的使用。将来,还要在此基础之上增加功能,比如带日历的时钟,定时控制器,自动打铃器等。项目规划电子秒表电路任务4.1

●电子秒表电路电子秒表可以用数字电路设计制作,但是所用元件数量大,电路麻烦,改进功能的时候需要改变电路。单片机做的电子秒表,电路相对简单,改进也容易。●电子秒表电路4.1.16位数码管显示电路下图是电子秒表电路,看起来像是见过。对,基本上与产品计数器相同,显示电路就是原样,改成了2个按钮,为了控制用。●电子秒表电路4.1.2电子秒表的驱动程序驱动程序:;T0方式1中断练习;电子秒表.ASM;此程序是自动打铃器程序的一部分,个别地方有改动;F=6MHZ;T0方式1,定时,0.01秒;T0中断允许,高优先;主程序使用工作寄存器第0组,T0中断使用第1组

汇编语言程序点此进入最好是打开proteus项目,运行一下,看看效果,然后开始学习定时器、计数器。项目名称:电子秒表.DSN认识定时器--计数与定时任务4.2

●认识定时器

MCS-51系列单片机定时器/计数器的功能是用来实现定时、计数,还可以利用定时、计数的结果进行控制。下图是51系列单片机定时器/计数器的内部结构图。

8051内部有两个16位可编程的定时器/计数器T0和T1。T0(T1)由两个8位寄存器TH0(TH1)和TL0(TL1)拼装而成。其中TH0(TH1)为高8位,TL1(TH1)为低8位。注意:MCS-51系列单片机的定时器/计数器与CPU并行工作,提高了单片机的工作效率。●认识定时器T0和T1就是2个16位的受控制的加法计数器,根据计数脉冲的来源不同,分为2种工作模式----定时/计数。●认识定时器4.2.1计数计数就是对来自单片机外部的脉冲进行计数。单片机的P3.4(T0)和P3.5(T1)即为外部计数脉冲的输入端。所谓计数,就是对有效计数脉冲的计数。注意:51系列单片机的两个定时器/计数器采用加法计数结构。

单片机的硬件在每个机器周期自动对P3.4(T0)和P3.5(T1)进行采样,若在一个机器周期采样到高电平,在下一个机器周期采样到低电平,即得到一个有效的计数脉冲。计数寄存器在下一个机器周期自动加1。注意:在计数方式下,单片机的计数源是外部计数脉冲。思考:为实现单片机的计数功能,对计数脉冲的高、低电平持续时间有什么要求?思考:为实现最大计数次数,单片机的计数初值应设置为多少?●认识定时器4.2.2定时

MCS-51系列单片机中的计数器除了可以作为外来脉冲计数器之用外,还可以对来自单片机内部的计数脉冲进行计数,这就是定时。定时可以完成时钟功能。注意:在定时模式下,51系列单片机的计数脉冲源是晶振频率的12分频产生的脉冲。其实,说白了,定时模式下,就是一个机器周期计数值加1思考:定时模式下,晶振频率为12MHz时,计数脉冲的时间间隔为多少?定时器/计数器的控制任务4.3

●定时器/计数器的控制定时方式寄存器TMOD是单片机专门用来控制两个定时器/计数器的工作方式的寄存器,字节地址89H,不能位寻址,没有位地址。这个寄存器的各位定义如下:位序号76543210位符号GATEC/TM1M0GATEC/TM1M0说明定时器/计数器1

定时器/计数器0●定时器/计数器的控制下面先介绍与定时器/计数器T0相关的TMOD的低4位。高4位管T1,与T0对应相同功能。

GATE——门控位。由图4-3可以看出:

GATE=0时,由TR0来启动定时/计数;

GATE=1时,由TR0和(P3.2)共同启动定时/计数,只有当二者同时为1时才进行计数操作。

——定时/计数模式选择位。

=0时,处于定时模式,内部计数脉冲是对晶振进行12分频产生的;

=1时,处于计数模式,外部计数脉冲由T0(P3.4)引入。位序号76543210位符号GATEC/TM1M0GATEC/TM1M0说明定时器/计数器1

定时器/计数器0●定时器/计数器的控制

M1、M0——工作方式选择位。

M1、M0与定时器/计数器T0的四种工作方式有下面的对应关系:

00——工作方式0 01——工作方式1 10——工作方式2 11——工作方式3

TMOD对定时器/计数器T1的控制与对T0的控制类似,此时,门控位GATE所控制的定时/计数启动由TR1和(P3.3)共同参与完成。

TMOD对定时器/计数器的控制由软件进行设定,大大提高了控制的灵活性。位序号76543210位符号GATEC/TM1M0GATEC/TM1M0说明定时器/计数器1

定时器/计数器0●定时器/计数器的控制4.3.2定时控制寄存器TCON定时控制寄存器TCON既参与中断控制又参与定时控制。低4位与中断有关,高4位与定时控制功能有关。

TCON的高四位进行定时/计数控制,其中高两位(6、7位)控制定时器/计数器1,低两位(4、5位)控制定时器/计数器0。位序76543210位地址8FH8EH8DH8CH8BH8AH89H88H位名称TF1TR1TF0TR0IE1IT1IE0IT0●定时器/计数器的控制4.3.2定时控制寄存器TCON

TF0(TCON.5)——定时器/计数器T0的溢出中断标志位,当T0定时(或者计数)结束时,由硬件自动置1。

TF1(TCON.7)——定时器/计数器T1的溢出中断标志位,当T1定时(或者计数)结束时,由硬件自动置1。

TR0(TCON.4)——定时器/计数器T0的启动停止控制位,由软件进行设定。TR0=0,停止T0定时(或者计数);TR0=1,启动T0定时(或者计数)。

TR1(TCON.6)——定时器/计数器T1的启动停止控制位,由软件进行设定。TR1=0,停止T1定时(或者计数);TR1=1,启动T1定时(或者计数)。位序76543210位地址8FH8EH8DH8CH8BH8AH89H88H位名称TF1TR1TF0TR0IE1IT1IE0IT0●定时器/计数器的控制4.3.3定时器/计数器工作原理●定时器/计数器的控制4.3.3定时器/计数器工作原理当=0时,为定时工作模式,计数脉冲是晶振的12分频。

当=1时,为计数工作模式,外部计数脉冲由Ti(P3.(i+4))引入。当GATE=0时,或门输出为高电平,与引脚(P3.(2+i))无关。此时与门的输出仅由TRi决定。TRi=1,与门输出高电平,接通模拟控制开关,引入计数脉冲,进行定时/计数操作。TRi=0,与门输出低电平,断开模拟控制开关,定时/计数停止。定时器/计数器工作原理如图所示。●定时器/计数器的控制4.3.3定时器/计数器工作原理当GATE=1时,或门的输出由引脚(P3.(2+i))决定,因此与门的输出由TRi和引脚(P3.(2+i))共同决定。若TRi=1,而(P3.(2+i))为高电平,则与门输出高电平,接通模拟控制开关,进行定时/计数;若TRi=1,而(P3.(2+i))为低电平,则定时/计数停止。当模拟控制开关接通时,计数寄存器在计数脉冲的作用下进行增1计数,当计数溢出时向计数溢出标志位TFi进位。●定时器/计数器的控制4.3.4定时器/计数器的编程方式1、中断方式编程定时器/计数器在中断方式下的编程步骤如下:(1)开中断(2)设置中断优先级(3)TMOD初始化(4)设置定时/计数初值(5)启动定时/计数(6)编写定时/计数中断处理程序以上6条,1~5称为初始化部分,一般放在主程序中执行,第6条是中断服务程序,要单独编写。●定时器/计数器的控制4.3.4定时器/计数器的编程方式2、查询方式编程定时器/计数器在查询方式下的编程步骤如下:(1)关中断 (2)TMOD初始化(3)设置定时/计数初值(4)启动定时/计数(5)查询TFi及相关处理这里的5条不涉及中断。查询需要耗费比较多的CPU资源。定时器/计数器的工作方式与应用举例任务4.4

●定时器/计数器的控制定时器/计数器的工作方式,由TMOD的M1M0决定:重述如下:M1、M0——工作方式选择位。 00——工作方式0:13位计数器 01——工作方式1:16位计数器 10——工作方式2:自动重装初值的8位计数器 11——工作方式3:对于T0,分解为2个8位计数器,对于T1,停止下面分别介绍其工作特点和应用举例。位序号76543210位符号GATEC/TM1M0GATEC/TM1M0说明定时器/计数器1

定时器/计数器0●工作方式与应用举例4.4.1工作方式0定时器/计数器T0和T1在方式0下的工作情况完全相同。此时的计数寄存器为13位,构成如下:方式0下的计数溢出值为8192(213)。则:计数次数=8192-计数初值(公式4-1)定时时间=(8192-计数初值)×机器周期(公式4-2)THi7~0

TLi4~0●工作方式与应用举例4.4.1工作方式0

方式0没有充分利用16位计数寄存器的计数范围,这是为了与MCS-48系列单片机兼容。13位的计数寄存器的初始化有些烦琐,步骤如下:(1)由公式4-1和4-2计算出十进制的计数初值。(2)若计数初值小于32(25),将其送入TLi,将0送入THi,完成计数寄存器初始化。(3)若计数初值不小于32,先将其转化为二进制形式。补足13位后,将低5位送入TLi,将高8位送入THi,完成计数寄存器初始化。

●工作方式与应用举例4.4.1工作方式0

【技能训练4-1】T0方式0定时设fosc=6Mhz,定时器/计数器T0以工作方式0定时2ms,编写初始化程序。说明:fosc即为晶振频率。首先计算计数初值。根据公式4-2有: 定时时间=(8192-计数初值)×12/fosc 计数初值=8192-定时时间×fosc/12 =8192-2000×6Mhz/12 =7192=1C18H=11100000

11000B将此二进制数补足13位数(不够13位前面加0,这个例子够了,不用补),将高8位送给TH0,将低5位送TL0即可。

●工作方式与应用举例4.4.1工作方式0【技能训练4-1】T0方式0定时设fosc=6Mhz,定时器/计数器T0以工作方式0定时2ms,编写初始化程序。(续)高8位是:11100000B=E0H送给TH0低5位是:11000B=00011000B=18H送给TL0设置TMOD。对T0的工作方式进行选择,因此设置TMOD的低4位。定时,为0;方式0,M1M0的组合为00;与外部控制无关,GATE为0。

●工作方式与应用举例4.4.1工作方式0【技能训练4-1】T0方式0定时设fosc=6Mhz,定时器/计数器T0以工作方式0定时2ms,编写初始化程序。(续)初始化程序如下:MOVTMOD,#00H ;设置TMODMOVTH0,#0E0H ;设置计数初值MOVTL0,#18HSETBTR0 ;启动定时由于方式0可以由方式1完全替代,故不多述。如要仿真,可以在方式1的基础上改一下就可以了。

●工作方式与应用举例4.4.2工作方式1

定时器/计数器T0和T1在方式0下的工作情况完全相同。此时的计数寄存器为16位,构成如下:方式1下的计数溢出值为65536(216)。则:计数次数=65536-计数初值(公式4-3)定时时间=(65536-计数初值)×机器周期(公式4-4)

THi7~0

TLi7~0●工作方式与应用举例4.4.2工作方式1方式1利用了全部16位计数寄存器的计数范围,计数寄存器的初始化步骤如下:(1)由公式4-3和4-4计算出十进制的计数初值。(2)若计数初值小于256(28),将其送入TLi,将0送入THi,完成计数寄存器初始化。(3)若计数初值不小于256,将其转化为十六进制形式,再将高低字节分别送入THi和TLi,完成计数寄存器初始化。【技能训练4-2】T0方式1定时--产生方波目的:定时器方式1的使用内容:设fosc=12MHz,定时器/计数器0以工作方式1实现在P2口8个引脚产生频率为250Hz的等宽方波。参考文件:proteus仿真文件:T0方式1定时方波.DSN。图4-4P2.X引脚输出的方波(仿真截图)4.4.2工作方式1【技能训练4-2】T0方式1定时--产生方波操作步骤:1.首先计算计数初值。要求方波频率为250Hz,则周期为4ms。即P2口8个引脚每2ms取反一次,定时时间为2ms。计算计数初值。根据公式6-4有: 定时时间=(65536-计数初值)×12/fosc

计数初值=65536-定时时间×fosc/12 =65536-2000×12Mhz/12 =63536=0F8

30H4.4.2工作方式1【技能训练4-2】T0方式1定时--产生方波操作步骤:2.设置TMOD。对T0的工作方式进行选择,因此设置TMOD的低4位。定时,为0;方式1,M1M0的组合为01;不用外部控制,GATE为0。4.4.2工作方式14.4.2工作方式1【技能训练4-2】T0方式1定时--产生方波

操作步骤:3.编制程序(查询方式)如下:;T0方式1定时方波.ASM,Fosc=12MHz,P2口输出;查询编程

ORG 0000H AJMP MAIN ORG 0050HMAIN:MOV A,#00h CLR EA ;关中断

MOV TMOD,#01H;设置TMOD MOV TH0,#0F8H;设置计数初值

MOV TL0,#30H SETB TR0;启动定时WAIT:JNB TF0,WAIT;查询溢出标志

CLR TF0 ;注意:将TF0软件清0 MOV TH0,#0F8H;重装初值

MOV TL0,#30H CPL A;取反

MOV P2,A;P2口输出

SJMP WAIT;无条件转移,无限循环

END4.4.2工作方式1【技能训练4-2】T0方式1定时--产生方波操作步骤:4.设计电路为了观看仿真时,P2口输出波形,要用到proteus软件。电路图如下:图4-5T0方式1定时产生方波的电路图4.4.2工作方式1【技能训练4-2】T0方式1定时--产生方波操作步骤:图中右上角的就是模拟示波器,4踪。仿真时可以出现示波器界面,可以对其操作。操作方法与一般示波器相同。图中最下部的是个频率计,运行仿真时可以显示测量到的方波的频率值。添加这2个虚拟仪器的方法是,在软件左边点击虚拟仪器图标,选择第一个就是虚拟示波器,第三个就是频率计。把虚拟示波器的输入端接到P2口的任意引脚,虚拟频率计也可以将输入端接入P2口任意引脚。在这幅图里,采用网络标号的形式接线,看起来图面整洁一点。4.4.2工作方式1

【技能训练4-2】T0方式1定时--产生方波操作步骤:

5.添加程序按照给定的程序,输入到文件,在proteus软件里,添加进来,编译,不出错就OK了。

6.仿真运行单击运行按钮,出现的情况大致如图4-6所示。前面的图4-4就是其中的一部分。调整图中虚拟示波器的调节开关和旋钮,可以改变示波器显示的图形,但是,波形参数都是一样的。4.4.2工作方式1

【技能训练4-2】T0方式1定时--产生方波

操作步骤:图4-6T0方式1定时产生方波时仿真截图(暂停状态)

4.4.2工作方式1【技能训练4-2】T0方式1定时--产生方波操作步骤:7.观察波形计算频率,验证符合题目要求。这次训练,主要是定时器的使用,表现在程序设计上。首先是初始化,然后就是反复查询,时间到就执行要求的操作。还要学会使用虚拟示波器,并得出波形参数,验证程序的正确性。提示:关于定时器中断方式编程,可以参看仿真文件:T0方式1中断.DSN关于定时器计数初值的另一种情况:要求的定时时间大于定时器最大定时时间。这时就要把要求的定时时间分成几次定时来实现。例如要求定时1秒,就可以设置定时器每次定时0.1秒,执行10次就是1秒。4.4.2工作方式1

【技能训练4-2】T0方式1定时--产生方波操作步骤:图4-6T0方式1定时产生方波时仿真截图(暂停状态)4.4.2工作方式1

【技能训练4-2】T0方式1定时--产生方波操作步骤:7.观察波形计算频率,验证符合题目要求。这次训练,主要是定时器的使用,表现在程序设计上。首先是初始化,然后就是反复查询,时间到就执行要求的操作。还要学会使用虚拟示波器,并得出波形参数,验证程序的正确性。提示:关于定时器中断方式编程,可以参看仿真文件:T0方式1中断.DSN关于定时器计数初值的另一种情况:要求的定时时间大于定时器最大定时时间。这时就要把要求的定时时间分成几次定时来实现。例如要求定时1秒,就可以设置定时器每次定时0.1秒,执行10次就是1秒。4.4.2工作方式1

【技能训练4-3】T0方式1定时产生周期为2秒的方波(定时时间超过定时器1次定时时间)目的:定时器方式1的编程内容:设fosc=6MHz,编程实现以定时器/计数器T0方式1定时控制在P2口8个引脚产生周期为2s的方波。4.4.2工作方式1

【技能训练4-3】T0方式1定时产生周期为2秒的方波(定时时间超过定时器1次定时时间)目的:定时器方式1的编程内容:设fosc=6MHz,编程实现以定时器/计数器T0方式1定时控制在P2口8个引脚产生周期为2s的方波。4.4.2工作方式1

【技能训练4-3】T0方式1定时产生周期为2秒的方波(定时时间超过定时器1次定时时间)目的:定时器方式1的编程内容:设fosc=6MHz,编程实现以定时器/计数器T0方式1定时控制在P2口8个引脚产生周期为2s的方波。4.4.2工作方式1

【技能训练4-3】T0方式1定时产生周期为2秒的方波(多次定时)操作步骤:1.首先计算定时时间。方波周期为2s。即P2口8个引脚每1s取反一次,定时时间为1s。2.计算计数初值。根据公式4-4有:定时时间=(65536-计数初值)×12/fosc计数初值=65536-定时时间×fosc/12=65536-1000000×6Mhz/12=65536-500000<0这里,要求定时时间大于计数器最大定时时间,说明定时不能一次完成。考虑到500000=50000×10,设一次计数次数为50000,则

计数初值=65536-50000=15536=3C

B0H这样的定时需要10次才能完成题目的要求,每次定时0.1秒。4.4.2工作方式1

【技能训练4-3】T0方式1定时产生周期为2秒的方波(定时时间超过定时器1次定时时间)3.设置TMOD。对T0的工作方式进行选择,因此设置TMOD的低4位。定时,为0;方式0,M1M0的组合为01;不用外部控制,GATE为0。4.编制程序(中断方式)如下:ORG 0000HAJMP MAINORG 000BHAJMP SFT0ORG0050HMAIN: MOV A,#00H4.4.2工作方式1

【技能训练4-3】T0方式1定时产生周期为2秒的方波(定时时间超过定时器1次定时时间)4,编制程序(中断方式)如下:(续)MAIN:MOV A,#00H;主程序开始

SETBEA;开中断

SETBET0MOVIP,#0 ;设置中断优先级

MOVTMOD,#01H;设置TMOD,T0工作方式1,定时

MOVTH0,#3CH;设置计数初值

MOVTL0,#0B0HMOVR7,#10 ;设置定时次数

SETBTR0 ;启动定时

SJMP$;主程序结束4.4.2工作方式1

【技能训练4-3】T0方式1定时产生周期为2秒的方波(定时时间超过定时器1次定时时间)4,编制程序(中断方式)如下:(续)ORG0100HSFT0:MOVTH0,#3CH ;注意:重新设置计数初值

MOVTL0,#0B0HDJNZR7,WAIT ;定时不够1s则等待

MOVR7,#10CPLAMOVP2,AWAIT:RETIEND注意:这里使用中断方式编程。5.设计proteus项目利用技能训练4-2的电路,改变程序即可。其余步骤略。仿真结果如图4-7所示。参考文件:T0方式1中断A.DSN。4.4.2工作方式1

【技能训练4-4】T0方式1定时测脉宽目的:定时器外部控制的应用内容:设fosc=12MHz,编程测试引入的外部脉冲信号的高电平宽度(机器周期数)。操作步骤:

1.分析:外部脉冲来自P3.2,应由T0的外部控制电路进行定时。测试P3.2的高电平宽度,即高电平时进行定时,低电平时停止定时,应设置T0的门控位GATE为1。T0用来累加高电平的宽度,计数初值为0,应选择计数范围大的工作方式,令其方式1定时;4.4.2工作方式1

【技能训练4-4】T0方式1定时测脉宽2.编制程序(查询方式,部分程序):ORG 0000HAJMPMAINORG0050HMAIN:CLREX0CLRET0MOVTMOD,#9;T0方式1,Gate=1MOVTH0,#0;计数器清0MOVTL0,#0 W1:JBP3.2,W1;让过高电平

SETBTR0 ;启动定时计数W2:JNBP3.2,W2;等候上升沿,自动启动计数W3:JBP3.2,W3;定时计数

CLRTR0 ;停止定时计数

MOV30H,TL0;将脉冲宽度存入在31H、30H寄存器中

MOV31H,TH0…其余内容参看仿真文件:测脉宽.DSN4.4.3工作方式2由于每次定时/计数之后计数寄存器的内容为0,在下一次定时/计数后都要进行初值重载。在方式0和方式1中,初值重载是由软件实现的。如果需要多次进行定时/计数,则需占用较多CPU时间。定时器/计数器在方式2下可由硬件自动实现初值重载。T0和T1在方式2下为8位定时器/计数器,二者的工作情况相同。由TLi充当计数寄存器,由THi充当初值重载寄存器,如图4-8所示。4.4.3工作方式2在方式2下,当低8位计数器产生计数溢出时,一方面会把溢出信号写入TFi,一方面会启动THi自动为TLi赋初值。TFi

TLi7~0

THi7~0图4-8定时器/计数器方式2下的初值重载4.4.3工作方式2方式2下的计数溢出值为256(28)。则:计数次数=256-计数初值 (公式4-5)定时时间=(256-计数初值)×机器周期(公式4-6)方式2只利用了低8位计数寄存器,因此计数初值一定小于256,计数器的初始化步骤如下:(1)由公式4-5和4-6计算出十进制的计数初值。(2)将计数初值送入TLi,也将其送入THi,完成计数寄存器初始化。工作方式2通常用于波特率发生器(我们将在串行接口中讲解)。

注意:方式2下计数初值既要送入TLi,也要送入THi。4.4.3工作方式2【技能训练4-5】T0T1方式2目的:方式2应用

内容:设fosc=12MHz,T0方式2计数,T1方式2定时。编程实现利用T1定时在P1.0脚输出频率为10kHz的方波;将P1.0上的输出信号,利用T0进行12分频后在P1.5脚输出。就是将P1.0输出的脉冲作为T0的计数脉冲。

操作步骤:1.首先计算T1定时时间。 P1.0脚上输出的方波频率为10kHz,则周期为0.1ms。即P1.0引脚每50μs取反一次,定时时间为50μs。4.4.3工作方式2【技能训练4-5】T0T1方式2操作步骤:2.计算T1计数初值。 根据公式4-6有: T1的定时时间=(256-T1的计数初值)×12/foscT1的计数初值=256-T1的定时时间×fosc/12=256-50×12Mhz/12=206=0CEH3.计算T0计数初值P1.5脚的方波为对P1.0脚方波的12分频,即P1.5脚的方波周期为P1.0脚方波周期的12倍,即P1.0脚每输出6个脉冲,P1.5脚取反一次。根据公式4-5有:T0的计数初值=256-T0的计数次数

=256-6=2504.4.3工作方式2【技能训练4-5】T0T1方式2操作步骤:4.设置TMOD。T0方式2计数,不用外部控制,TMOD的低4位为0110;T1方式2定时,不用外部控制,TMOD的高4位为0010。5.编制程序(中断方式)如下:

ORG 0000H AJMP MAIN ORG 000BH ;T0的中断服务程序②

CPL P1.5 RETI ORG 001BH ;T1的中断服务程序③

CPL P1.0 RETI ORG 0050H4.4.3工作方式2【技能训练4-5】T0T1方式2操作步骤:5.编制程序(中断方式)如下:(续)ORG 0050HMAIN:SETB EA ;开中断SETB ET0SETB ET1MOVIP,#8 ;设置中断优先级①MOVTMOD,#26H ;设置TMOD,T0方式2计数,T1方式2定时MOVTL0,#250 ;设置计数初值MOVTH0,#250MOVTL1,#206MOVTH1,#206SETBTR0 ;启动计数SETBTR1 ;启动定时HERE:SJMPHERE END4.4.3工作方式2【技能训练4-5】T0T1方式2

操作步骤:6.设计proteus项目光盘提供proteus仿真文件,仿真文件夹\T0T1方式2.DSN,观察运行结果。图4-9P1.0和P1.5引脚输出的方波(仿真截图)思考:如果要求P1.5的输出是P1.0频率的10分频,如何修改程序?4.4.4工作方式3定时器/计数器T0在方式3下是双8位计数器结构,定时器/计数器T1在方式3下停止计数。T0的低8位(TL0)在方式3下占用T0的控制位和引脚信号,成为一个8位的定时/计数器。其功能和操作与方式0和方式1完全相同。图4-10定时器/计数器T0在方式3下的逻辑电路图4.4.4工作方式3

【T0的高8位(TH0)在方式3下借用T1的TR1和TF1,成为一个8位的定时器。这样,在方式3下,定时器/计数器T0就构成了一个8位的定时器/计数器和一个8位的定时器。如果定时器/计数器T0工作在方式3下,那么定时器/计数器T1只能工作于方式0、1、2下。由于没有TR1可用,只要为T1的计数寄存器装入初值,再设置好工作方式,T1就可以自动运行了。通常,只有当T1用作波特率发生器时,T0才会工作于方式3下。由于没有TF1可用,T1只能把计数溢出直接送给串行口。将T1的方式控制设置为方式3,T1就会停止计数。电子秒表的仿真调试和制作任务4.5

时间是控制系统中的一个重要参数。定时器的应用也就很重要。这里的几个应用举例也只是很小的一部分。光盘里还有几个关于定时器计数器的应用项目,需要的可以查看光盘文件。现在以电子秒表为例,说明一个定时器的具体应用。●电子秒表的仿真调试和制作

4.5.1设计思路硬件设计思路电子秒表可以随时启动和停止,停止时显示计时值,再启动继续计时。按清零按钮,清除显示值。计时精度,一般精确到0.01秒即可,因为操作的人反应不可能再快。关于硬件设计,按照上述要求,设计了本项目开头的电子秒表电路。电路图见图。总共6位数,最高2位是分,中间2位是秒,最后2位是秒的小数部分。

2个按键,一个启动停止,另一个清零。数码管和按键电路已经多次使用,不必细说。●电子秒表的仿真调试和制作

4.5.1设计思路软件设计思路关于软件设计,我们到现在应该有很多共同语言了,说说程序设计思路和说明:基本思路就是让定时器T0定时10ms,时间到就中断,将中断次数记录起来作为时间单位,100个就是1秒,60个1秒就是1分钟。定时器T0启动/停止的最后控制权交给外部引脚INT0(P3.2)。随时将记录的分、秒数送给显示器(数码管)。不需要现有的显示数就清零。●电子秒表的仿真调试和制作

4.5.1设计思路

软件设计思路关于软件设计,我们到现在应该有很多共同语言了,说说程序设计思路和说明:基本思路就是让定时器T0定时10ms,时间到就中断,将中断次数记录起来作为时间单位,100个就是1秒,60个1秒就是1分钟。定时器T0启动/停止的最后控制权交给外部引脚INT0(P3.2)。随时将记录的分、秒数送给显示器(数码管)。不需要现有的显示数就清零。●电子秒表的仿真调试和制作

4.5.1设计思路

程序的具体说明:(可能涉及一些指令知识,如有遗忘请参看附录有关部分)分隔线1~分隔线2:定义2个字节内部RAM,相当于变量,存储T0时间常数。这样做的好处是,将来可以在使用过程中修改这些值。分隔线2~分隔线3:定义2个字节的内部RAM,作为临时变量,本程序中

温馨提示

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

评论

0/150

提交评论