版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
STC15系列单片机下降沿+上升沿触发方式的应用及注意事项,计算机应用技术论文本篇论文目录导航:【】【】STC15系列单片机下降沿+上升沿触发方式的应用及注意事项【】【】【】51单片机论文:STC15系列单片机下降沿+上升沿触发方式的应用及注意事项内容摘要:外部中断在单片机应用系统中经常用于系统故障处理、采集数据的处理、人机交互的键盘输入以及通过按键唤醒单片机退出掉电工作形式等工作场景。STC15系列单片机外部中断0、外部中断1增加了上升沿或下降沿均可触发中断的新特性,这种新特性在使用时假如不加以注意可能会使中断服务程序重复执行两次,导致程序出错,尤其是在采集数据的处理、人机交互的键盘输入等应用场合埋下隐患。通过对使用STC15系列单片机的外部中断0、外部中断1的实例分析,给出解决方案。对使用STC15系列单片机进行系统设计,尤其是对原来使用STC89系列等通用51单片机的系统进行硬件升级后的软件移植具有重要指导意义和参考价值。本文关键词语:STC15;单片机;外部中断;ADC;Abstract:Externalinterruptistypicallyusedinsystemfaultprocessing,dataacquisition,keyboardinputandwake-upsingle-chipmicrocomputertoquitpower-offmode.Theexternalinterrupt0andexternalinterrupt1ofSTC15seriesMCUaddanewfeaturethattheinterruptcanbetriggeredbytherisingedgeorfallingedge.Iftheuserdoesnotpaymuchattentiontothisfeature,itmaycausetheinterruptserviceprogramtobeexecutedtwice,whichwillleadtoaprogramerror.Thiskindofnewfeaturewillhaveanunderlyingproblemintheapplicationofdataacquisitionprocessing,keyboardinputofhuman-computerinteractionandotherapplications.Theexamplesofexternalinterrupt0andexternalinterrupt1ofSTC15seriesMCUarediscussedinthispaper,thesolutionsaregiven.ThestudyofthispaperhasimportantguidingsignificanceandreferencevalueforthesystemdesignedbySTC15seriesMCU,especiallythesoftwaretransplantationafterahardwareupgradeoftheoriginalsystemusedSTC89seriesandothergeneral-purposeMCS51single-chipmicrocomputer.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的中断特性不一样。2STC15系列单片机中断特性STC15系列和STC89系列单片机都是MCS-51的兼容单片机,只不过STC15系列单片机是1T单片机,STC89系列单片机是12T单片机,容易让人想当然地以为除了软件执行速度不同外,其他都是一样的。这种惯性思维方式一度使上述问题的分析陷入了窘境,甚至怀疑是不是STC15F2K60S2单片机存在BUG。通过仔细阅读STC15系列单片机的数据手册才发现STC15系列单片机外部中断0和外部中断1的触发方式已经不再是低电平和下降沿两种通常所用的触发方式,而是变成了下降沿+上升沿和下降沿两种触发方式[3,4]。默认的触发方式为下降沿+上升沿触发,也就是讲下降沿或者上升沿都能够触发中断。为了验证是不是由于这种新的触发方式引起的上述问题,将触发方式设置为单一的下降沿触发,发现进入中断后点亮LED发光二极管的时间正确了,也就是讲确实是这种新的触发特性导致的。2.1STC15系列单片机外部中断新的触发方式比照分析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.2STC15系列单片机下降沿+上升沿触发方式验证为了弄清楚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在上升沿触发中断后也能记忆下降沿的触发标志,这里不再赘述。3STC15系列单片机下降沿+上升沿触发方式的应用及注意事项STC15系列单片机外部中断0和外部中断1在单片机上电复位后的默认触发方式是下降沿+上升沿触发方式。由于STC15系列单片机外部中断0和外部中断1对下降沿和上升沿均能触发中断并能对下降沿〔上升沿〕随后的上升沿〔下降沿〕触发信号记忆,在使用时需要注意下面事项。3.1用于键盘中断由于STC15系列单片机外部中断0和外部中断1的上述新特性,在触发中断后并不能区分是下降沿还是上升沿触发的中断,而且还会对下降沿〔上升沿〕随后的上升沿〔下降沿〕触发信号记忆。而普通51单片机在上电复位后的外部中断的默认触发方式是低电平触发,这种触发方式是每个机器周期都去采样外部中断引脚上的电平信号,但并不对该信号做记忆,当单片机正在执行该外部中断服务程序或其他同优先级/高优先级中断服务程序时,即便采样到低电平信号,也不会置位相应中断标志位,而是直接丢弃该中断申请,只要在中断返回后采样到外部中断引脚上的低电平信号,才会置位相应中断标志位、向CPU申请中断。因而在普通51单片机中只要在中断服务程序返回前外部引脚上的低电平信号消失,就不会引发二次中断。因而,在键盘中断应用中使用STC15系列单片机外部中断0或外部中断1将会出现按键按下时进入中断,执行一次中断服务程序,在按键释放时还会进入中断,并再次执行中断服务程序。因而在键盘中断应用中假如不能很好考虑到这种触发特性,将导致键码或按键功能被辨别或执行两次,进而引起系统功能错误。这种错误经常发生在由普通51单片机改型为STC15系列单片机的使用者身上,能够在这类应用中将特殊功能托存器TCON中的ITx(x取0或1〕设置为1,即便用外部中断的下降沿触发方式。3.2用于A/D转换的数据处理很多ADC芯片具有转换结束输出信号EOC,如ADC0809、TLC2543等,常把该信号接到单片机的外部中断引脚,以便于及时对采样到的数据进行处理。以ADC0809为例,一般是把EOC信号经非门接到单片机的外部中断引脚,假设接到外部中断0引脚[5,6]。假如使用STC15系列单片机的默认触发方式,就会出如今ADC开场转换和ADC转换结束分别进入中断,进行两次数据处理,假如是直接使用单次转换结果还比拟容易发现错误,可是假如在数据处理上使用了一些滤波算法就不容易发现该错误。因而千万不要以为STC15单片机外部中断0和外部中断1的默认触发是下降沿或者上升沿都能够,而没有深切进入认识到这种单片机外部中断触发特性的真正机理,就直接使用这种默认触发形式,会给系统调试带来困难。在这类应用中也推荐将特殊功能托存器TCON中的ITx(x取0或1〕设置为1,使用外部中断的下降沿触发方式。3.3用于单片机低功耗形式唤醒STC15系列单片机外部中断0和外部中断1的下降沿+上升沿触发方式十分合适于单片机低功耗省电形式的唤醒,在外部中断0或外部中断1的引脚上无论出现下降沿还是上升沿,都能把单片机从掉电形式或空闲形式唤醒。外部中断0或外部中断1引脚上的信号能够由按键动作给出,可以以是其他系统给出的下降沿或上升沿信号,还能够由串行通信信号给出,十分合适于需要上升沿唤醒单片机掉电形式的应用场景。3.4用于正负脉冲宽度及矩形波周期的测量普通的51单片机通过定时/计数器的门控位能够直接进行正脉冲宽度的测量,假如要对一个矩形波的周期或负脉冲进行测量,一般需要外加硬件电路才能实现。由于STC15系列单片机外部中断0和外部中断1在ITx(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版.北京:高等教育出版社,2021:1-2.[2]马淑华,现文,张美金.单片机原理与接口技术[M].2版.北京:北京邮电大学出版社,2018:146-147.[3]江苏国芯科技
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长安大学照明课程设计
- 通信达课程设计
- 集训画室创业课程设计
- 边坡治理课程设计
- 通信工程仿真课程设计
- 线描人物创作课程设计
- 跨栏课程设计思路
- 绘本课程设计大纲
- 重庆课程设计部门招聘网
- 锅炉点火plc课程设计
- 高职《劳动教育》指导纲要
- XX公司年会活动报价单
- 钢铁生产企业温室气体核算与报告案例
- 农业合作社全套报表(已设公式)-资产负债表-盈余及盈余分配表-成员权益变动表-现金流量表
- 贝利婴幼儿发展量表BSID
- 人教部编版八年级历史下册第7课 伟大的历史转折课件(共25张PPT)
- SB/T 10863-2012家用电冰箱维修服务技术规范
- 偏瘫患者的临床护理及康复评估课件
- 公路施工期环保课件
- 检验科危急值项目范围考核试题与答案
- 3Q模板 IQOQPQ验证方案模版
评论
0/150
提交评论