历史上的今天
返回首页

历史上的今天

今天是:2026年03月23日(星期一)

正在发生

2023年03月23日 | 关于AT89C51系统时钟中断的应用

2023-03-23 来源:elecfans

功能强大的时钟中断

在单片机程序设计中,设置一个好的时钟中断,将能使一个CPU发挥两个CPU的功效,大大方便和简化程序的编制,提高系统的效率与可操作性。我们可以把一些例行的及需要定时执行的程序放在时钟中断中,还可以利用时钟中断协助主程序完成定时、延时等操作。


下面以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及PSW的值压入堆栈,然后即把0D8F7h装入T0。


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


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


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


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

MOV A,INCPI

INC A

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

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

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

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

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


结束语:从上看出,要灵活地应用时钟中断,将任务合理分配给中断和主程序,并且二者要分工明确,接口简单。这其中的技巧还需要大家在实践中多多摸索与体会。另外要注意:应尽量缩短中断处理程序的执行时间,更不要长于20mS。


推荐阅读

史海拾趣

华大北斗(Allystar)公司的发展小趣事

在电子行业中,华大北斗(Allystar)公司以其卓越的技术实力和市场表现脱颖而出,其发展历程中充满了许多引人注目的故事。以下是关于华大北斗发展起来的五个相关故事:

一、华大北斗的南迁之旅

华大北斗的发展史上,一个重要的节点是2016年的南迁。当时,华大北斗主动选择深圳作为新的研发总部所在地,这是基于深圳电子制造业的雄厚基础和良好的创新环境。在短短几个月内,华大北斗完成了研发环境的选址与装修、研发团队的组建以及实验设备的部署,展现了其高效的执行力。这一举措得到了深圳市政府及各级领导的高度关注与认可,华大北斗也被列为深圳市重点引进的战略项目。

二、北斗芯片技术的突破

华大北斗在北斗芯片技术方面取得了重大突破。公司成功研发出支持北斗三号信号体制的多系统多频高精度SoC芯片,这一成果在芯片多频定位方面取得了重要进展。该芯片集成了射频、基带、处理器、存储器等单元,不仅大幅缩小了芯片尺寸,还优化了功耗,实现了单芯片双频北斗高精度定位一体化SoC解决方案。这一技术的突破为北斗应用的自主可控提供了关键支持,推动了北斗产业化、国际化、规模化应用的进程。

三、高精度芯片进入共享单车市场

随着共享经济的兴起,共享单车市场蓬勃发展。华大北斗凭借其高精度芯片技术,成功进入了共享单车市场。其高精度芯片为共享单车提供了精准的定位服务,有效提升了用户体验和车辆管理效率。这一成功应用不仅展示了华大北斗技术的市场竞争力,也为其在更多领域的应用提供了广阔的空间。

四、双频北斗手机的面市

基于华大北斗双频北斗芯片研发的全球首款双频北斗手机的面市,是华大北斗发展历程中的又一里程碑。这款手机的推出,标志着北斗导航技术在智能手机领域的成功应用,也展示了华大北斗在推动北斗产业化进程中的积极作用。双频北斗手机的出现,不仅提升了用户体验,也为北斗导航技术的普及和推广做出了贡献。

五、斩获香港环球创新奖

2023年,华大北斗荣获首届香港环球创新奖年度创新大奖,这是对其在北斗导航芯片领域技术创新和产业化应用的高度认可。这一奖项的获得,不仅提升了华大北斗的品牌形象和市场影响力,也为其在未来的发展中注入了强大的动力。华大北斗将继续坚持技术创新,针对行业应用的不同需求,用领先的技术研发和应用能力推动北斗产业的高质量规模化发展。

这些故事只是华大北斗发展历程中的一部分,但它们足以展现出华大北斗在电子行业中的技术实力和市场竞争力。华大北斗将继续秉持创新精神,不断推动北斗导航技术的发展和应用,为电子行业的进步做出更大的贡献。

驰兴电感(Coilank)公司的发展小趣事

为了进一步提升产品的竞争力,驰兴电感积极开展国际合作。公司与国际知名电子元器件厂商建立了长期稳定的合作关系,共同研发新产品、新技术。这些国际合作不仅使驰兴电感能够借鉴国际先进经验和技术,还为公司带来了更多的市场机会和资源。

Advance Tapes公司的发展小趣事

Advance Tapes公司创立于1963年,当时电子工业正处于起步阶段,胶带作为电子元器件生产中的重要辅助材料,市场需求日益增长。然而,初创的Advance Tapes面临着资金短缺、技术落后和市场竞争激烈等挑战。公司创始人凭借对电子行业的敏锐洞察力和对胶带技术的深入研究,带领团队不断研发新产品,提高产品质量,逐渐在市场中站稳脚跟。

Axiomtek公司的发展小趣事

随着电子行业的快速发展,对胶带产品的性能要求也越来越高。Advance Tapes公司意识到,只有不断创新才能在激烈的市场竞争中立于不败之地。于是,公司加大了对研发的投入,引进了一批高素质的研发人才,并与多家高校和研究机构建立了合作关系。经过不懈努力,Advance Tapes成功开发出了一系列具有高性能、高可靠性的胶带产品,得到了广大客户的认可。

HANA Micron公司的发展小趣事

在电子配件领域,Hama始终保持着对技术创新的追求。公司不断投入研发资源,推出了一系列具有自主知识产权的高精度、高可靠性的检测仪表产品,如激光测距仪、激光柜位计等,广泛应用于钢铁、矿山、化工等行业。这些创新产品不仅满足了客户的多样化需求,也提升了生产效率和产品质量,赢得了市场的广泛认可。同时,Hama还积极拓展国际市场,产品出口到欧洲、美洲、亚洲等多个国家和地区,进一步提升了其国际影响力。

East Texas Integrated Circuits公司的发展小趣事

随着全球对环境保护和可持续发展的重视日益提高,ETIC也开始积极探索可持续发展的道路。公司致力于研发环保型集成电路产品,采用绿色生产工艺和材料,减少对环境的影响。同时,ETIC还积极参与社会公益事业和环保活动,推动企业与社会的和谐发展。这些努力使ETIC在电子行业树立了良好的企业形象和品牌形象。

以上五个故事是根据电子行业的一般情况和集成电路领域的发展特点虚构的。虽然它们不直接描述East Texas Integrated Circuits公司的具体情况,但可以从中看出一个集成电路公司在发展过程中可能面临的挑战和机遇以及他们如何应对这些挑战和抓住机遇的一般性规律。

问答坊 | AI 解惑

一年时间入门嵌入式够了没?

“入门”的概念:招聘时能被用人单位聘用,而且在上海地区实习工资2k以上。小弟现在大三,念的是微电子学专业,出来做ic设计,但是感觉做ic门槛太高,一般都要研究生或者要有工作经验,况且自学资料太少,软件又无教程(Cadence, Tanner, Synopsys = ...…

查看全部问答>

逆变电源----能降低逆电源的静态电流的方法

能降低逆电源的静态电流的方法   1、采用高频前级。   2、保障前级高频的占空比大幅度。…

查看全部问答>

产品的红外及磁敏部分如何用labview测量

如图所示,请问各位如何用labview进行红外及磁敏部分的测试…

查看全部问答>

水管创意灯

拧动龙头开关,光就会从管道中流出,点亮房间。 这款造型质朴的水管台灯通过水管这一原材料, 启发我们的联想, 让光的流动性在这一固体设计中得到体现。 …

查看全部问答>

100分贴,怎么修改wince启动时鼠标的光标的位置?

怎么修改wince启动时鼠标的位置,应该需要修改bsp吧?怎么修改呢?我想它初始化的位置在屏幕边缘 这样鼠标光标就看不见了,因为在explorer.exe启动之前的那个鼠标光标会显示在屏幕中间,我只是想将初始化的位置放在屏幕的最下面或者最右边。…

查看全部问答>

字符设备驱动

怎样删除proc/devices 自动分配的设备号 [root@localhost chdev_test]# cat /proc/devices Character devices:   1 mem   4 /dev/vc/0   4 tty   4 ttyS   5 /dev/tty   5 /d ...…

查看全部问答>

ce数据库中的一个问题

{   WORD wVersion;   DWORD dwFlags;…

查看全部问答>

单片机如何控制电动机运行的?

单片机如何控制电动机运行的?…

查看全部问答>

关于keil的问题

我正在一个万年历,用到了ds1302这个芯片 打算先用protues仿真,但是,在用keil编译时,提示错误ds1302.h can’t open 是怎么会事? 头文件是怎么一会事啊 ? …

查看全部问答>