学术堂首页 | 文献求助论文范文 | 论文题目 | 参考文献 | 开题报告 | 论文格式 | 摘要提纲 | 论文致谢 | 论文查重 | 论文答辩 | 论文发表 | 期刊杂志 | 论文写作 | 论文PPT
学术堂专业论文学习平台您当前的位置:学术堂 > 计算机论文 > 计算机应用技术论文

STC15系列单片机下降沿+上升沿触发方式的应用及注意事项

来源:单片机与嵌入式系统应用 作者:刘宝成
发布于:2021-07-14 共6700字
    本篇论文目录导航:

【第1-2篇】51单片机论文(优选范文6篇)
【第3篇】 STC15系列单片机下降沿+上升沿触发方式的应用及注意事项
【第4篇】基于AT89C51单片机的家用智能电子密码锁的设计方法
【第5篇】对小巧、灵活的51单片机酒精浓度监测系统的研究
【第6篇】51单片机的中文编辑研究与实现

  51单片机论文第三篇: STC15系列单片机下降沿+上升沿触发方式的应用及注意事项

  摘要:外部中断在单片机应用系统中经常用于系统故障处理、采集数据的处理、人机交互的键盘输入以及通过按键唤醒单片机退出掉电工作模式等工作场景。STC15系列单片机外部中断0、外部中断1增加了上升沿或下降沿均可触发中断的新特性,这种新特性在使用时如果不加以注意可能会使中断服务程序重复执行两次,导致程序出错,尤其是在采集数据的处理、人机交互的键盘输入等应用场合埋下隐患。通过对使用STC15系列单片机的外部中断0、外部中断1的实例分析,给出解决方案。对使用STC15系列单片机进行系统设计,尤其是对原来使用STC89系列等通用51单片机的系统进行硬件升级后的软件移植具有重要指导意义和参考价值。

  关键词: STC15;单片机;外部中断; ADC;

  Abstract:External interrupt is typically used in system fault processing,data acquisition,keyboard input and wake-up single-chip microcomputer to quit power-off mode.The external interrupt 0 and external interrupt 1 of STC15 series MCU add a new feature that the interrupt can be triggered by the rising edge or falling edge.If the user does not pay much attention to this feature,it may cause the interrupt service program to be executed twice,which will lead to a program error.This kind of new feature will have an underlying problem in the application of data acquisition processing,keyboard input of human-computer interaction and other applications.The examples of external interrupt 0 and external interrupt 1 of STC15 series MCU are discussed in this paper,the solutions are given.The study of this paper has important guiding significance and reference value for the system designed by STC15 series MCU,especially the software transplantation after a hardware upgrade of the original system used STC89 series and other general-purpose MCS 51 single-chip microcomputer.

  0 引言

  中断系统是单片机的重要组成部分,一般包括定时/计数器中断、串行口中断、外部中断等[1]。中断的使用提高了单片机系统的数据处理效率,因此在单片机中得到了广泛的应用[2]。外部中断在单片机应用系统中经常用于故障中断、A/D转换数据处理等实时性要求很高的操作中。

  笔者从事51单片机的教学工作多年,过去在学生实验中使用STC89系列单片机,也使用STC89系列单片机及AT89系列单片机进行过一些电子装置的设计,都很顺利。最近,在调试一个使用STC15F2K60S2单片机的外部中断0和外部中断1的中断实验中遇到了一个奇怪的问题:中断服务程序总是被执行两次。仔细分析实验程序,没有发现任何问题,事实上该实验程序在STC89C52RC上执行也没有任何问题,曾一度使笔者陷入迷惑。

  1 外部中断实验

  1.1 外部中断实验设计

  外部中断实验是教学中为了演示单片机外部中断特性和中断优先级而设计的,软、硬件思路是:主程序循环点亮接在P1.0~P1.3的4个LED发光二极管,点亮时间间隔约1s;两个按键分别接在单片机的两个外部中断引脚INT0和INT1上,按键按下为低电平,触发相应外部中断进而执行相应外部中断服务程序;外部中断0的服务程序使接在P1.6上的LED发光二极管点亮约5s,外部中断1的服务程序使接在P1.7上的LED发光二极管点亮约10s。电路原理图如图1所示。

 

  图1 外部中断实验电路原理图   

  1.2 实验现象及存在问题

  为了突出STC15系列单片机同STC89系列单片机及其他通用MCS-51兼容单片机外部中断0和外部中断1的主要区别,下面的实验仅描述外部中断0和外部中断1单独中断的现象。实验程序如图2所示,其中图2(a)、图2(b)、图2(c)分别是实验主程序、外部中断0服务程序、外部中断1服务程序,这三个程序对于STC89C52RC和STC15F2K60S2是一样的。由于STC15系列单片机是1T单片机,STC89系列单片机是12T单片机,因此实现相同延时时间的延时子程序不一样,STC89C52RC的延时子程序如图2(d)所示,STC15F2K60S2的延时子程序如图2(e)所示。

 

  图2 外部中断实验汇编源程序   

  把汇编好的单片机程序分别下载到STC89C52RC和STC15F2K60S2单片机中,接在P1.0~P1.3的LED按约1s的时间间隔逐个点亮并周而复始地循环,说明下载到两个单片机里的延时程序的延时时间是正确的。分别单独按下INT0所接按键K1和INT1所接按键K2,均能正常中断主程序的执行,但两种单片机中断服务程序的执行时间不同,STC15F2K60S2的执行时间约为STC89C52RC执行时间的2倍,即STC89C52RC的中断现象是正常的,STC15F2K60S2的中断现象不对,似乎重复执行了两遍中断服务程序。

  仔细分析两种单片机的实验程序,在两个外部中断服务程序里均通过切换工作寄存器组的方法对主程序和中断服务程序共同使用的延时程序里的R3、R4、R5进行了切换,不存在资源冲突的情况,同时STC15F2K60S2单片机的延时子程序在主程序中调用的延时时间是正确的,而同样的中断服务程序在STC89C52RC又是正常的。那么唯一的可能就是STC15F2K60S2和STC89C52RC的中断特性不一样。

  2 STC15系列单片机中断特性

  STC15系列和STC89系列单片机都是MCS-51的兼容单片机,只不过STC15系列单片机是1T单片机,STC89系列单片机是12T单片机,容易让人想当然地认为除了软件执行速度不同外,其他都是一样的。这种惯性思维方式一度使上述问题的分析陷入了困境,甚至怀疑是不是STC15F2K60S2单片机存在BUG。

  通过仔细阅读STC15系列单片机的数据手册才发现STC15系列单片机外部中断0和外部中断1的触发方式已经不再是低电平和下降沿两种通常所用的触发方式,而是变成了下降沿+上升沿和下降沿两种触发方式[3,4]。默认的触发方式为下降沿+上升沿触发,也就是说下降沿或者上升沿都可以触发中断。为了验证是不是由于这种新的触发方式引起的上述问题,将触发方式设置为单一的下降沿触发,发现进入中断后点亮LED发光二极管的时间正确了,也就是说确实是这种新的触发特性导致的。

  2.1 STC15系列单片机外部中断新的触发方式对比分析

  51单片机外部中断0或1的触发方式是由特殊功能寄存器TCON中的IT0或IT1进行设置,单片机上电复位后TCON的复位值是00H,即对于普通51单片机来说外部中断0或1的触发方式是低电平触发,对于STC15系列单片机来说外部中断0或1的触发方式是下降沿+上升沿触发。

  在上面的实验中,按键从按下到释放需要的时间一般在0.1~0.3s之间,而上述中断服务程序的执行时间约为5s或10s,即中断服务程序的执行时间远远大于按键的操作时间,当中断服务程序执行完,按键早已经释放,对应的中断引脚电平已经恢复为高电平。IT0或IT1为0时,对应普通51单片机而言,外部中断0或1是低电平触发方式,按键按下单片机执行相应外部中断服务程序,当外部中断服务程序执行完,按键已经释放,单片机不会再次进入中断。而对于STC15系列单片机来说,为什么按键早已释放还会再次进入中断呢?只有一种解释,那就是STC15系列单片机对按键释放时的上升沿做了记忆。推测STC15系列单片机对ITx(x取0或1)为0时外部中断的执行过程如下:当按下按键时,外部中断0或1的引脚上出现下降沿,置位IEx(x取0或1),在允许中断的情况下CPU响应该中断,内部生成一条长调用指令(LCALL)转到相应的中断入口地址执行相应的中断服务程序,与此同时清除置位的IEx(x取0或1)外部中断请求标志位;当按键释放时,外部中断0或1的引脚上出现上升沿,再次置位IEx(x取0或1),此时单片机正在执行中断服务程序,待中断服务程序执行完返回主程序后,由于IEx(x取0或1)置位导致单片机再次进入中断。如果真的是这样的过程,对于采用这种触发方式进行按键处理和A/D转换数据处理时就会带来致命错误,尤其是对从STC89系列或其他普通51单片机移植过来的程序来说,这种错误更容易发生,必须引起足够重视。

  2.2 STC15系列单片机下降沿+上升沿触发方式验证

  为了弄清楚STC15系列单片机外部中断0或1的下降沿+上升沿触发方式的操作机理,特设计下面实验进行验证。

  2.2.1 中断请求标志位在进入中断时是否被清零

  以外部中断0为例进行说明。在开总中断和允许外部中断0中断的情况下,当外部中断0满足中断条件时,IE0被置1向CPU申请中断,CPU响应该中断后把IE0清0并生成一条长调用指令转到外部中断0的矢量地址0003H去执行程序。由于IE0是内部信号,故设计图3所示程序,以判断IE0在进入中断服务程序后的状态。

 

  图3 判断IE0在进入中断服务程序后的状态  

  仍然沿用图1所示电路,把图3中程序汇编后下载到STC15F2K60S2单片机中,按下接外部中断0引脚的K1按键,可以发现在K1按键按下的同时P1.0所接的LED点亮,说明在进入中断服务程序后IE0已经被清0。

  2.2.2 下降沿之后的上升沿是否被记忆

  在上述实验中已经验证IE0在进入中断服务程序后被清0,但并不能说明按键释放后IE0是否又被置1,从而再次进入中断服务程序。为此又设计如图4(a)所示程序进行实验,延时程序DELAY1000MS同图2(e)。

 

  图4 判断下降沿之后上升沿是否置位IE0实验程序 

  同样把图4(a)所示程序汇编后下载到STC15F2K60S2单片机中,按下就马上松开接外部中断0引脚的K1按键,观察到的现象是:接在P1.0上的LED先是点亮约1s,然后熄灭1s,接着又再次点亮。这个实验现象说明当按键按下后单片机进入中断服务程序,且IE0是被清0的,由于按键按下后马上就松开了,这个过程的时间小于中断服务程序的执行时间,在中断服务程序的第一个1s延时后再去读IE0,此时IE0又被置1了,这就是实验现象中LED先点亮约1s,然后熄灭1s的原因。接下来LED又再次点亮说明单片机中断返回后马上又再次进入中断。即STC15F2K60S2单片机的外部中断0在下降沿触发中断后还能记忆上升沿的触发标志。为进一步验证该现象又设计了如图4(b)所示的程序,把这个程序汇编后下载到单片机中,按下并立即释放按键K1发现接在P1.0的发光二极管D1在按下按键K1的同时熄灭了,然后发光二极管D1马上又点亮的同时接在P1.1的发光二极管D2熄灭了。延长按键按下的持续时间,可以清楚地发现:在按键K1按下的同时,发光二极管D1开始点亮并持续到按键K1释放;按键K1释放的同时,发光二极管D1熄灭,而发光二极管D2点亮。用STC15F2K60S2单片机的外部中断1重复实验,实验现象与此相同。此实验现象充分说明STC15F2K60S2单片机的外部中断0和外部中断1在下降沿触发中断后还能记忆上升沿的触发标志。用类似的方法也可以验证STC15F2K60S2单片机的外部中断0和外部中断1在上升沿触发中断后也能记忆下降沿的触发标志,这里不再赘述。

  3 STC15系列单片机下降沿+上升沿触发方式的应用及注意事项

  STC15系列单片机外部中断0和外部中断1在单片机上电复位后的默认触发方式是下降沿+上升沿触发方式。由于STC15系列单片机外部中断0和外部中断1对下降沿和上升沿均能触发中断并能对下降沿(上升沿)随后的上升沿(下降沿)触发信号记忆,在使用时需要注意以下事项。

  3.1 用于键盘中断

  由于STC15系列单片机外部中断0和外部中断1的上述新特性,在触发中断后并不能区分是下降沿还是上升沿触发的中断,而且还会对下降沿(上升沿)随后的上升沿(下降沿)触发信号记忆。而普通51单片机在上电复位后的外部中断的默认触发方式是低电平触发,这种触发方式是每个机器周期都去采样外部中断引脚上的电平信号,但并不对该信号做记忆,当单片机正在执行该外部中断服务程序或其他同优先级/高优先级中断服务程序时,即使采样到低电平信号,也不会置位相应中断标志位,而是直接丢弃该中断申请,只有在中断返回后采样到外部中断引脚上的低电平信号,才会置位相应中断标志位、向CPU申请中断。因此在普通51单片机中只要在中断服务程序返回前外部引脚上的低电平信号消失,就不会引发二次中断。

  因此,在键盘中断应用中使用STC15系列单片机外部中断0或外部中断1将会出现按键按下时进入中断,执行一次中断服务程序,在按键释放时还会进入中断,并再次执行中断服务程序。因此在键盘中断应用中如果不能很好考虑到这种触发特性,将导致键码或按键功能被识别或执行两次,从而引起系统功能错误。这种错误经常发生在由普通51单片机改型为STC15系列单片机的使用者身上,可以在这类应用中将特殊功能寄存器TCON中的IT x(x取0或1)设置为1,即使用外部中断的下降沿触发方式。

  3.2 用于A/D转换的数据处理

  许多ADC芯片具有转换结束输出信号EOC,如ADC0809、TLC2543等,常把该信号接到单片机的外部中断引脚,以便于及时对采样到的数据进行处理。以ADC0809为例,一般是把EOC信号经非门接到单片机的外部中断引脚,假设接到外部中断0引脚[5,6]。如果使用STC15系列单片机的默认触发方式,就会出现在ADC开始转换和ADC转换结束分别进入中断,进行两次数据处理,如果是直接使用单次转换结果还比较容易发现错误,可是如果在数据处理上使用了一些滤波算法就不容易发现该错误。因此千万不要认为STC15单片机外部中断0和外部中断1的默认触发是下降沿或者上升沿都可以,而没有深入认识到这种单片机外部中断触发特性的真正机理,就直接使用这种默认触发模式,会给系统调试带来困难。在这类应用中也推荐将特殊功能寄存器TCON中的IT x(x取0或1)设置为1,使用外部中断的下降沿触发方式。

  3.3 用于单片机低功耗模式唤醒

  STC15系列单片机外部中断0和外部中断1的下降沿+上升沿触发方式特别适合于单片机低功耗省电模式的唤醒,在外部中断0或外部中断1的引脚上无论出现下降沿还是上升沿,都能把单片机从掉电模式或空闲模式唤醒。外部中断0或外部中断1引脚上的信号可以由按键动作给出,也可以是其他系统给出的下降沿或上升沿信号,还可以由串行通信信号给出,特别适合于需要上升沿唤醒单片机掉电模式的应用场景。

  3.4 用于正负脉冲宽度及矩形波周期的测量

  普通的51单片机通过定时/计数器的门控位可以直接进行正脉冲宽度的测量,如果要对一个矩形波的周期或负脉冲进行测量,一般需要外加硬件电路才能实现。由于STC15系列单片机外部中断0和外部中断1在IT x(x取0或1)置0的模式下,可以由上升沿或下降沿触发新特性,再结合定时/计数器的门控位,使用定时器应该可以对输入的矩形波进行正脉冲和负脉冲宽度以及周期的测量。这里不做展开,留待后续的应用中进行深入探讨。

  4 结语

  STC15系列单片机外部中断0和外部中断1的默认下降沿+上升沿触发方式是一种全新的触发方式,与普通51单片机外部中断0和外部中断1默认触发方式存在较大差异,通过几个实验程序对STC15系列单片机外部中断触发新特性的执行机理进行了分析和验证。STC15系列单片机的这种新特性可以较好地应用于单片机掉电模式的唤醒,但也会让熟悉普通51单片机的使用者先入为主地认为STC15系列单片机只是多了一种上升沿触发方式,使程序设计出现一种隐性错误。通过文中的分析可以清楚了解到STC15系列单片机的外部中断0和外部中断1的默认触发方式可以对下降沿(或上升沿)随后的上升沿(或下降沿)进行记忆,对于键盘中断、A/D转换中断等的处理上会使中断服务程序执行两次,导致结果出错。

  文中的分析与讨论对于新接触STC15系列单片机或经常使用普通51单片机的人来说具有很好的指导意义,对于从普通51单片机升级到STC15系列单片机的系统移植也具有参考意义。对STC15系列单片机这种新特性的具体应用给出了参考思路,在后续的研究中再进行深入探讨。

  参考文献

  [1]张毅刚,赵光权,刘旺.单片机原理及应用[M].3版.北京:高等教育出版社, 2016:1-2 .

  [2]马淑华,现文,张美金.单片机原理与接口技术[M].2版.北京:北京邮电大学出版社, 2011:146-147.

  [3]江苏国芯科技有限公司(宏晶科技) . STC89C51RC/RD+系列单片机器件手册[EB/OL].[2020-10]. http : //www. stcmcudata com/datasheet/stc/STC-AD-PDF/STC15.pdf.

  [4]江苏国芯科技有限公司(宏晶科技) . STC89C51RC/RD+系列单片机器件手册[EB/OL]. [2020-10] http : //www. stcmcudata .com/datasheet/stc/STC-AD-PDF/STC89C51RC-RD .pdf.

  [5]Texas Instruments Incorporated ADC0808/ADC0809 8-Bit PCompatible AD Converters with 8-Channel Multiplexer datasheet(Rev.H)[EB/OL].[2020-10J]https : //www. ti.com/lit/ds/symlink/adc0809-n. pdf?ts=1603095063975&ref_ url=https%253A%252F %252Fwww.ti.com%252Fproduct%252FADC0809-N .

  [6]Texas Instruments Incorporated. 12- Bit Analog-to-Digital Converters With Serial Control and 11 Analog Inputs datasheet(Rev.F)[EB/OL].[2020-10].https : //www.ti.com/lit/ds/symlink/tlc2543 pdf?ts=1603095199651&ref_ url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTLC 2543%253FkeyMatch%253DTLC2543%2526tisearch%253DSearch-EN-everything%2526usecase%253DGPN.

作者单位:内蒙古民族大学工学院
原文出处:刘宝成.STC15单片机外部中断的特点及应用研究[J].单片机与嵌入式系统应用,2021,21(02):39-43.
相关标签:
  • 报警平台
  • 网络监察
  • 备案信息
  • 举报中心
  • 传播文明
  • 诚信网站