导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C51编程:中断中的中断,麻烦中的麻烦。 怎一个难字了得?挑

* 6817: C51编程:中断中的中断,麻烦中的麻烦。 怎一个难字了得?挑战高手

   wt13 
wt13发表的帖子 

 C51编程:中断中的中断,麻烦中的麻烦。 怎一个难字了得?挑战高手
我现在要写这么一个小程序,希望实现以下功能:希望各位高手帮我分析一下

1.有两个小灯L1, L2; 还有一控制开关Vt。
2.当Vt第一次打开的时候,首先L1亮72秒,然后L1和L2都熄灭18秒,再L2亮72秒。再L1和L2
熄灭18秒,再继续L1亮72秒。如此循环。
2.当Vt关闭的时候,L1和L2都熄灭,但是要记住前面亮的是L1还是L2,假设为L1亮,且已经
亮了Ta1秒.这时如果Vt又打开,则L1继续亮,假设再亮Ta2秒以后,又Vt关闭,则熄灭,又
Vt打开,继续亮Ta3,…… 要满足一个条件:Ta1 + Ta2 + Ta3 + ...+ Tan = 72秒。 也就
是说,其中的一个灯,它亮的总时间必须是72秒,再开始亮另一个灯。
3.假设Vt关闭前亮的灯是L2,则L2和L1一样,亮的总时间必须72秒
4.如果Vt关闭前正处于L1和L2都熄灭的休息时间,则Vt再次打开的时候,将从L1开始亮的起
点重新循环。

我自己的分析:因为Vt关闭后,要保存前面的灯亮的时间,所以不能用Vt控制单片机芯片的
电源,把延时部分独立出来,暂不考虑。

2.把Vt信号作为一个中断,假设为INT1; 再将Vt信号反相作为一个中断(响应Vt关闭),假
设为INT0。当Vt打开的时候,就开始灯亮的过程。在响应INT1中断的过程中,设置INT0为高
优先级,所以当Vt关闭的时候能及时响应。在响应INT0的过程中,这时设置INT1为高优先
级,所以当Vt打开的时候又能及时响应。

疑问:因为在响应一个中断的时候,另一个中断来了,必须响应,这样中断得不到返回。那
样岂不是会造成内存泄漏(借用C/C++的概念,我不知道是不是这么一个说法)
举例吧:假如正在响应中断INT1    ------>这是来了INT0,必须响应,所以转入INTO的响
应中 ----->这时又来了INT1, 又是必须响应的,所以转入INT1的响应中 ------->假设又
来了INT0, 又必须响应  ………………于是中断永远也不能返回。

请各位高手,高高手, 牛哥牛姐,牛弟牛妹帮我分析分析。 不胜感激!

发表时间:2002年4月1日11:57:00

  
回复该帖

本主题共有 5 帖,分页:>>>>>该主题的所有内容[5]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  6819.[详细]中断有优先级,在响应高时不会响应低级中断.
摘要:......(无内容)
- [seasoblue][913次] 2002年4月1日

  6823.[详细]在响应高级中断的时候改变中断优先级呢?(当然是装牛角尖而已,想来也是绝对不行的)..
摘要:有高手来提供一点思路吗?......(12字)
- [wt13][987次] 2002年4月1日

  6826.[详细]它会保护当前中断数据,然后去响应更改后的更高优先级中断程序,处理后完再回来处理保护的那个中断。..
摘要:......(无内容)
- [seasoblue][950次] 2002年4月1日

[上一篇帖子]:看起来好象是数据D0位恒高电平。
[下一篇帖子]:硬件的还是有