欢迎来到天天文库
浏览记录
ID:40188568
大小:755.50 KB
页数:44页
时间:2019-07-25
《定时计数器及中断系统》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、4.1定时器/计数器MCS-51单片机内部共有两个16位可编程的定时器/计数器,即定时器T0和定时器T1它们既有定时功能又有计数功能。4.4.1结构定时器/计数器的基本结构如图4.1所示。基本部件是两个8位计数器(其中TH1和TL1是T1的计数器,TH0和TL0是T0的计数器)。图4.1定时器/计数器结构在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的。当它用作对外部事件计数时,接相应的外部输入引脚T0(P3.4)或T1(P3.5)。4.1.2控制寄存器1.定时器控制寄存器(TCON)各位定义:位地址8FH8EH8DH8CH8BH8AH89H88H位符号TF1TR1TF0
2、TR0IE1IT1IE0IT0TF0/TF1:查询方式:禁止中断,软件查询TF0的值,软件清“0”中断方式:硬件查询TF0的值,硬件自动清“0”2.工作方式寄存器(TMOD)功能:确定定时器的工作方式及功能选择。不能位寻址,TMOD各位的定义:D7D6D5D4D3D2D1D0GATEGATEGATE:门控位=0:定时器/计数器仅受TR的控制=1:只有为高电平,且TR=1时,定时器/计数器才工作:功能选择位=0:定时功能=1:计数功能:工作方式选择位=00方式0=01方式1=10方式2=11方式33.中断允许控制寄存器(1E)0AFH0AEH0ADH0ACH0ABH0AAH0A9H0A8HEA/
3、/ESET1EX1ET0EX0每一位的内容在前面已作详细介绍,在此不作赘述。查询方式时:关闭中断,使用软件查询TF0/TF1中断方式时:开放中断,使用硬件自动查询TF0/TF14.1.3工方式MCS-51的定时器/计数器共有四种工作方式。工作在方式0、方式1和方式2时,定时器/计数器0和定时器/计数器1的工作原理完全一样,现以定时器/计数器0为例介绍前三种工作方式。1.方式0(M1M0=00)(1)电路逻辑结构方式0是13位计数结构的工作方式,其计数器由TH0全部8位和TL0的低5位构成。TL0高三位弃之不用。图4.2是定时器/计数器0工作在方式0的逻辑结构。图4.2定时器/计数器方式0逻辑结
4、构当时,多路转换开关接通振荡脉冲的12分频输出,13位计数器以此作为计数脉冲,这时实现定时功能当时,多路换开关接通计数引脚(T0),计数脉冲由外部引入,当计数脉冲发生负跳变时,计数器加1,这时实现计数功能。不管哪种功能,当13位计数发生溢出时,硬件自动把13位清零,同时硬件置位溢出标志位TF0。在这里需要说明门控位(GATE)的用途,当GATE=0时,或输出的高电平与无关,此时与门的输出只受运行控制位TR0控制。如果TR0=0,则与门输出为低电平,则模拟开关断开,定时器/计数器不工作。如果TR0=1,则与门输出为高电平,则模拟开关闭合,定时器/计数器工作。当GATE=1时,只有TR0和同时为高
5、电平,定时器/计数器才工作,否则,定时器/计数器不工作。(2)定时和计数的应用计数范围:1~213计数计算公式:计数值=213-计数初值定时范围:1机器周期~213机器周期定时计算公式:定时时间=(213-定时初值)×机器周期如果晶振频率为6MHz,则最大定时时间为:213×1/6MHz×12=214()2.方式1(M1M0=01)方式1是16位计数结构的工作方式,其计数器由TH0全部8位和TL0的全部8位构成。其逻辑电路和工作情况与方式0完全相同,所不同的只是计数器的位数。MCS-51单片机之所以设置几乎完全一样的方式0和方式1,是出于与MCS-48单片机兼容的要求。因为,MCS-48单片机
6、的定时器/计数器是13位的计数结构。定时和计数的应用计数范围:1~216计数计算公式:计数值=216-计数初值定时范围:1机器周期~216机器周期定时计算公式:定时时间=(216-定时初值)×机器周期如果晶振频率为6MHz,则最大定时时间为:216×1/6MHz×12=217()【例4-1】设单片机晶振频率为6MHZ,使用T1以工作方式1,产生周期为500的等宽正方波,并由输出,以中断方式编程。分析:题目的要求可用下图来表示。由上图可以看出只要使的电位每隔250取一次反即可。所。以定时时间应取250。1)计算计数初值设计数初值为x,由定时计算公式知:2)专用寄存器的初始化D7D6D5D4D3D
7、2D1D0GATEGATE所以,TMOD应设置为:10H开放定时器/计数器1中断,所以IE应设置为:88H3)编写程序ORG0000HSJMPMAINORG001BHAJMPORGINTT13000HMAIN:MOVTMOD,#10HMOVIE,#88HMOVTH1,#0FFHMOVTL1,#83H;初始化LOOP:SETBTR1;启动HERE:SJMPHERE;等待中断AJMPLOOPINTT1
此文档下载收益归作者所有