请教一个51外部中断0、1嵌套碰到的问题

[复制链接]
4157|11
 楼主| 2ap15 发表于 2008-7-3 17:40 | 显示全部楼层 |阅读模式
单片机是飞记P89V51RB2
想法是这样的,复位基本设置后待机循环,中断1触发后进行测量程序,测量到一定数据后产生中断0,计算显示,然后继续进入待机。
INT0 INT1都设置为边沿触发方式,INT0的触发电路为一个滞回比较器+三极管的电平调理电路,INT1的触发电路为传统的复位电路过一反门,通过示波器观察应该进行有效触发是完全没有问题的
INT0为高优先级,INT1为低优先级,在KEILC下面编译没有问题,但是在DEBUG的时候出现一个小现象——就是当INT0完成之后并不运行本身RETI语句,自然也不再跳回上级中断INT1中运行RETI语句,而是直接跳回待机循环语句。
请问一下大致问题会出在哪个地方呢? 
 楼主| 2ap15 发表于 2008-7-4 10:16 | 显示全部楼层

11

现在进一步改进后的问题是:高优先级的中断INT0程序中的RETI指令会执行,而低优先级INT1程序中的RETI不执行,这样虽然表面上已经跳回了主程序中循环等待,其实还没有跳出低优先级中断。
因此我想人工再触发INT1再启动测量就不可能了。
ayb_ice 发表于 2008-7-4 10:33 | 显示全部楼层

你的中断程序写的有问题吧

 楼主| 2ap15 发表于 2008-7-4 11:05 | 显示全部楼层

44

;------ÖжϷþÎñ³ÌÐò------
INTER0: CLR     TR0               
        CLR     EX0
    LCALL   TIMECONVERS       
        LCALL   DISPLAY           
        CLR     IE1
    SETB    EX1
        RETI

INTER1: CLR     EX1
        LCALL   DELAY1s
    LCALL   DELAY1s
        LJMP    SENDPULSE
        RETI
贴上中断程序
 楼主| 2ap15 发表于 2008-7-4 11:16 | 显示全部楼层

55

 ORG     0030H
MAIN:   CLR     PULSE
        MOV     TMOD,#01H         ;T0Ϊ16λ¶¨Ê±
    MOV     TH0,#00H
    MOV     TL0,#00H
    SETB    PX0               ;ÍⲿÖжÏ0Ϊ¸ßÓÅÏȼ¶
    CLR     PX1               ;ÍⲿÖжÏ1ΪµÍÓÅÏȼ¶
    SETB    IT0               ;±ßÑØ´¥·¢
        SETB    IT1               ;±ßÑØ´¥·¢
    CLR     IE1               ;ÇåÖжÏ1±ê־λ
    SETB    EX1               ;¿ªÍⲿÖжÏ1
    SETB    EA                ;¿ªÖжÏ
    LJMP    $
主程序
我在想是不是时间过长,芯片复位放弃的原因
农民讲习所 发表于 2008-7-4 11:36 | 显示全部楼层

问题多,太多

1)中断必须保护现场

2)没入门的才这么用:
    LCALL   DELAY1s
    LCALL   DELAY1s
    LJMP    SENDPULSE

3)"LJMP    SENDPULSE"这里思维严重缺陷。
puppyh 发表于 2008-7-4 11:41 | 显示全部楼层

楼主说到根子上了

中断里的现场被破坏了。
acmilann 发表于 2008-7-4 12:30 | 显示全部楼层

农民讲习所 分析的很好了

wushuang_z 发表于 2008-7-4 23:59 | 显示全部楼层

中断要保护现场的啊。。

基本常识
wushuang_z 发表于 2008-7-5 00:01 | 显示全部楼层

请教6楼,,,

3)"LJMP    SENDPULSE"这里思维严重缺陷。
 怎么讲?
 楼主| 2ap15 发表于 2008-7-5 15:04 | 显示全部楼层

11

晕死
我发现问题了
不小心把LCALL SENDPULSE 写成LJMP SENDPULSE了
难怪一到SENDPULSE运行一结束之后就马上回到主程序循环了!

另外说到保护现场的问题——子程序中的数据每一次发生都是重新赋值重新计算,子程序之间不影响没有联系,还需要对哪些数据保护呢?
 楼主| 2ap15 发表于 2008-7-5 15:06 | 显示全部楼层

12

另外那个延时1S的子程序只是我加进去看看是不是时间长了被放弃的缘故

恩,就是出在那个LJMP上了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

102

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部