单片机定时器程序解释序

单片机定时器中断原理图解
单片机定时器中断是我们经常都需要用的,下面将以51单片机为例子来说明单片机定时器中断原理。
  80C51的定时/计数器的结构
  定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
  中断系统介绍
  中断系统是一套硬件电路,它可以在每个机器周期对所有的外设的标志位作查询。相比于前面的软件查询(if(xx==1)),中断系统也可以叫做硬件查询。51的中断系统可查询以下6个标志位。
  IE0(TCON.1),外部中断0中断请求标志位。
  IT1(TCON.2),外部中断1触发方式控制位。
  IE1(TCON.3),外部中断1中断请求标志位。
  TF0(TCON.5),定时/计数器T0溢出中断请求标志位。
  TF1(TCON.7),定时/计数器T1溢出中断请求标志位。
  RI(SCON.0)或(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位,向CPU申请中断。
  当中断系统查询到外设的标志位变为1时,中断系统可暂停当前的主循环,并且将程序跳转到用户预先指定的函数中执行。要启动中断系统,必须先进行中断初始化,其流程如下:
  a、是否要查询外设标志(EA=0或EA=1,EA 也叫 CPU中断允许(总允许)位)
  b、查询到标志1,是否要跳程序
  c、跳转的目标函数,即中断服务子函数
  所以在使用定时器中断时,我们只需要首先初始化中断系统,开启总中断(相当于总开关),开启定时器对应的控制位(相当于支路开关),再初始化定时器即可。中断系统作为单片机的外设,只有在某个中断产生时才会打断主循环,并由相应的中断号引入到相应的中断服务子函数。下图是6个中断标志位的信息。
& &80C51单片机定时器中断原理
  这里将涉及到单片机中断的应用,在cpu的一步步按照指令运行的过程中(主程序),可能会有其它的更紧急的需要做的事情(中断服务程序),需要cpu暂时停止当前的程序(主程序),做完了(中断服务程序)之后,又可以继续去运行先前的程序(主程序)。就像你正在吃饭,一边又在给水桶里放水,吃着吃着,水满了,你就得赶快去把水龙头关掉或者换一个空的水桶,再回来吃饭。
  单片机的定时器就像是一个水桶,你让它启动了,也就是水龙头打开了;开始装水了;定时在每个机器周期不断自动加1,最后溢出了;水桶的水不断增加,最也就满出来了;定时器溢出时,你就要去做处理了;水桶的水满了,你也应该处理一下了;处理完后,单片机又可以回到刚刚开停止的地方继续运行;水桶处理了,先前你在做什么也可以继续去做什么了。
  单片机的主程序是从0x0000开始运行的,单片机服务程序从哪里开始运行呢?在51里,有多个中断服务程序入口,0号入口是外中断0,地址在0x0003;1号入口是定时器0,在 0x000B;2号入口是外中断1;地址在0x0013,3号入口是定时器2;地址在0x001B,等等。当中断发生时,程序就记下当前运行的位置,跳到对应的中断入口去运行中断服务程序,运行完之后,又跳回到原来的位置继续运行。
  在C51中,你不用理会中断服务程序放在哪里,会怎么跳转。你只要把某个函数标识为几号中断服务函数就可以了。在发生了对应的中断时,就会自动的运行这个函数。
 定时/计数器的工作原理
  加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
  可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。
  设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t 。
  设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2 &Us。
关注电子发烧友微信
有趣有料的资讯及技术干货
下载发烧友APP
打造属于您的人脉电子圈
关注发烧友课堂
锁定最新课程活动及技术直播
当今社会,应用单片机的产品已经渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的足迹。现在,...
所谓单片机,就是把中央处理器CPU(Central Processing Unit)、存储器(Mem...
单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,以广泛的应用领域拉动,表...
对于学习单片机的人而言,肯定都想知道单片机目前的发展现状啊,据此来给自己指定学习目标吧。所以小编总结...
STC单片机是一款增强型51单片机,完全兼容MCS-51,还增加了新的功能,比如新增两级中断优先级,...
如输出到称为HCLK、FCLK的时钟,还直接输出到SDIO外设的SDIOCLK时钟、存储器控制器FS...
日本NEC公司生产的μPD780208系列8位单片机属于78K/0家庭中功能较强的一种系列。根据内部...
系统采用单片机(STC89C54RD)作为主要控制器件,采用HEDS9701槽型光耦加360线光栅片...
以往我们所使用到的二维码大多依赖网络平台或者智能终端,今天我们来谈谈在单片机平台上的实现过程。
电路简单、功能强大、质量可靠,这就是单片机被广泛是使用的根本原因。在我们的生活里,电器更新换代频繁、...
PLC = Programmable Logic Controller,可编程逻辑控制器,一种数字运...
如果我们把这个“口”字图形的“.”处用“0”代替,就可以很形象地得到“口”的字形码:0000H 00...
这是一个非常经典的TI的关于FLASH存储模块的程序,在几乎所有的关于MSP430的书籍等资料上都可...
迄今为止,写过的程序都是一些很简单的程序,从来没有想到要自己写.H文件,也不知道.H文件到底什么用,...
本文主要介绍了现在市场上有哪些单片机很火的_单片机市场现状分析以及单片机结构介绍。单片机是一种集成电...
本文主要介绍了怎么知道单片机型号_单片机型号的判断。AT89系列包括两大类第一类是常规的,就是AT8...
本文主要介绍了单片机上电复位电路图大全。复位电路由按键复位和上电复位两部分组成。上电复位:STC89...
设计很重要,工程也很关键。理论要结合实际,才能做好产品。
本文主要介绍了cd4013开关应用电路图汇总(电源/开关/触摸开关/防抖动/定时器)。CMOS集成电...
嵌入式开发就是设计特定功能的计算机系统,手机,mp3、mp4,mp5,自动供水系统,洗衣机,油井监控...
本文主要介绍了cd4060应用电路图汇总(分频/定时/CD4060时间控制器)。CD4060是由一振...
在单片机编程的过程中,如果一名设计者能够同时掌握多门编程语言,那么这名设计者肯定是一位非常优秀的人才...
单片机里有一些部件需要我们使用和操作,都是通过读写寄存器来实现的。每个部件都对应有操控它的寄存器,例...
局部变量,不加说明默认为auto型,即动态存储,如果不赋初值,将是一个不确定的值。而将局部变量定义为...
学习单片机,你不能没有一本纸质的教程,到本地的书店挑选或便宜的可以到卓越、当当网掏一掏。有了教程能更...
大体测量范围电感测量范围:
0.1μH-----1H小电容测量范围:
1pF----2....
本文开始介绍了排阻的阻值读取方式,其次介绍了排阻的作用和排阻的引脚说明,最后介绍了51单片机最小系统...
测试结果表明,PWM的输出信号与各音阶对应的声音频率基本一致,方案切实可行。这一方法也可用于电机控制...
为简化系统设计,本系统采取直接发送16×16LED点阵数据的方法,此方法可以去除单片机汉字点阵库的设...
本文主要一个基于单片机的智能环境数据采集小车系统的设计,能实现环境温湿度的采集、发送、接收、处理、显...
串行口的工作方式0为移位寄存器输入输出方式,方式0发送或接收完8位数据后由硬件置位发送中断标志TI或...
atmega48单片机低功耗系统设计首要是选择合适的单片机。atmega48单片机是一款8位微控制器...
本文旨在提供一个轻量级的单片机多级菜单实现方法,以较少的系统资源消耗和简单方便的方法完成菜单设计。考...
在选择 LDO 时,重要的是要知道如何区分各种LDO。器件的静态电流、封装大小和型号是重要的器件参数...
本文介绍的汽车自动巡航控制系统可以有效地减轻驾驶员的疲劳,避免交通事故,并利于环保。当在高速公路上长...
本文利用单片机C作为128×64单色OLED的控制核心器件,采用的是维信诺公司的一款...
根据微位移控制系统的设计要求,首先应保证控制系统的定位精度,其次应尽量做到结构简单,成本低,操作简便...
当前的单片机种类很多,但是 51 是最基础的,因此单片机的学习最好也是从 51 开始,不仅容易上手,...
看门狗,又叫 watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗(kickin...
影响单片机系统运行稳定性的因素可大体分为外因和内因两部分:射频干扰,电源线或电源内部产生的干扰
由于本次进入指令寄存器中的内容是74H(操作码),以译码器译码后单片机就会知道该指令是要将一个数送到...
在实际应用过程中有时候我们需要去判断两个变化的电压大小,在不同变化时需要做出不同的反应,这时候我们就...
有关51单片机有关晶振的问题一并总结出来,希望对学51的童鞋来说能有帮助
每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的...
随着单片机的使用日益频繁,用其作前置机进行采集和通信也常见于各种应用,一般是利用前置机采集各种终端数...
电阻焊一般是使工件处在一定电极压力作用下并利用电流通过工件时所产生的电阻热将两工件之间的接触表面熔化...
随着物质文化生活水平的提高,人们对于包装、装饰材料的要求也越来越高,只有将计算机控制引入到模切烫金机...
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复...
1.数据传送指令汇总 2.算术运算类指令汇总 3.控制转移类指令汇总 4.逻辑运算指令汇总 5.布...
全国大学生电子设计竞赛中的C题,要求设计一个以 单片机 为核心器件实现对行驶中的 电动模型汽车 自动...
当时国内从事动态密码器研发生产的公司并不多,而能拥有自主知识产权的公司更少。公司创始人是剑桥大学毕业...
不要拒绝RTOS!
逐次逼近式AD转换器与计数式A/D转换类似,只是数字量由“逐次逼近寄存器SAR”产生。SAR使用“对...
本功能主要用于准备用于查表计算的 R/T 表格,主要用于温度、浊度等模拟量的测量,根据电路分压电阻的...
单片机,又称微处理器,他将一个系统所需要的RAM,Rom ,CPU等相关外设集成在一块集成电路上,我...
现将while(1);语句屏蔽掉。我还以为程序不能被正确执行了呢,因为退出了main主函数,就像Re...
点阵式平板图形液晶显示器在各种便携式产品中具有非常广泛的应用。对于不同厂家的产品及不同的运用目的,显...
数字式温度传感器(简称SWC),又称集成数字脉冲式感温探头,是一种新型的三端温度变送器件。该器件采用...
由于单片机具有功能强,使用灵活,体积小,性价比高等特点,近年来在测控系统中得到广泛应用。而在许多场合...
读取一字节数据的程序段如下: 读取数据时,T1先置1,其后的RD信号将行地址送到地址线AB上,并使D...
VD5026 -4的每组串行数据输出波形由同步脉冲、12位加密地址(和控制数据)及1位停止位组成。编...
为了测量时间r,又为使测量的φ角的精度不受电网频率(或周期T)的影响,采用图所示的接口电路。 由变压...
传统的投币电话,都是以几对红外发射、接收对管作传感器,利用硬币遮光原理粗测币的直径。这种方法精度低,...
当超声波传感器发出的超声波遇到物体返回时,探头接收其反射回波信息,从而可对接收到的反射回波进行分析、...
本文介绍使用8031单片机测量三相电网 功率因数角的原理、接口电路和程序实现。经实践验证,测量准确、...
单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可...
串行口方式0应用编程 8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就能...
在单片机中用来存储程序数据及常量数据或变量数据,凡是c文件及h文件中所有代码、全局变量、局部变量、’...
八段LED数码管显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个贺点形的发...
89C51芯片没有自带PWM发生器,如果要用51来产生PWM波就必须要用软件编程的方法来模拟。方法大...
遇到单片机晶振不起振是常见现象,那么引起晶振不起振的原因有哪些呢?
(1) PCB板布线错误;...
使用STM32L496的Nucleo板的LPUART 做打印输出时,电脑端始终没法出现任何信息。
说到51单片机的时钟首先想到51时怎么工作的呢?微型控制器要想工作必须要有一个“动力”,对于51单片...
在单片机系统里,按键是常见的输入设备,在本文将介绍几种按键硬件、软件设计方面的技巧。一般的在按键的设...
/*************定义全局变量*****************/uchar Kp,TI,...
单片机可接收 PC 发
送的数字字符,按下单片机的
K1键后,单片机可向 PC发送
8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就能扩展一个并行口...
条件转移指令是指在满足一定条件时进行相对转移。
有关单片机中断系统的概念:什么是中断,我们从一个生活中的例程引入。
连续调用子程序P1→又在子程序P1中调用子程序P2(子程序欠套):先使X2=ON,X1=OFF,然后...
在实际的使用中,单片机运行时为了定位ROM中的数据,其实每个8位存储单元都有一个固定的“地址”,通常...
ARM首先是一个公司,这家公司设计CPU并向各个CPU制造商授权许可,所以ARM公司是一家CPU设计...
在程序存储器中总会有一些区域未使用,如果因干扰导致单片机的指令计数器PC值被错置,程序跳到这些未用的...
随着指纹识别在智能手机上面的普及,指纹识别技术在越来越多的场合中得到应用。除了手机应用之外,在移动支...
我们在学单片机时我们第一个例程就是灯的闪烁,那是用延时程序做的,现在回想起来,这样做不很恰当,为什么...
通常如果需要乘以或除以2n,都可以用移位的方法代替。如果乘以2n,都可以生成左移的代码,而乘以其它的...
单片机晶振电路中两个微调电容不对称会怎样?相差多少会使频率怎样变化?我在检测无线鼠标的接受模块时,发...
本文开始详细的阐述了eda是什么技术以及eda的设计方法,其次阐述了eda的设计技巧,详细的分析了e...
定时器0使用16位模式,在12MHz晶振情况下,最大的定时值也只有65.535ms,因此要定时500...
如果想精确延时,一般需要用到定时器,延时时间与晶振有关系,单片机系统一般常选用11.059 2 MH...
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-51单片机中的定时器中断是怎么用的 ?_百度知道
51单片机中的定时器中断是怎么用的 ?
比如想让每隔100ms中断一次呢?...
比如想让每隔100ms中断一次呢 ?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
beatorwin知道合伙人
采纳数:47
获赞数:275
所以中断的使用:1.开全局中断 51是 EA = 12.对应中断使能 比如定时器1 ET1 = 1、定时器0 ET0 = 13.定时器工作方式配置: 有三种方式 双8位定时 16位定时 还有捕捉方式 定时器2有4种 ,具体不介绍了 TMOD 是定时器0和定时器1方式配置的寄存器 TMOD = 0x01,定时器0工作在方式1(16位计数)4.打开定时器 TR0 = 1;定时器1打开是 TR1 = 1;5.中断服务程序:就是定时时间到,你要处理的事务。例子://50ms定时void main(void){
TMOD = 0x01;
//配置方式
TH0 = 0x3C;
//计数时间
//开启定时器
//全局中断打开
//定时器0中断打开
for(;;)}void Timer0_ISR(void) intterupt
//中断服务程序{
TH0 = 0x3C;
//计数时间
P1 = 0x11;
//定时到,要执行的动作}
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。求一个单片机定时程序。。。。。。_百度知道
求一个单片机定时程序。。。。。。
求大神帮我写一个程序,用于宠物定时喂食,就是每天中午12点啊傍晚6点啊,或者是每个6个小时之类,单片机会给电动机发一个信号,让电动机运作...
求大神帮我写一个程序,用于宠物定时喂食,就是每天中午12点啊傍晚6点啊,或者是每个6个小时之类,单片机会给电动机发一个信号,让电动机运作
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
lanchengkai知道合伙人
lanchengkai
采纳数:23
获赞数:48
#include &reg52.h&#define uchar unsigned char#define uint unsigned intuchar timer[3]={0,0,0};//时分秒
按实际的情况修改这个数组里的数字 分别为{时,分,秒}
另外我很费解电动机是啥 所以我就写一个定时功能uint timer_void main_init()//程序初始化{ timer_data=0;//数据初始化 TMOD=1;//使用到 定时器0 TH0=0TL0=0x18;//定时 1毫秒 TR0=ET0=EA=1;//定时器开启}void main(){ main_init(); while(1) {
//然后在这里判断if () 你所需要的时间数据 就可以做一些动作了; }}void timer0()interrupt 1//定时器0入口{ TH0=0TL0=0x18;//本次定时 1毫秒 if(timer_data==1000)//1000毫秒=1秒 {
timer[2]++;
if (timer[2]==60)//判断是否过了60秒;
timer[1]++;//分钟加1;
timer[2]=0;//秒清0
if (timer[1]==60)//判断是否过了60分;
timer[0]++;//小时加1;
timer[1]=0;//分清0
if (timer[0]==24)//判断是否过了24小时
timer[0]=0;//时清0
timer_data=0; } else {
timer_data++; }}
sunbin000000知道合伙人
sunbin000000
采纳数:12
获赞数:31
这个很简单的哦
既然你知道单片机 你也应该会呀
DS1302是时间软件
当到12电机转 转1会停就行啦
nongjianjun知道合伙人
nongjianjun
采纳数:514
获赞数:730
可以帮你搞定
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。【单片机定时器工作流程图】 - CSDN论文发表、论文指导
周一至周五
9:00&22:00
浅议降低51单片机定时器定时误差的几种方法
  摘要: 51单片机在当前控制检测系统中的应用越来越多,对其定时的精确要求也越来越高。虽然51单片机自带的16位定时/计数器较为精确,但是在实际应用过程中难免存在误差,而且这个误差不可避免,所以降低51单片机定时器误差就显得尤为重要。 中国论文网 /7/view-4272806.htm  关键词: 单片机;定时误差   中图分类号:TP368.1 文献标识码:A 文章编号:(1-02   0 引言   51单片机的定时/计数器在基本的单片机系统中都会用到,而且对其定时精确度的要求越来越高。一般我们在单片机系统设计中,定时方式通常有以下三种:软件定时,硬件定时和可编程控制器定时。软件定时是通过程序的指令控制实现定时方法,这种定时方式虽然调整方便,但是误差较大,而且CPU的利用率很低;硬件定时是利用专用的定时集成电路设计实现的定时方法,硬件定时的时间较为精确,但是不易调整定时时间;可编程控制器定时是利用程序控制的方法控制硬件的定时时间,这种定时方式能够得到比较精确的定时时间,且调整定时时间也比较方便,51单片机的定时/计数器就属于可编程控制器定时。   虽然51单片机定时/计数器定时方便,但是在系统应用过程中还存在一定的误差,这个误差主要是由于系统中断响应所引起的。基本的51单片机中有5个中断源,其中两个16位的定时/计数器中断,中断系统采用两个优先级控制。51单片机中断响应过程如图1所示。   这是一个多级中断响应的流程图,在定时中断响应过程中,CPU一般通过查看定时/计数器的中断请求标志位TF0和TF1来确定是否有中断请求。但是在执行定时中断的过程中,CPU必须执行完当前执行的指令或者高优先级的中断程序之后才能进入定时中断,这个过程至少需3个机器周期才能实现,这时定时器中的加1计数器还在计数,这样在进入定时中断重新给加1计数器赋值时就会出现加1计数器重新计数的过程,这就是定时器误差的来源。   我们在利用51单片机定时/计数器进行定时操作时最多的使用它的方式1和方式2。方式1是一个16位的定时/计数器,在中断处理过程中需要对定时器中的加1计数器THx和TLx重新赋值。方式2是一个8位自动重装的定时/计数器,在中断处理中可以不同对其加1计数器进行重新赋值。不管是方式1和方式2在中断处理过程中,由于单片机本身响应流程的问题,都会存在一定的定时误差,在定时要求精确的系统中我们考虑的重点是如何去降低定时误差。   1 降低定时器定时误差的几种方法   在单片机系统设计中,我们可以通过以下方法来降低定时器的定时误差。   1.1 提高外部晶振频率 在常用的51单片机系统中,系统时钟是由外接晶体振荡器的频率决定的,系统时钟频率的高低决定了CPU执行速度,外接晶振频率越高,机器周期越短,CPU执行指令的速度越快,响应中断的速度也越快。在51单片机中,1个机器周期=12个晶振周期,若外接晶振频率为6MHz,则机器周期为2us,若CPU在响应定时中断时正在执行2机器周期的指令,那么进入定时中断所需要的时间为4us,定时器内部加1计数器至少计数了4次(不算重置初值的时间)。若我们将外接晶振频率提升到12MHz,则机器周期为1us,CPU在相同条件下响应中断的时间降低到2us,在进入定时中断时内部加1计数器只加了2次,这样的话就能够降低定时器的误差。   不过,相对而言,这种方法有一定的弊端。我们所希望的是外接晶振的频率越高越好,但是并不是所有的51单片机的外接晶振的频率都能提升的很高,比如ATMEL公司的AT89S51单片机外接晶振的频率最大只有33MHz,那么通过提升外接晶振频率降低51单片机的定时器的误差有一定的局限性。   1.2 软件纠正 其实,在使用定时器定时时,定时器的误差一般是由响应过程引起的,这个误差我们可以通过软件调整的方法对其进行纠正。比如我们利用51单片机T0实现50ms的定时,T0工作在方式1,晶振频率为12MHz,那么程序我们一般这样实现:   Void main()   {   TMOD=0x01; //设置T0工作方式,方式1   TH0=()/256; //置初值   TL0=()%256;   ET0=1; //开启T0中断   TR0=1; //启动T0   EA=1; //开CPU中断   ...   }   Void timer0() interrupt 1 //T0中断程序   {   TH0=()/256; //重置初值   TL0=()%256;   ...   }   在以上的程序中,T0的中断程序中直接对TH0和TL0进行赋值,这里忽略了CPU在响应定时中断过程中加1计数器的计数值,这样会引起较大的定时误差,而且这个误差是累积的,程序执行的时间越长,误差越大。   我们可以将T0的中断程序做如下的修改:   Void timer0() interrupt 1 //T0中断程序   {   TH0=()/256+TH0; //重置初值   TL0=()%256+TL0;   ...   }   这样的话,在CPU响应中断的过程中,虽然定时器内部加1计数器还在计数,但是在定时中断程序中,我们将已经计数的值进行累加,这样就能够降低CPU在响应中断时所产生的误差。   1.3 利用外部硬件定时器 我们知道,51单片机的定时/计数器可以实现定时和计数方式,两者的核心都是在计数,只不过定时方式是对机器周期进行计数,计数方式是对外部引脚输入的输入的方波信号进行计数。那么我们在利用定时器定时时,也可以将定时计数器设置在计数方式。比如我们要实现50ms的定时,我们可以在单片机外部设计一个周期为50ms,占空比为50%的方波电路,将该电路产生的方波信号送入单片机的定时/计数器的外部引脚,这样我们在确定定时时间时,可以通过查询定时器的加1计数器的增量是否为5就可以了,这样也能降低定时误差。不过利用这种方式在实现定时时,外部硬件定时器所产生的基准时间的精确程度决定了定时的误差,外部硬件定时器所产生基准时间越精确,误差越小。   2 结束语   在51单片机系统设计中,在需要用到定时的场合,我们总希望定时误差越小越好,尤其是对于某些对定时时间要求比较高的系统。那么以上的三种方法我们可以相互结合使用,这样可以将定时误差大大降低。   参考文献:   [1]马立国.51单片机定时器中断误差分析.集成电路通讯,).   [2]杨洪亮.基于MCS51单片机定时误差的分析及纠正.临沂师范学院信息学院,福建电脑,2006(12).   [3]李全利,迟荣强.单片机原理与接口技术.高等教育出版社.
转载请注明来源。原文地址:
【xzbu】郑重声明:本网站资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有,如有不愿意被转载的情况,请通知我们删除已转载的信息。
xzbu发布此信息目的在于传播更多信息,与本网站立场无关。xzbu不保证该信息(包括但不限于文字、数据及图表)准确性、真实性、完整性等。}

我要回帖

更多关于 51单片机定时器c程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信