MCS-51单片机的定时器计数器课件_第1页
MCS-51单片机的定时器计数器课件_第2页
MCS-51单片机的定时器计数器课件_第3页
MCS-51单片机的定时器计数器课件_第4页
MCS-51单片机的定时器计数器课件_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

一、MCS-51单片机定时器/计数器组成:定时器/计数器0(T0):16位的加计数器定时器/计数器1(T1):16位的加计数器二、定时器/计数器的功能对外部输入信号的计数功能。定时器/计数器0(T0)的外来脉冲输入端为P3.4;定时器/计数器1(T1)的外来脉冲输入端为P3.5。定时功能。定时器/计数器的定时功能也是通过计数实现的,它的计数脉冲是由单片机的片内振荡器输出经12分频后产生的信号,即为对机器周期计数。3.3MCS-51单片机的定时器/计数器(一)一、MCS-51单片机定时器/计数器组成:3.3MCS-51MCS-51单片机定时器/计数器逻辑结构图T1由TH1、TL1构成,字节地址为8DH、8BHT0由TH0、TL0构成,字节地址为8CH、8AHTCON则用于控制定时计数器T0和T1的启动和停止计数,同时管理定时器T0和T1的溢出标志等。特殊功能寄存器TMOD控制定时计数器的工作方式MCS-51单片机定时器/计数器逻辑结构图T1由TH1、TL2定时器/计数器的控制主要是通过以下几个寄存器实现的:TCON---定时器/计数器控制寄存器TMOD---定时器/计数器工作方式控制寄存器IE---中断允许控制寄存器定时器/计数器的控制定时器/计数器的控制主要是通过以下几个寄存器实现的:定时器/3TMOD89HD7D6D5D4D3D2D1D0GATA

M1M0GATAM1M0←T1方式字段→←T0方式字段→GATE——门控位。GATE=0启动不受/INT0或/INT1的控制;GATE=1启动受/INT0或/INT1的控制。

C/T——外部计数器/定时器方式选择位C//T=0定时方式;C//T=1计数方式。

M1M0——

工作模式选择位(编程可决定四种工作模式)。

TMOD89HD7D6D5D4D3D2D1D0GATA4=0——定时;=1——对外计数。定时:fosc/12=1/(12/fosc)=1/T

N个方波T计数:脉冲不等间隔。

波形等间隔,次数已定,时间确定即对机器周期进行计数。

左图定时时间为N*T每个下降沿计数一次

确认一次负跳变需两个机器周期,

所以,计数频率最高为fosc/24。

=0——定时;=15TCON88HD7D6D5D4D3D2D1D0TF1TR1TF0TR0TR0——定时/计数器0运行控制位。

软件置位,软件复位。

TR1——定时/计数器1运行控制位。(用法与TR0类似)

TF0、TF1分别是定时、计数器T0、T1的溢出标志位。TCON88HD7D6D5D4D3D2D1D0TF16(1)定时/计数器的工作方式M1M0——工作模式选择位(编程可决定四种工作模式)0013位定时/计数器模式00116位定时/计数器模式108位定时/计数器(自动重装初值)模式211T08位定时/计数模式311T1停止工作模式3

(1)定时/计数器的工作方式M1M0——工作模式选择位(编71)工作方式0T0的等效逻辑结构1)工作方式0T0的等效逻辑结构8在计数工作方式下,计数器的计数值范围是:

1~8192(2的13方)当为定时工作方式时,定时时间的计算公式为:

(8192-计数初值)×晶振周期×12或

(8192-计数初值)×机器周期其时间单位与晶振周期或机器周期相同。如果单片机的晶振选为6.000MHz,则最小定时时间为:

[8192—(8192—1)]×1/6×10-6×12=2×10-6(s)=2(us)最长定时时间为:

(8192—0)×1/6×10-6×12=16384×10-6(s)=16384(us)。在计数工作方式下,计数器的计数值范围是:92)工作方式1T0的等效逻辑结构2)工作方式1T0的等效逻辑结构10在工作方式1下,计数器的计数值范围是:

1~65536(2的16方)当为定时工作方式1时,定时时间的计算公式为:

(65536—计数初值)×晶振周期×12或

(65536—计数初值)×机器周期其时间单位与晶振周期或机器周期相同。如果单片机的晶振选为6.000MHz,则最小定时时间为:

[65536—(65536—1)]×1/6×10-6×12=2×10-6(s)=2(us)最长定时时间为:

(65536—0)×1/6×10-6×12=131072×10-6(s)=131072(us)。在工作方式1下,计数器的计数值范围是:113)工作方式2T0的等效逻辑结构3)工作方式2T0的等效逻辑结构12方式2与方式0、1的区别:工作方式0和工作方式1的最大特点就是计数溢出后,计数器为全0,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度。工作方式2就具有自动重装载功能,即自动加载计数初值,所以也有的文献称之为自动重加载工作方式。在这种工作方式中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载。方式2在串口通讯时,常用作波特率发生器。方式2与方式0、1的区别:134)工作方式34)工作方式314

如果定时/计数器0工作于工作方式3,那么定时/计数器1的工作方式就因为自己的一些控制位已被定时/计数器0借用,只能工作在方式0、方式1或方式2下,等效电路参见下图:

如果定时/计数器0工作于工作方式3,那么定时/计数器152.怎样编制计数程序?首先必须对定时计数器进行初始化,然后再开启定时或计数。简单的总结一下,定时计数器的初始化包括以下内容。(1)确定工作方式——对TMOD赋值;如:任务中的MOV TMOD,#06H指令,设定T0为计数器工作方式。(2)预置定时计数器中计数的初值——直接写入TH和TL;如:任务中的MOVTH0,#00H两条指令,设定计数初值。 MOV TL0,#00H2.怎样编制计数程序?首先必须对定时计数器进行初始化,然16(3)根据需要开放定时器/计数器的中断——对IE位赋值;(4)启动定时器/计数器;如:任务中的SETBTR0指令初值的计算方法X=M-计数值M是定时器的最大计数值。视工作方式不同而不同。工作方式0:13位定时/计数方式,因此,最多可以计到2的13次方,也就是8192次。工作方式1:16位定时/计数方式,因此,最多可以计到2的16次方,也就是65536次。工作方式2和工作方式3:都是8位的定时/计数方式,因此,最多可以计到2的8次方,也说是256次。(3)根据需要开放定时器/计数器的中断——对IE位赋值;17预置值计算:用最大计数量减去需要的计数次数即可。通过上面的任务,我们掌握了计数程序的编制方法,下面我们再看看定时程序怎样编制。首先我们看一下下面的程序段。 MOVTMOD,#01H MOV TL0,#00H MOVTH0,#4CH SETB TR0以上程序是任务一中的定时程序段,它的初始化过程和计数方式类似。预置值计算:用最大计数量减去需要的计数次数即可。18MCS-51单片机的定时器/计数器应用举例:利用定时器/计数器实现固定时间的定时利用定时器/计数器实现对外来信号脉冲的计数利用定时器/计数器实现对外来信号脉冲信号脉宽的测量

MCS-51单片机的定时器/计数器(二)

MCS-51单片机的定时器/计数器应用举例:MCS-51单19实例一:定时器/计数器实现固定时间的定时题目:利用T0,使用工作方式0,在单片机的P1.0输出一个周期为2ms,占空比为1:1的方波信号。解:周期为2ms,占空比为1:1的方波信号,只需要利用T0产生定时,每隔1ms将P1.0取反即可。编程步骤:计算TMOD的值由于GATE=0;M1M0=00;C/T=0;所以(TMOD)=00H计算初值(单片机振荡频率为12MHZ)所需要的机器周期数:n=(1000us/1us)=1000计数器的初始值:

X=8192-1000=7192所以:(TH0)=0E0H,(TL0)=18H实例一:定时器/计数器实现固定时间的定时20中断入口地址重新给T0赋初值P1.0取反中断返回主程序:中断程序:开始启动T0设置堆栈地址设置TMOD方式送定时器初值开T0中断等待流程图中断入口地址重新给T0赋初值P1.0取反中断返回主程序:中断213:程序清单ORG4000HLJMPMAINORG400BH;T0中断入口地址LJMPSER;中断服务程序MAIN:MOVSP,#50H;开辟堆栈

MOVTMOD,#00H;工作方式设置MOVTH0,#0E0H;初始值设置MOVTL0,#18HSETBEA;开中断SETBET0;开T0中断SETBTR0;运行T0HERE:SJMP$;等待中断SER:CPLP1.0;定时到,输出取反

MOVTH0,#0E0H;重新加载初战值MOVTL0,#18HRETI;中断返回END中断程序的主程序和中断服务程序的布局定时器初始化开定时器中断主程序中断服务程序3:程序清单中断程序的主程序和中断服务程序的布局定时器初始化22

实例二:利用方式1定时题目:用定时器T1,使用工作方式1,在单片机的P1.0输出一个周期为2分钟、占空比为1:1的方波信号。解:周期为2分钟,占空比为1:1的方波信号,只需要利用T1产生定时,每隔1分将P1.0取反即可。由于定时器定时时间有限,设定T1的定时为50ms,软件计数1200次,可以实现1分钟定时。编程步骤:1、计算TMOD的值由于:GATE=0;M1、M0=0、1;C/T=0;所以:(TMOD)=10H2、计算初值(单片机的振荡频率为12MHZ)所需要的机器周期数:n=(50000us/1us)=50000计数器的初始值:X=65536-50000=15536

所以:(TH0)=3CH;(TL0)=0B0H实例二:利用方式1定时23主程序:中断程序:中断入口地址P1.0取反中断返回重装初值(20H)-1=0?20H单元赋值20(21H)-1=0?21H单元赋值60NNYY开始设置堆栈地址设置TMOD方式启动T0等待计数单元赋值(20H,21H)送定时初值开T0中断流程图主程序:中断程序:中断入口地址P1.0取反中断返回重装初值(24程序清单ORG4000HLJMPMAINORG401BH;T0中断入口地址LJMPSER;中断服务程序MAIN:MOVSP,#50H;开辟堆栈

MOVTMOD,#10H;工作方式设置MOVTH1,#3CH;初始值设置MOVTL1,#0B0HSETBEA;开中断SETBET1;开T0中断SETBTR1;运行T0MOV20H,#20MOV21H,#60HERE:SJMP$;等待中断中断程序的主程序和中断服务程序的布局定时器初始化开定时器中断主程序计数单元赋初值程序清单中断程序的主程序和中断服务程序的布局定时器初始化开定25SER:MOVTH1,#3CH;初始值重新设置MOVTL1,#0B0H

DJNZ20H,NOMOV20H,#20DJNZ21H,NOMOV21H,#60

CPLP1.0;定时到,输出取反

NO:RETI

;中断返回END中断服务程序判断中断的次数思考:能否利用定时器来实现一个电子钟?注意:此程序的#20和#60这两个立即数后面没有加H表示是十进制数。SER:MOVTH1,#3CH26要求:每秒的次数用发光管显示出来每秒钟按键的按下次数不超过255次测量每1秒钟之内的按键按下次数要求:测量每1秒钟之内的按键按下次数27实现的方法:利用T0计数器对从T0输入的脉冲进行计数,利用T1工作于定时。每定时达到1秒钟,取出计数器的值进行显示。由于每秒钟按键的按下次数不超过255次,所以只需要显示TL0的内容即可。步骤:由于定时器的最大定时时间不能够达到1秒钟,我们设定T1定时100mS,每10次取一次计数值。设定TMOD,TH1,TL1的内容,(fosc)=6MHz所以:(TMOD)=51H(TH1)=3CH(TL1)=0B0H

工作原理实现的方法:利用T0计数器对从T0输入的脉冲进行计数,利用T28

ORG0000HLJMPMAINORG001BHLJMPSERMAIN:MOVTMOD,#51HMOVTH1,#3CHMOVTL1,#0B0HMOVTL0,#00HMOVTH0,#00H

SETBEASETBTR0SETBTR1SETBET1MOVP1,#00HSJMP$T0和T1初始化T1定时,T0计数启动T0计数,T1定时,开T1中断主程序中断程序的主程序和中断服务程序的布局程序清单ORG29SER:CLRTR0CLRTR1MOVTH1,#3CHMOVTL1,#0B0H

DJNZR1,#10,LL

MOVR1,#10MOVA,TL0MOVP1,AMOVTH0,#00HMOVTL0,#00HLL:SETBTR0SETBTR1RETIEND关T0和T1重新对T1赋值判断是否到10次取值显示清除T0的计数值开T0和T1,返回中断程序清单SER:CLRTR0关T0和T1判断是30P3.2T测量在(P3.2)端出现的正脉冲宽度P3.2T测量在(P3.2)端出现的正脉冲宽度31实质:利用门控制位GATE实现对定时器/计数器的启/停控制,来测量脉冲宽度。当GATE为1,TR1(TR0)为1时,只有INT1(INT0)引脚输入高电平时,T1(T0)才允许计数。当GATE为0,只要TR1(TR0)为1时,T1(T0)就允许计数。利用GATE=1时的这个功能,可测试INT1(P3.3)和INT0(P3.2)上正脉冲的宽度。工作原理实质:利用门控制位GATE实现对定时器/计数器的启/停控制,32流程图:取出TH0和TL0的值送入30H和31HT0初始化(TMOD,TL0,TH0赋值)P3.2=0?启动T0工作停止T0工作NY开始P3.2=1?NY结束P3.2=0?NY流程图:取出TH0和TL0的值送入30H和31HT0初始化(33

ORG4000H

MOVTMOD,#09H ;定时器T0模式1定时MOVTH0,#00H ;设定初值 MOVTL0,#00H ;

JB P3.2,$ ;等待INT1变低 SETBTR0 ;启动T1 JNBP3.2,$ ;等待INT1变高 JB P3.2,$ ;开始计数,等待变低CLRTR0 ;停止计数

MOV30H,TH1;取出T1中的高八位MOV31H,TL1;取出T1中的低八位

SJMP$END对T0进行初始化T0计数过程取计数值程序如下:ORG4000H对T0进行初始化T0计数过程取34本章要求:了解中断源、中断的功能、中断系统的组成与功能、中断优先权管理、中断响应条件、中断响应过程、中断嵌套等基本概念;掌握MCS-51单片机的5个中断源;掌握外部中断的触发方式,与的触发方式有边沿方式与电平方式两种;掌握定时器/计数器的计数脉冲来源,计数脉冲来自内部振荡频率的12分频后的脉冲则称为定时器方式,计数脉冲来自外部引脚则称为计数器方式;掌握中断请求标志的清除方式,边沿方式下的与、T0、T1的中断请求标志是自动被清除的,而串行口的中断是用户通过软件清除的,电平触发的与还需要硬件的支持才能被清除;掌握T0与T1的工作方式,以及各种方式的应用;掌握TCON、SCON、IE、IP、TMOD等特殊功能寄存器的功能与应用;掌握MCS-51单片机对各中断源的响应条件与过程。小结本章要求:小结35一、MCS-51单片机定时器/计数器组成:定时器/计数器0(T0):16位的加计数器定时器/计数器1(T1):16位的加计数器二、定时器/计数器的功能对外部输入信号的计数功能。定时器/计数器0(T0)的外来脉冲输入端为P3.4;定时器/计数器1(T1)的外来脉冲输入端为P3.5。定时功能。定时器/计数器的定时功能也是通过计数实现的,它的计数脉冲是由单片机的片内振荡器输出经12分频后产生的信号,即为对机器周期计数。3.3MCS-51单片机的定时器/计数器(一)一、MCS-51单片机定时器/计数器组成:3.3MCS-536MCS-51单片机定时器/计数器逻辑结构图T1由TH1、TL1构成,字节地址为8DH、8BHT0由TH0、TL0构成,字节地址为8CH、8AHTCON则用于控制定时计数器T0和T1的启动和停止计数,同时管理定时器T0和T1的溢出标志等。特殊功能寄存器TMOD控制定时计数器的工作方式MCS-51单片机定时器/计数器逻辑结构图T1由TH1、TL37定时器/计数器的控制主要是通过以下几个寄存器实现的:TCON---定时器/计数器控制寄存器TMOD---定时器/计数器工作方式控制寄存器IE---中断允许控制寄存器定时器/计数器的控制定时器/计数器的控制主要是通过以下几个寄存器实现的:定时器/38TMOD89HD7D6D5D4D3D2D1D0GATA

M1M0GATAM1M0←T1方式字段→←T0方式字段→GATE——门控位。GATE=0启动不受/INT0或/INT1的控制;GATE=1启动受/INT0或/INT1的控制。

C/T——外部计数器/定时器方式选择位C//T=0定时方式;C//T=1计数方式。

M1M0——

工作模式选择位(编程可决定四种工作模式)。

TMOD89HD7D6D5D4D3D2D1D0GATA39=0——定时;=1——对外计数。定时:fosc/12=1/(12/fosc)=1/T

N个方波T计数:脉冲不等间隔。

波形等间隔,次数已定,时间确定即对机器周期进行计数。

左图定时时间为N*T每个下降沿计数一次

确认一次负跳变需两个机器周期,

所以,计数频率最高为fosc/24。

=0——定时;=140TCON88HD7D6D5D4D3D2D1D0TF1TR1TF0TR0TR0——定时/计数器0运行控制位。

软件置位,软件复位。

TR1——定时/计数器1运行控制位。(用法与TR0类似)

TF0、TF1分别是定时、计数器T0、T1的溢出标志位。TCON88HD7D6D5D4D3D2D1D0TF141(1)定时/计数器的工作方式M1M0——工作模式选择位(编程可决定四种工作模式)0013位定时/计数器模式00116位定时/计数器模式108位定时/计数器(自动重装初值)模式211T08位定时/计数模式311T1停止工作模式3

(1)定时/计数器的工作方式M1M0——工作模式选择位(编421)工作方式0T0的等效逻辑结构1)工作方式0T0的等效逻辑结构43在计数工作方式下,计数器的计数值范围是:

1~8192(2的13方)当为定时工作方式时,定时时间的计算公式为:

(8192-计数初值)×晶振周期×12或

(8192-计数初值)×机器周期其时间单位与晶振周期或机器周期相同。如果单片机的晶振选为6.000MHz,则最小定时时间为:

[8192—(8192—1)]×1/6×10-6×12=2×10-6(s)=2(us)最长定时时间为:

(8192—0)×1/6×10-6×12=16384×10-6(s)=16384(us)。在计数工作方式下,计数器的计数值范围是:442)工作方式1T0的等效逻辑结构2)工作方式1T0的等效逻辑结构45在工作方式1下,计数器的计数值范围是:

1~65536(2的16方)当为定时工作方式1时,定时时间的计算公式为:

(65536—计数初值)×晶振周期×12或

(65536—计数初值)×机器周期其时间单位与晶振周期或机器周期相同。如果单片机的晶振选为6.000MHz,则最小定时时间为:

[65536—(65536—1)]×1/6×10-6×12=2×10-6(s)=2(us)最长定时时间为:

(65536—0)×1/6×10-6×12=131072×10-6(s)=131072(us)。在工作方式1下,计数器的计数值范围是:463)工作方式2T0的等效逻辑结构3)工作方式2T0的等效逻辑结构47方式2与方式0、1的区别:工作方式0和工作方式1的最大特点就是计数溢出后,计数器为全0,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度。工作方式2就具有自动重装载功能,即自动加载计数初值,所以也有的文献称之为自动重加载工作方式。在这种工作方式中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载。方式2在串口通讯时,常用作波特率发生器。方式2与方式0、1的区别:484)工作方式34)工作方式349

如果定时/计数器0工作于工作方式3,那么定时/计数器1的工作方式就因为自己的一些控制位已被定时/计数器0借用,只能工作在方式0、方式1或方式2下,等效电路参见下图:

如果定时/计数器0工作于工作方式3,那么定时/计数器502.怎样编制计数程序?首先必须对定时计数器进行初始化,然后再开启定时或计数。简单的总结一下,定时计数器的初始化包括以下内容。(1)确定工作方式——对TMOD赋值;如:任务中的MOV TMOD,#06H指令,设定T0为计数器工作方式。(2)预置定时计数器中计数的初值——直接写入TH和TL;如:任务中的MOVTH0,#00H两条指令,设定计数初值。 MOV TL0,#00H2.怎样编制计数程序?首先必须对定时计数器进行初始化,然51(3)根据需要开放定时器/计数器的中断——对IE位赋值;(4)启动定时器/计数器;如:任务中的SETBTR0指令初值的计算方法X=M-计数值M是定时器的最大计数值。视工作方式不同而不同。工作方式0:13位定时/计数方式,因此,最多可以计到2的13次方,也就是8192次。工作方式1:16位定时/计数方式,因此,最多可以计到2的16次方,也就是65536次。工作方式2和工作方式3:都是8位的定时/计数方式,因此,最多可以计到2的8次方,也说是256次。(3)根据需要开放定时器/计数器的中断——对IE位赋值;52预置值计算:用最大计数量减去需要的计数次数即可。通过上面的任务,我们掌握了计数程序的编制方法,下面我们再看看定时程序怎样编制。首先我们看一下下面的程序段。 MOVTMOD,#01H MOV TL0,#00H MOVTH0,#4CH SETB TR0以上程序是任务一中的定时程序段,它的初始化过程和计数方式类似。预置值计算:用最大计数量减去需要的计数次数即可。53MCS-51单片机的定时器/计数器应用举例:利用定时器/计数器实现固定时间的定时利用定时器/计数器实现对外来信号脉冲的计数利用定时器/计数器实现对外来信号脉冲信号脉宽的测量

MCS-51单片机的定时器/计数器(二)

MCS-51单片机的定时器/计数器应用举例:MCS-51单54实例一:定时器/计数器实现固定时间的定时题目:利用T0,使用工作方式0,在单片机的P1.0输出一个周期为2ms,占空比为1:1的方波信号。解:周期为2ms,占空比为1:1的方波信号,只需要利用T0产生定时,每隔1ms将P1.0取反即可。编程步骤:计算TMOD的值由于GATE=0;M1M0=00;C/T=0;所以(TMOD)=00H计算初值(单片机振荡频率为12MHZ)所需要的机器周期数:n=(1000us/1us)=1000计数器的初始值:

X=8192-1000=7192所以:(TH0)=0E0H,(TL0)=18H实例一:定时器/计数器实现固定时间的定时55中断入口地址重新给T0赋初值P1.0取反中断返回主程序:中断程序:开始启动T0设置堆栈地址设置TMOD方式送定时器初值开T0中断等待流程图中断入口地址重新给T0赋初值P1.0取反中断返回主程序:中断563:程序清单ORG4000HLJMPMAINORG400BH;T0中断入口地址LJMPSER;中断服务程序MAIN:MOVSP,#50H;开辟堆栈

MOVTMOD,#00H;工作方式设置MOVTH0,#0E0H;初始值设置MOVTL0,#18HSETBEA;开中断SETBET0;开T0中断SETBTR0;运行T0HERE:SJMP$;等待中断SER:CPLP1.0;定时到,输出取反

MOVTH0,#0E0H;重新加载初战值MOVTL0,#18HRETI;中断返回END中断程序的主程序和中断服务程序的布局定时器初始化开定时器中断主程序中断服务程序3:程序清单中断程序的主程序和中断服务程序的布局定时器初始化57

实例二:利用方式1定时题目:用定时器T1,使用工作方式1,在单片机的P1.0输出一个周期为2分钟、占空比为1:1的方波信号。解:周期为2分钟,占空比为1:1的方波信号,只需要利用T1产生定时,每隔1分将P1.0取反即可。由于定时器定时时间有限,设定T1的定时为50ms,软件计数1200次,可以实现1分钟定时。编程步骤:1、计算TMOD的值由于:GATE=0;M1、M0=0、1;C/T=0;所以:(TMOD)=10H2、计算初值(单片机的振荡频率为12MHZ)所需要的机器周期数:n=(50000us/1us)=50000计数器的初始值:X=65536-50000=15536

所以:(TH0)=3CH;(TL0)=0B0H实例二:利用方式1定时58主程序:中断程序:中断入口地址P1.0取反中断返回重装初值(20H)-1=0?20H单元赋值20(21H)-1=0?21H单元赋值60NNYY开始设置堆栈地址设置TMOD方式启动T0等待计数单元赋值(20H,21H)送定时初值开T0中断流程图主程序:中断程序:中断入口地址P1.0取反中断返回重装初值(59程序清单ORG4000HLJMPMAINORG401BH;T0中断入口地址LJMPSER;中断服务程序MAIN:MOVSP,#50H;开辟堆栈

MOVTMOD,#10H;工作方式设置MOVTH1,#3CH;初始值设置MOVTL1,#0B0HSETBEA;开中断SETBET1;开T0中断SETBTR1;运行T0MOV20H,#20MOV21H,#60HERE:SJMP$;等待中断中断程序的主程序和中断服务程序的布局定时器初始化开定时器中断主程序计数单元赋初值程序清单中断程序的主程序和中断服务程序的布局定时器初始化开定60SER:MOVTH1,#3CH;初始值重新设置MOVTL1,#0B0H

DJNZ20H,NOMOV20H,#20DJNZ21H,NOMOV21H,#60

CPLP1.0;定时到,输出取反

NO:RETI

;中断返回END中断服务程序判断中断的次数思考:能否利用定时器来实现一个电子钟?注意:此程序的#20和#60这两个立即数后面没有加H表示是十进制数。SER:MOVTH1,#3CH61要求:每秒的次数用发光管显示出来每秒钟按键的按下次数不超过255次测量每1秒钟之内的按键按下次数要求:测量每1秒钟之内的按键按下次数62实现的方法:利用T0计数器对从T0输入的脉冲进行计数,利用T1工作于定时。每定时达到1秒钟,取出计数器的值进行显示。由于每秒钟按键的按下次数不超过255次,所以只需要显示TL0的内容即可。步骤:由于定时器的最大定时时间不能够达到1秒钟,我们设定T1定时100mS,每10次取一次计数值。设定TMOD,TH1,TL1的内容,(fosc)=6MHz所以:(TMOD)=51H(TH1)=3CH(TL1)=0B0H

工作原理实现的方法:利用T0计数器对从T0输入的脉冲进行计数,利用T63

ORG0000HLJMPMAINORG001BHLJMPSERMAIN:MOVTMOD,#51HMOVTH1,#3CHMOVTL1,#0B0HMOVTL0,#00HMOVTH0,#00H

SETBEASETBTR0

温馨提示

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

评论

0/150

提交评论