0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于AT89C51系统时钟中断的应用

电子工程师 来源:网络整理 作者:工程师姚远香 2018-07-21 11:08 次阅读

功能强大的时钟中断

单片机程序设计中,设置一个好的时钟中断,将能使一个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。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 时钟
    +关注

    关注

    10

    文章

    1734

    浏览量

    131486
  • 中断
    +关注

    关注

    5

    文章

    898

    浏览量

    41503
  • AT89C51
    +关注

    关注

    27

    文章

    543

    浏览量

    81235
收藏 人收藏

    评论

    相关推荐

    基于51单片机的7人多数投票表决器设计

    设计编号:P13 1.主要功能:           基于51单片机AT89C51/52(与AT89S51/52、AT89C51/52、STC89
    的头像 发表于 11-09 09:48 853次阅读
    基于<b class='flag-5'>51</b>单片机的7人多数投票表决器设计

    TMS320C6000系统时钟电路示例

    电子发烧友网站提供《TMS320C6000系统时钟电路示例.pdf》资料免费下载
    发表于 10-28 10:33 0次下载
    TMS320<b class='flag-5'>C</b>6000<b class='flag-5'>系统</b><b class='flag-5'>时钟</b>电路示例

    Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,跪求大神解决解决了

    第一个图是AT89C51第二个图是自己画的元件
    发表于 07-16 14:54

    基于AT89C52的多功能数字时钟系统

    本设计基于单片机技术原理,以单片机芯片AT89C52作为核心控制器、通过硬件电路的制作以及软件程序的编制,设计了多功能数字时钟系统[1]。该时钟系统
    发表于 06-15 11:26 1次下载

    基于单片机AT89C51的数字电压表仿真实现,原理图,论文,源码

    概述 本设计是基于Atmel 51单片机开发平台和自动控制原理的基础上实现的一种数字电压表系统。 该系统采用AT89C51单片机作为控制核心,以ADC0809为模数转换芯片,实现量程0
    发表于 04-03 20:16

    毕设,51单片机的自动售货计设计与实现(C程序+硬件+论文)

    概述 本文设计了一款以AT89C51单片机为核心的自动售货机系统,并且着重详细地介绍了自动售货机的整体系统设计方案、硬件选择基础、软件使用方法及技巧。 以AT89C51作为CPU处理单
    发表于 03-29 18:35

    基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料

    系统概述 本课题以AT89C51单片机为核心设计一种超声波倒车雷达系统,同时兼顾车内温度测量。 系统AT89C51控制器、HC-SR0
    发表于 03-19 14:17

    基于单片机多功能洗衣机控制

    需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片
    发表于 03-18 10:13 698次阅读
    基于单片机多功能洗衣机控制

    AT89S51中文资料介绍

    电子发烧友网站提供《AT89S51中文资料介绍.pdf》资料免费下载
    发表于 02-20 09:24 13次下载

    如何配置TC38x I2C中断

    我们的项目有 MCAL,但是 Loader 只是一个 while 循环,不要使用操作系统模块。 我们已经通过轮询模式实现了 I2C 通信,然后我们想切换到中断模式。 我们如何 CAN 通过寄存器
    发表于 01-29 07:42

    如何生成关于时钟同步功能的DTC?

    如何生成关于时钟同步功能的DTC? 时钟同步功能是指在一个系统内的多个时钟源进行同步,确保它们的时间保持一致。这在许多实时
    的头像 发表于 01-16 15:10 616次阅读

    基于51单片机的实时时钟设计

    电子发烧友网站提供《基于51单片机的实时时钟设计.rar》资料免费下载
    发表于 01-12 10:43 13次下载

    s3c2410中断控制模块的中断源状态寄存器是?

    S3C2410是一款由三星电子公司设计的具有多种功能的嵌入式处理器。其中的中断控制模块用于管理系统中断请求和中断服务程序。在S3
    的头像 发表于 01-05 17:28 739次阅读

    基于51单片机的实时时钟设计

    电子发烧友网站提供《基于51单片机的实时时钟设计.rar》资料免费下载
    发表于 01-02 10:15 43次下载

    基于51单片机的实时时钟+温度应用设计

    基于51单片机的实时时钟+温度应用设计(仿真)
    发表于 01-02 09:55 6次下载