单片机为什么使用中断
发布网友
发布时间:2022-05-16 02:14
我来回答
共5个回答
热心网友
时间:2023-10-09 03:04
中断保护现场,是为了你中断子程序执行完以后能够返回到你程序中中断点,即产生中断的地方,使程序能够继续向下执行!!!!
如过你说的不用保护现场的话,那么程序执行完以后就不能够回到现场,那么你的程序将不知道要跳转到那里去了,也就是飞鸟,呵呵……
你说的中断嵌套,也是一样的,两者都要保护现场,不然你也不能够回到现场,程序也会飞的!!!!
而我们保护现场的数据都是放在堆栈中的,因此,你的中断次数也不能够超过堆栈的级数,那样数据也会丢失!!!!
说白了,中断它不同于子程序,子程序是固定好了的,返回的位置也固定了;而中断我们不能够预知它在那里发生中断,因此要保护现场,使中断子程序执行完后返回到中断的地方!!!
呵呵……说的太多了!!!
我知道你说的意思了,但是你要知道,中断现场保护是在中断子程序中进行的,因此当你高一级的中断发生的时候(他们不可能共用一个中断子程序,如果是同一中断,那也不可能,因为51中断中你进入中断子程序后要将禁止该中断再次中断,好象似的,嘿嘿……你可以试试),在高一级的中断子程序中也有现场保护,你的问题就是没有把现场保护放对地方!!!!!
============================================================
它们是把现场保护在同一堆栈中,我跟你打个比方吧,假如说堆栈的地址是80H,低一级的中断要保护的是1,2,3;高一级要保护的现场是4,5,6,那么在低一级的中断发生的时候,现场保护1,2,3将压如堆栈,(顺序书上应该有,这里是个比喻),那我先压入1,堆栈地址加1,压入2,堆栈地址再加1,如果这个时候高一级的中断发生,那么现在就应该跳到高一级中断的子程序,堆栈地址就是82H了,在将4,5,6分别压入堆栈,这样堆栈的地址就是85H,当高一级的中断子程序结束后,返回现场,堆栈的数据要从85H开始弹出,这样现场返回的就是6,5,4,这个时候程序就会跳到中断之前的地方,即底一级的中断那里,将要继续将3保护到堆栈中,在执行低一级的中断子程序.(其中,你要在中断保护现场完了后将中断标志清0啊,不然它始终会中断的,不可能去执行程序去了...)
热心网友
时间:2023-10-09 03:05
int0一般指外部中断0的引脚,但在单片机头文件里是不存在的,除非你自定义
而it0是中断源控制寄存器中的1位,用来确定外部中断0的触发方式是下降沿触发还是低电平触发
热心网友
时间:2023-10-09 03:05
中断可以满足很多实时性要求,比如老师正在上课,你很想上WC,你就会举手去中断他,然后说你要上厕所,他响应你这中断,同意你去,然后你就要以实时的去解决你的紧急事宜了。
如果老师不响应中断的话,正常情况下,你就只能憋着了。。。。。
当然,最后下课其实也是一个中断,呵呵!
热心网友
时间:2023-10-09 03:06
中断很有用的,例如当程序大了的时候,采用扫描的方式系统反应会很慢,而采用中断时系统就能很迅速的反应。在实时性方面很有用
热心网友
时间:2023-10-09 03:06
单片机的主程序工作在while循环里面
对于临时的外部响应,需要通过中断来退出while循环
所以单片机需要使用中断。对于简单的情况,则可以不使用中断。