单片机时钟中断的应用

发布者:camuspyc最新更新时间:2014-01-16 来源: dqjsw关键字:单片机  时钟中断  AT89C51 手机看文章 扫描二维码
随时随地手机看文章

本文以6MHz时钟的单片机AT89C51系统为例,说明时钟中断的应用:

定时器初值与中断周期 时钟中断无需过于频繁,一般取20mS(50Hz)即可。如需要百分之一秒的时基信号,可取10mS(100Hz)。这里取20mS,用定时器T0工作于16位定时器方式(方式1)。T0的工作方式为:每过一个机器周期自动加1,当计满0FFFFh,要溢出时,便会产生中断,并由硬件设置相应的标志位供软件查询。即中断时比启动时经过了N+1个机器周期。所以,我们只要在T0中预先存入一个比满值0FFFFh小N的数,然后启动定时器,便会在N个机器周期后产生中断。这个值便是所谓的“初值”。下面计算我们需要的初值:时钟为6MHz,12个时钟周期为一个机器周期,20mS中有10000个机器周期。(10000)10=(2710)16,则0FFFFh-2710h+1=0D8F0h。由于响应中断、保护现场及重装初值还需要7~8个机器周期,把这个值再加上7,即T0应装入的初值是0D8F7h。每次中断进入后,先把A及 W的值压入堆栈,然后即把0D8F7h装入T0。

设置一个单元,每次中断加1 我们可以取内部RAM中一个单元,取名为INCPI(Increase Per Interrupt),在中断中,装完T0初值后,用INC INCPI指令将其加一。从这个单元中,无论中断程序还是主程序,都可以从中获得20mS的1~256之间任意整数倍的信号。例如:有一段向数码管送显的程序,需要每0.5秒执行一次以便刷新显示器,便可以设一单元(称为等待单元)W_DI ,用/MOV A,INCPI/ADD A,#25/MOV W_DI ,A/语句让其比当前的INCPI值大25,然后在每次中断中检查是否于INCPI值相等。若相等,说明已过了25个中断周期,便执行送显程序,并且让W_DI 再加上25,等待下个0.5秒。我们可以设置多个等待单元,以便取出多个不同的时基信号。让中断程序在每次中断时依次查询各个等待单元是否与INCPI相等,若相等,则执行相应的处理,并重新设置该等待单元的值,否则跳过。例如:用0.5秒信号刷新或闪烁显示器,用1秒信号产生实时时钟,或输出一定频率的方波,以一定间隔查询输入设备等。

在中断中读键 通常,我们在主程序中读键盘,步骤为:扫描键盘,若有键按下,则延时几十毫秒去抖动,再次确认此键确实按下,然后处理该键对应的工作,完成后再次重上述步骤。但这有两点不足:1.处理相应工作时无法锁存按键的输入,即可能漏键。2.延时去抖时CPU无法做其它事情,效率不高。如果把读键放入时钟中断中,则可避免上述不足。方法为:如果两次相邻的中断中都读到同一个键按下,则这个键是有效的(达到了去抖目的),并将其锁存到先入先出(队列)的键盘缓冲区,等主程序来处理。这样,主程序处理按键的同时,仍可响应键盘的输入。缓冲区深度通常可设为8级,若锁存的键数多于8个,则忽略新的按键,并报警提示用户新的按键将无效。若键盘缓冲队列停滞的时间大大长于主程序处理按键所需要的最大时间,说明主程序已出错或跑飞,可以在中断用指令将系统复位,起到了看门狗的目的。

主程序中的延时 由于有常开的时钟中断,所以当主程序中有需要时间较短、精度较高的延时时,应暂时把时钟中断关闭。而程序中需要时间较长、精度不高的延时时,便可仿照下需的写法,避免多层嵌套的循环延时。

例:在P1.1输出1秒的高电平脉冲

MOV A,INCPI

INC A

CJNE A,INCPI$ ;等待一次中断处理完成

SET P1.1 ;设P1.1为H,脉冲开始

ADD A,#50 ;50个20mS为1秒

CJNE A,INCPI,$ ;等中断将INCPI加一50次

CLR P1.1 ;设P1.1为L,脉冲结束

结束语:从上看出,要灵活地应用时钟中断,将任务合理分配给中断和主程序,并且二者要分工明确,接口简单。

注意:应尽量缩短中断处理程序的执行时间,更不要长于20mS。

关键字:单片机  时钟中断  AT89C51 引用地址:单片机时钟中断的应用

上一篇:51单片机如何扩展外部端口
下一篇:基于MCS-51单片机的定时报警器电路原理图

推荐阅读最新更新时间:2024-03-16 13:34

低功耗MCU动态时钟分析
  本文结合MSP430系列微处理器,详细论述了通过控制改变MCU的时钟频率来降低功耗的设计方法。   1 功耗产生的原因   在CMOS电路中,功耗损失主要包括静态功耗损失和动态功耗损失两部分。其中静态功耗主要是由反偏PN结的漏电流和晶体管的亚阈值电流引起的,其最主要的形式就是漏电损失。其实CMOS电路理论上不会有静电功耗损失,因为从供应电源到地面没有直接的路径,但实际上晶体管总会有漏电电流的出现,从而出现漏电损失。在0.18μm工艺水平之下,其在功耗中所占比重大约为5%~10%,一般可以忽略(但是随着工艺的提高,供电电压的降低,又使其所占比重逐渐上升)。这样,在CMOS电路中,动态功耗就成了这个系统功耗的主要组成部分,约占
[单片机]
低功耗<font color='red'>MCU</font>动态时钟分析
基于ISPLSI及单片机的电动机保护装置的研究
1 引言     高压大容量电动机是各发电厂及工矿企业的重要动力设备,由于电动机本身质量问题以及启动频繁、工作条件恶劣等各种原因,其故障率相当高。原电力部“发电厂国产高压电动机质量调查报告”表明:在所调查的 34 个电厂中,高压电动机总共 681 台,损坏 103 台,占 15.1% ;带缺陷运行 183 台,占 36.9 % ;由于设备质量问题引起的占 78.03 % 。在损坏的 103 台中,相间和接地故障损坏 15 台,占 14.5 % ;定子绕组开路引起不平衡运行故障 25 台, 占 24.34 % ;其他原因引起的故障 63 台,占 61.1% ,仅就定子绕组故障统计,开路故障台数约占 45.4 % 。     由统计
[单片机]
基于ISPLSI及<font color='red'>单片机</font>的电动机保护装置的研究
MSP430单片机的BSL特性
BSL的意义: 1、不用仿真器、编程器,就可以实现内存修改(可以应用为参数修改),程序下载。 能加速程序成熟后的批量生产。方便在板修改程序参数。 2、JATG熔丝烧断后,访问内存的唯一方法。 MSP430启动加载程序(Bootstrap Loader,以下简称BSL)允许用户通过标准的RS-232串行口访问CPU内存,包括Flash和Ram,这项功能为嵌入式应用提供了方便的维护方式。 要使MSP430单片机进入BSL,需要给特定引脚上一个特定时序,接到这个特定时序后,CPU程序指针(PC)指向内存中的0C00H地址处,这是一段1K大小的ROM区(0C00H-1000H),BSL就在这里。 通过BSL对CPU的操
[单片机]
MSP430G2553与MSP430F5336系列单片机总结[1]
在进行MSP430单片机的编程时,时钟的运用很重要,MSP430一共有5个时钟源,分别是外接的XT1和XT2时钟源,介绍如下: 1.XT1CLK:低频/高频振荡器,我的MSP430F5336使用的就是32768HZ的晶振 2.VLOCLK:内部超低功耗低低频振荡器,典型频率是12khz; 3.REFOCLK:内部调整低频参考振荡器,典型值为32768hz; 4.DCOCLK:内部数字时钟振荡器,可由FLL稳定后得到; 5.XT2CLK:高频外界振荡器,我F5336接的是20MHZ晶振; 以上五个时钟大家可以理解为晶振,有的是内部自带的,如2,3,4,这三个,有的是外接自己设计的,如XT1和XT2,当我们需要
[单片机]
MSP430G2553与MSP430F5336系列<font color='red'>单片机</font>总结[1]
51单片机~继电器,续流二极管相关原理
继电器: 继电器上标识:AC表示交流电,最下面一行05V是5V额定电压。下面的30VDC表示直流电压30V。 继电器电路图接:如下图中间部分; (1) 4,5口是D,E; (2)2常开,3常闭; (3)1,3组成闭合,1和2组成开启; 使用衔铁的原因:衔铁不会被磁化。 续流二极管: 》工作原理:(用感应电动势相关知识理解)所以续流二极管需要在电路截至后迅速打开。
[单片机]
51<font color='red'>单片机</font>~继电器,续流二极管相关原理
MSP430学习笔记(一)--从点灯说起
在我自学使用德州仪器所生产的MSP430系列微控制器时,遇到了新手都可能会遇到的一些问题,现总结记录如下,作为笔记保留,同时也希望能帮到其他有需要的人。新手建议从MSP430G2553学起。 这个范例是来自Ti官网的MSP340G2553_LED闪烁实验,下面我们会在该例的基础上记录和修改。(笔记展示代码均使用Ti的Code Composer Studio 9.1.0作为开发工具) #include msp430.h int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1DIR |= 0x01;
[单片机]
MSP430学习笔记(一)--从点灯说起
2-单片机温度检测记录系统(温度时间串口传输)
具体实现功能 具体功能: 1、LCD显示实时时钟:年、月、日、时、分、秒; 2、每30秒采样温度,LCD更新显示温度值; 3、按键触发存储当前温度和时钟信息(年、月、日、时、分); 4、按键触发串口传输存储的温度和时钟信息,在串口调试助手上显示当前的温度及时间。 5、温度测量精度:0.1℃。 单片机介绍 51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,
[单片机]
2-<font color='red'>单片机</font>温度检测记录系统(温度时间串口传输)
基于单片机的人体阻抗测量系统
  引 言   医学 阻抗 测量是利用生物组织与器官的电特性及其变化,提取与生物体生理、病理状况相关的生物医学信息的一种检测技术。它通常借助于驱动电极向检测对象送入一微小的交变电流(或电压)信号,同时测量两极的电压(或电流)信号,从而计算出相应阻抗,然后应用于不同目的。   本设计利用MSP430F149自带的串口通过RS485进行远距离实时传输,上位机可将实时数据进行曲线绘制、数据保存等处理。   1 系统结构   系统采用TI公司的MSP430F149单片机。该单片机有60 KB Flash、2 KB RAM,具有强大的数据处理能力。单片机通过向AD9852发送频率字、幅度字从而控制正弦波的频率、幅度。正弦波经过电流转
[单片机]
基于<font color='red'>单片机</font>的人体阻抗测量系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved