打印

为什么我的中断响应时间会那么长?

[复制链接]
5348|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenczy|  楼主 | 2008-9-1 11:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
lyjian| | 2008-9-1 11:27 | 只看该作者

你用的什么单片机?

使用特权

评论回复
板凳
chenczy|  楼主 | 2008-9-1 11:30 | 只看该作者

我用的是STC的

   我用的是STC12C5404,晶振为20MHZ,中断是外部中断的。

使用特权

评论回复
地板
wangkj| | 2008-9-1 11:47 | 只看该作者

软件模拟一下,看看左下角的时间坐标不就知道了

使用特权

评论回复
5
chenczy|  楼主 | 2008-9-1 11:56 | 只看该作者

就是用软件看的

   我在中断一进来就送一个信号出去,再在示波器上看到的,这个数据应该是非常准确的了。

使用特权

评论回复
6
lyjian| | 2008-9-1 12:12 | 只看该作者

用Keil模拟STC12C5404的时间根本就不对

使用特权

评论回复
7
zyok| | 2008-9-1 12:20 | 只看该作者

请注意,下载程序的时候选择外部时钟...

使用特权

评论回复
8
2shift| | 2008-9-1 14:27 | 只看该作者

楼主说的检测方法可能存在着很多的误差

使用特权

评论回复
9
chenczy|  楼主 | 2008-9-1 15:41 | 只看该作者

我在想是不是芯片本身的问题

     再说一下吧,我什么程序都没写,就一个外部中断,中断一进来就从一个口取反,然后出中断,这样就简单了吧,不过还是会出现那个问题?有没谁用过这款芯片的指点下。我用的是汇编写的

使用特权

评论回复
10
lyjian| | 2008-9-1 17:11 | 只看该作者

贴你的程序

还有,你是怎么测试响应时间的?

使用特权

评论回复
11
chenczy|  楼主 | 2008-9-1 17:20 | 只看该作者

就是这个简单的程序

ORG     0000H
JMP     MAIN
ORG     0003H
JMP     TIP

TIP:
     PUSH     PSW
     PUSH     A
     CPL      P1.0
     POP      A
     POP      PSW
     RETI

MAIN:
     CLR     P1.0
     SETB    EA
     SETB    EX0
     SETB    IT0
     JMP     $

     我就用这个程序去检测,中断源就是外来一个下降沿就OK了,用示波器看P1.0脚,结果P1.0口的取反是在下降沿后的2.5US之后出现,按说不可能相差这么多的时间,查了好久都没查出什么原因,郁闷

使用特权

评论回复
12
农民讲习所| | 2008-9-1 17:50 | 只看该作者

改为:

TIP:
     CPL      P1.0
     RETI

使用特权

评论回复
13
农民讲习所| | 2008-9-1 17:51 | 只看该作者

把跳转也去掉

ORG     0000H
JMP     MAIN
ORG     0003H
     CPL      P1.0
     RETI

MAIN:
     CLR     P1.0
     SETB    EA
     SETB    EX0
     SETB    IT0
     JMP     $

使用特权

评论回复
14
lyjian| | 2008-9-1 17:58 | 只看该作者

一点都不奇怪

ORG     0000H
JMP     MAIN
ORG     0003H
JMP     TIP          ;3T(如果编译为LJMP为4T)

TIP:
     PUSH     PSW    ;4T
     PUSH     A      ;4T
     CPL      P1.0   ;4T
     POP      A
     POP      PSW
     RETI
MAIN:
     CLR     P1.0
     SETB    EA
     SETB    EX0
     SETB    IT0
     JMP     $      ;3T(如果编译为LJMP为4T)
**********************************
STC12C5404的中断响应时间最快为7T,最慢为17T
按你这段程序,中断下降沿到P1.0口取反的最快时间是22T=1.1us,最慢时间是31T=1.55us。

使用特权

评论回复
15
chenczy|  楼主 | 2008-9-2 08:18 | 只看该作者

re:

    按14楼的说法,20T=1us,29T怎么会是2.9us了?
    由于程序的需要,PUSH这个指令是不能少的。
    我去掉PUSH指令再试下看看。

使用特权

评论回复
16
lyjian| | 2008-9-2 09:06 | 只看该作者

哦,算错了,29T=1.45us。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

141

主题

791

帖子

0

粉丝