一、定时器的结构以及工作原理
MCS-51单片机内部有两个16位可编程定时器/计数器,即定时器T0和定时器T1。他们既可以用作定时器的方式,又可以用作计数器的方式,共4种不同的工作方式
寄存器TMOD用于控制T0和T1的工作方式,可通过编程设置TMOD来决定工作方式。
CATE |
C/T |
M1 |
M0 |
GATE |
C/T |
M1 |
M0 |
M1M0为工作方式控制位,我们常用工作方式1,若要设置T0以“方式1”工作,可使用TMOD=0X01;来设置。
定时/计数器的核心是16位加法计数器,T0的加法计数器由两个8位寄存器TH0,TL0构成,TH0表示加法计数器的高八位。TL0表示加法计数器的低八位,TH1、TL1则表示定时/计数器T1的假发计数器的高八位和低八位。
当16位加法计数器的输入端每输入一个脉冲,16位加法计数器的值自动加1,当计数器的计数值超过加法计数器字长所能表示的范围而溢出时,CPU申请中断,若允许中断,则CPU停下当前执行的程序,转去执行中断程序,中断程序执行完后,继续执行原来的程序。
二、定时器使用的一般步骤
1、设置工作方式TMOD=0X01;
2、计算初值,并且将初值装入TL0、TH0
TH0=(65535-50000)/256;TL0=(65535-50000)%6;
3、设置EA=1;开总中断允许开关
4、设置ET0=1,开定时器0中断允许
5、设置TR0=1,启动定时
6、编写中断程序
三、初值的计算
在工作方式1的前提下,计数的范围从0到65535,经过六万多次的计数后,才会产生溢出。可我们在实际运用的时候,常常不需要那么多的计数,那么该怎么办呢?
单片机的16位计数器,就像一只空的水桶,向其中滴65535滴水后,就会发生溢出,如果我们希望在滴100滴水后,就让它溢出,我们可以一次性的相这只水桶中先放入65535-100即65435滴水,然后再一滴一滴地计数,这样,就达到了调用100滴水就溢出的目的了。
当定时器、计数器工作于定时状态的时候,对机器周期进行计数,若定时时间为t,则对应的计时次数N=t/机器周期
例如:利用定时器0,在工作方式1下,控制发光二极管每50MS闪烁一次
#include
sbit D=P1^0;
void main()
{
TMOD=0X01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%6;
EA=1;
ET0=1;
TR0=1;
while(1);
}
void T0_PRG interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%6;
D=~D;
}
四、长计时
51单片机定时、计数器的最大计数容量是65535,换算成时间,也就65ms左右。
在实际生产、生活中,定时的长度往往是秒级的,甚至是分钟、小时,以至于更长时间,MCS-51 的定时、计数器最长定时只有65MS左右,这显然实用性不强,为了解决这个问题,一般有两种途径,即“硬件法”和“软件法”,“硬件法”是通过使用专用的芯片来完成长定时。而“软件法”只需要在程序里运用一些小技巧就可以,尽管这种方法实现定时的精度没有硬件方式高,但因为简单并不增加成本,所以精度要求不很高的情况下,是非常适合的。
既然MCS-51的定时、计数器最长定时只有65ms左右,那么我们就先让它定时50ms,在定时、计数器产生溢出时并不去执行我们要做的动作,而是给一个变量加1,这样反复做定时,当变量值为20时,也就是说定时、计数器溢出20次的时候,才执行我们要做的工作,50msX20=1000ms 即1秒。那么 2秒、10秒,更长的定时,只需要更改反复溢出的次数,就可以轻松解决。改进后的程序如下:
#include
sbit D=P1^0;
unsigned char n;
void main()
{
TMOD=0X01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%6;
EA=1;
ET0=1;
TR0=1;
while(1);
}
void T0_PRG interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%6;
n++;
if(n==20)
{
n=0;
D=~D;
}
}
关键字:单片机 定时中断
引用地址:
单片机中关于定时中断1和3
推荐阅读最新更新时间:2024-03-16 14:44
基于单片机的集成编码PT2262解码器设计
近年来,基于波形分析的软件解码或者软硬结合解码的方法被提出来。但是,这些方法都不具有自学功能,只针对特定振荡频率的波形进行解码,当不知道发射电路PT2262的振荡电阻的配置的情况下无法解码,或者需要手工调整程序的参数。 本文提出了一种具有自学习功能的基于单片机的软件解码方法并完成了设计,这种新方法可以在未知发射电路的配置参数的情况下,通过先学习、后解码的过程实现解码,且可以实现自定义数据帧的格式,使编码的地址位和数据位的设置更加灵活。从而可以将通用编码集成电路扩展应用于数据通信,智能控制等领域。 1 PT2262工作原理 PT2262最多可有12位(A0~A11)三态地址端管脚(悬空,接高电平,接低电平)任意
[工业控制]
无线充电市场将迎来价格战,MCU替代SoC或成长尾效应
自iPhone 8/X标配无线充电功能后,无线充电市场开始爆发且持续升温,给国内无线充电厂商带来了巨大的市场红利,其中发射端无线充电器快速起量,增幅超10倍。然而,随着苹果无线充电器AirPower即将上市,小米、华为也将发布带有无线充电功能的新机,整个无线充电市场将会迎来又一轮的爆发。不过,在新一轮的爆发潮中,由MCU和SoC方案引发的价格战也随之而来。 AirPower上市在即,新一轮爆发开启价格战 近日,业界传出最新消息称,苹果原装的无线充电器AirPower会在月底正式上市发售,售价为199美元。不过,苹果无线充电支持WPC的Qi标准,而国内厂商基于Qi标准认证的无线充电器同样也支持iPhone 8/X的无线充电,且价格更
[电源管理]
DIY设计之用开源单片机设置GPS+谷歌地图定位
自己喜欢和驴友出游也喜欢和出海钓鱼,给自己做了个定位的黑匣子,给大家分享一下! 实现功能:当你出门在外遇到困难时打开,硬件将通过手机卡上网,将个人定位位置发到一个指定的IP上,用我的谷歌地图软件来显示。 定位精度为0.5米左右,也就是说我的两次定位分别显示了两个点,也就是我们家窗子的宽度,民用的这个级别感觉不错,感觉也怪危险,坐等战斧。 板子做好后,又做了小板进行232串口电平转换,可以用来监控串口的数据。可以在调试时,将芯片间的通信数据用电脑测试到。 下图是用瑞士UBLOX提供的软件进行模块测试的图片。 下图为VB版的谷歌地图定位软件: 支持两种定位方式: 一是测试 GPS 模块时,直接从串口经232测试小收到定
[电源管理]
51单片机振荡周期时钟周期机器周期指令周期
(1)振荡周期 振荡周期指为单片机提供定时信号的振荡源的周期或外部输入时钟的周期。 (2)时钟周期 时钟周期又称作状态周期或状态时间S,它是振荡周期的两倍,分为P1节拍和P2节拍,通常在P1节拍完成算术逻辑操作,在P2节拍完成内部寄存器之间的数据传送操作。(注意P1 和P2的相位关系 ) (3)机器周期 一个机器周期由6个状态组成,如果把一条指令的执行过程分作几个基本操作,则将完成一个基本操作所需的时间称作机器周期。单片机的单周期指令执行时间就为一个机器周期。 (4)指令周期 指令周期是执行一条指令所需的全部时间。MCS-51单片机的指令周期通常由1、2、4个机器周期组成。 例:若晶
[单片机]
基于C8051F020单片机的多路压力测量仪
1 引言 压力测量对实时监测和安全生产具有重要的意义。在工业生产中,为了高效、安全生产,必须有效控制生产过程中的诸如压力、流量、温度等主要参数。由于压力控制在生产过程中起着决定性的安全作用,因此有必要准确测量压力。为了测到不同位置的压力值,研制了基于C8051F020单片机的测量仪。通过压力传感器将需要测量的位置的压力信号转化为电信号,再经过OP07运算放大器进行信号放大,送至C805lF020单片机内部的高速率12位A/D转换器,然后将模拟信号转换成单片机可以识别的数字信号,再经单片机转换成液晶显示器可以识别的信息,最后显示输出。与此同时,可以利用SD卡存储器将各通道设定的压力值、系统参数存储起来,以便在系统断电或复位后,
[单片机]
基于51单片机的两路温度控制器的设计方案
1.引言 目前,温度控制器存在的问题是如何缩减成本,减少功耗,温度测量的准确性和多路温度的同时显示。本方案设计的实现基于C51单片机的两路温度控制器,做到成本最低化,精确度高,两路温度的显示和控制,能在温度超出设定的最高温度时启动电风扇进行降温,在温度低于设定的最低温度时启动蜂鸣器报警,能够用户设定最高最低温。 2.系统结构 温度控制器系统包括以下几个主要部分:温度传感器,报警电路,LED显示电路,键盘控制,89C51控制部分。如图所示: 本系统设计实现:启动温度控制器后,绿灯亮起,四位LED数码显示器上前两位为温度传感器1所测的环境温度,后两位为温度传感器2所测的环境温度。 3.硬件结构 3.1 温度传感器 本设计采用
[电源管理]
MCS-51单片机汇编伪指令
汇编语言的特点 1.助记符指令和机器指令一一对应。用汇编语言编制的程序,效率高,占用存贮空间小,运行速度快。因此汇编语言能编写出最优化的程序,而且能反映出计算机的实际运行情况。 2.汇编语言编程比高级语言困难。因为汇编语言是面向计算的,程序设计人员必须对计 算机有相当深入的了解,才能使用汇编语言编制程序。 3.汇编语言能直接和存储器及接口电路打交道,也能申请中断。因此汇编语言程序能直接管理和控制硬件设备。 4.汇编语言缺乏通用性,程序不易移植。各种计算机都有自已的汇编语言,不同计算机的汇编语言之间不能通用。但是掌握了一种计算机的汇编语言,就有助于学习其它计算机的汇编语言。 汇编语言的语句格式 各种汇编语言的语句格式是基本相同的
[单片机]
基于C8051F021型单片机与PCI接口实现数据采集卡的设计
1、引言 国家电力公司陆延昌副总经理在第26届中国电网调度运行全闭幕式上的讲话中指出了今后一段时期内的电网技术的发展上应重点研究和解决的问题,其中,在电网安全、稳定、经济运动领域,互联电力系统实时功角测量受到越来越的关注。特别是在以监控中目的的电力调度自动化系统中,如何快速、准确地采集处理各种电气参数显得尤为重要。而在实现自动化的过程中,首要环节就是数据采集。为此我们研究开发了电力系统功角广域测控系统,其中,用C8051F021型单片机实现的数据采集卡不仅可以准确、高效、实时地进行AD数据采集并通过双口RAM和PCI接口与上位机交换数据,还可以通过与GPS接收通信接收秒脉冲实现采集数据异地同步 2、功角及其测量 2.1 发电机
[单片机]