51单片机开外部中断但是不写中断程序会怎样?

51单片机开外部中断但是不写中断程序会怎样?,第1张

中断发生时,如果中断是允许的,CPU会到指定的位置取指令并执行。

如果没有写中断服务程序,指定的位置内容就不好说了。则取到的指令就不一定是什么指令,但也会执行。

所以,没有意外,后果就是死机。

单片机程序,开了总中断和分支中断,但是中断服务程序为空,会怎么样?

你说的中断程序为空是什么概念?不管你如何 *** 作甚至没任何 *** 作,单片机程序存储器里总是有数据的,单片机不会认为那是数据而认为是指令,不管对不对照样执行,只是结果不可预测。

我理解你说的中断服务程序为空,指的是没有写中断程序,这样,对应中断向量地址的数据有两种情况,一种是你在程序中使用ORG伪指令让出了中断向量地址存储区,那里的数据将是连片的0FFH,一种是你在程序中没有使用ORG伪指令让出中断向量地址存储区,那么那里的数据就是你的程序代码区,是什么指令不确定。当发生中断时,CPU照样从中断向量地址执行指令,结果就是,后果不可预期。

我现在也在迷惑这个问题,看单片机的程序里,中断程序明明没有被主程序调用,然而中断程序却可以运行……按照C语言的规则,子函数必须要被主函数调用才能发挥作用,然而在52单片机里,主函数并没有调用中断函数

…………然后我查到了这个:

程序中断和调用子程序有何区别:

1.子程序调用是预先安排好的,程序中断是随机发生的;

2.调用子程序,是为主程序服务的,而中断程序与主程序的程序毫无关系;

3.子程序是由调用指令给出目标地址,中断是通过隐指令获得中断服务程序的入口地址

看到这个,大概意思应该是:

中断程序不同于子程序,不需要主函数main调用就能执行。

中断服务程序只需要满足一定条件即可执行,比如定时器/计数器(在写入定时器中断服务程序的前提下)只需要计数“计满”即可触发中断服务程序;外部中断(在写入外部中断的服务程序的前提下)只需要触发外部中断引脚即可自动执行,不需要主函数调用。

子程序完全为主程序服务的,两者属于主从关系,主程序需要子程序时就去调用子程序,并把调用结果带回主程序继续执行。而中断服务程序与主程序两者一般是无关的,不存在谁为谁服务的问题,两者是平行关系

这大概是单片机的特殊之处吧?正常的C语言程序没有这样的吧?我C语言也算新手,这是我的理解


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12190562.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存