1 问题的引出
8pB Fr$?{44606电子园51单片机学习网%u7TIZe }a8r|几乎国内所有的单片机资料对单片机边沿触发中断的响应时刻方面的定义都是不明确的或者是错误的。例如文献[1]中关于边沿触发中断响应时刻的描述为“对于脉冲触发方式(即边沿触发方式)要检测两次电平,若前一次为高电平,后一次为低电平,则表示检测到了负跳变的有效中断请求信号”,但实际情况却并非如此。
&Juk%azRr4?7H$h446069Z5nG.t!M*g t(B4i44606 我们知道,单片机外部输入的中断触发电平是TTL电平。对于TTL电平,TTL逻辑门输出高电平的允许范围为2.4~5 V,其标称值为3.6 V;输出低电平的允许范围为0~0.7 V,其标称值为0.3 V[2],在0.7 V与2.4 V之间的是非高非低的中间电平。
3N:LP"Jz,]%V44606电子园51单片机学习网qr9l(~-]S这样,在实际应用中,假设单片机外部中断引脚INT0输入一路由+5 V下降到0 V的下降沿信号,单片机在某个时钟周期采样INT0引脚得到2.4 V的高电平;而在下一个时钟周期到来进行采样时,由于实际的外部输入中断触发信号由高电平变为低电平往往需要一定的时间,因此,检测到的可能并非真正的低电平(小于0.7 V),而是处于低电平与高电平之间的某一中间电平,即0.7~2.4 V的某一电平。对于这种情况,单片机是否会依然置位中断触发标志从而引发中断呢?关于这一点,国内的绝大部分教材以及单片机生产商提供的器件资料都没有给予准确的定义,但在实际应用中这种情况确实会碰到。
K!VF hk6~;HN;Hw44606G'JN&i;@^$W44606 以美国Analog公司生产的运算放大器芯片AD708为例,其转换速率(slew rate)为0.3 V/μs,在由AD708芯片组成的比较器电路中,其输出方波的下降沿由2.4 V下降到0.7 V,所需时间约为: (2.4 V-0.7 V)/0.3V·μs-1=4.67 μs。即需要约4.67 μs的过渡时间,下降沿才真正地由高电平下降为低电平,在实际应用电路中,这个下降时间往往可达10 μs以上。对于精密的测量系统,这么长的不确定时间是无法接受的,因此,有必要对单片机边沿中断触发时刻进行精确的测定。电子园51单片机学习网"s}|OmF
电子园51单片机学习网f^NI _A2 测试波形的设计与分析电子园51单片机学习网$o,kh,jrr }
*u-c&r]|F$L44606 为了测定MCS51单片机下降沿触发的实际时刻,使用Agilent公司生产的型号为33250A的80 MHz函数/任意波形发生器(function/arbitrary waveform generator),产生出如图1所示的周期为20 ms的周期波形。
uI)`u8X _-I44606电子园51单片机学习网Z'Zk-a&D
图1 周期为20 ms的周期波形电子园51单片机学习网C9U8yy8A|5@
o{$~%GF2u.BYA r44606 将该波形通过单片机的外部中断0输入,可以测出下降沿中断触发的实际时刻,下面对该波形进行具体分析。建立如图2所示的直角坐标。
8M_ m#o&o44606
Hw JV"NA3IvM44606图2 建立的直角坐标设电子园51单片机学习网P p\ztF3Q*e Fv
^} o%x2J l5a4TA"p44606 图2所示波形的周期为T,单片机在电压下降到y=y′时刻触发中断,t1′、t2′、t3′分别为前后周期的中断触发时刻,则有:
#tu/J$p'a44606求得L1方程为:
NV'V~3f x0t}3l-BB44606电子园51单片机学习网Y K P1H@/W+k
uQuq \%{ qrs g44606求得L2方程为:电子园51单片机学习网^SX T rJB1Q
电子园51单片机学习网 p|eMaC0xBN
d |4aGWzI@44606 由图2所示的电路及式(1)、式(2)、式(3),可求得:
Z(c-ZG:rnb44606电子园51单片机学习网l| O2K"O
电子园51单片机学习网4d._U YX&?将以上波形由单片机外部中断0输入,选择边沿触发方式,通过中断服务程序测取T1或者T2的值,从而可求出中断发生时刻的电平值y′,即边沿触发中断的实际时刻。电子园51单片机学习网9f4W`+H"S8Qb D
%x"MYc&P3Gr c44606 在使用单片机对中断时刻进行测量时,使用两个计数器,均设为方式1(16位计数方式)。其中,第一个计数器用于记录从程序开始执行到第一个下降沿到来所经历的时间,第二个计数器用来记录程序开始执行到第二个下降沿到来所经历的时间,将两个计数器的计数值相减便可以得到两个下降沿之间的时间间隔。由前面的分析可知,该时间间隔可能有两种情况:一种是T1时间,即t1′与t2′之间的时间间隔;另一种是T2时间,即t2′与t3′之间的时间间隔。其中,T1+T2=T,T1时间要小于T2时间。通过测量得到T1或者T2时间,利用式(4)便可求得下降沿触发中断时刻的实际电平。电子园51单片机学习网9NL2k,xi~#e9X,q,A
电子园51单片机学习网0}4IS7b9[v(v;m3 测试流程和相应的单片机程序
B Y erzR44606RyrF~2e.{yt,|44606 该单片机的中断服务程序流程如图3所示。
-g!Yf-Cw*Nl2B44606电子园51单片机学习网"mo#l;Q^m.Wo
图3 中断服务程序流程
相应的中断服务程序为:
.n4?mfG @r44606电子园51单片机学习网eW2Q P*|w n6A5O INCR1电子园51单片机学习网;D-H7rt/JMR2M2g
MOVA,R1电子园51单片机学习网koc&W,o O
CJNEA,#01H,SEC电子园51单片机学习网c*lH{/z,x@9|vb
CLRTR0电子园51单片机学习网O-W0gU'X6K1aQ"M N
MOV20H,TL0电子园51单片机学习网j7T9fn%s{x8N'\
MOV21H,TH0电子园51单片机学习网2k5y7t%er0K9V]-{
CLRIE0
8G"OK;D*H9j3Cd.Z44606 RETI电子园51单片机学习网9Tw1AP!kv
SEC:CLRTR1
aA3v:yR}GFtO44606 MOV22H,TL1电子园51单片机学习网+_x^ f+jp7E
MOV23H,TH1电子园51单片机学习网;Vy$w X S K*u"}v OI
CLREX1
[s:M$PMNp+@.iI44606 CLREX0
Pu2`!~EQQ3ZP44606 RETI
W!TY{ n2t/q(o44606 由于程序执行有一定的延时,在中断返回后,还需对两个计数器的输出值进行校正。本实验采用伟福公司生产的H51/L仿真器为单片机测量系统,测得T1值为6.514 ms,由式(4)可得:y′=0.729 V,即当y′约为0.73 V时,单片机下降沿触发中断。
#l}!X Pj/i2j44606电子园51单片机学习网HP_6H.D dUz4 结论
B*C Gs X C|y44606-aAu)@5r%IfF5h44606 本文通过设计一简单的波形,对单片机的边沿触发中断响应时刻进行了准确的测量,从而纠正了国内单片机学习资料在边沿触发中断时刻方面的不明确定义,且最终结果经过了实验验证。电子园51单片机学习网!s e0a)KDR
参考文献
DaN{^44606电子园51单片机学习网GD dB rt m6^$P_]W[1] 梅丽凤,等.单片机原理及接口技术. 北京:清华大学出版社,2004.
d {soj6Jx` d44606[2] 曹汉房.数字电路与逻辑设计. 武汉:华中科技大学出版社,2004.
F(H*_%\"k!T$T44606[3] 白驹衍,雷晓平. 单片计算机原理及其应用. 成都:电子科技大学出版社,1997.
王朋(硕士),主要研究方向为自动测试与系统;电子园51单片机学习网/_CdGz,a X
李智(教授),主要研究方向为虚拟仪器与系统、自动测试总线与系统。电子园51单片机学习网wyQ_:V0\KWPe
文章评论(0条评论)
登录后参与讨论