为什么进入中断、中断正在中断主程序进入中断 sub 程序、中断后出不去?为什么以中断为主程序省电?执行完中断 程序后返回,等待下一次中断。单片机不运行的原因有很多,粗略估计之前正常运行应该是死机,停电后还能再运行,判断你的程序可能有问题,输入中断后,可以设置陷阱并调试。

1、单片机死机的原因有哪些?

硬件无关。只要电路正确,软件的原因就是进入死循环,这是软件设计问题和干扰造成的。下载线可能有问题。得到程序时拔出连接电源线。硬件方面,比如软件只能在某个状态下执行,可惜端口坏了,没有这个状态软件就会停在这里;比如地址线搞砸了,软件执行不了,肯定是死的;比如水晶不能振动,软件就不能执行。比如地址锁存器坏了,地址和数据会混淆,当然会死机;

软件:比如无限循环,如果没有中断,sjmp$的实现肯定是死路一条;比如搬到非-程序区域肯定会死机,常见的干扰是这种情况发生的比较多;比如你输入中断Service程序,如果你和中断没有关系,再次被处罚,还是可以崩溃的;使用MOVC实现分支转移时,处理不当也会死机;数据溢出也会导致崩溃...诸如此类。

2、单片机C语言 中断

TR0控制T0时间中断。Tr0 = 1,中断开启但不会立即开启中断,只有在寄存器填满后才会产生中断,并执行中断 程序。执行完中断 程序后返回,等待下一次中断。一般不会关闭中断。TR01代表启动定时器T0。如果使用后不是0,将继续执行函数中断由于是定时器中断,所以每隔一定时间就会执行一次,不到时间就会执行主函数,所以你的键盘还是可以扫描的。

其实不用加也可以。在C语言中,寄存器是自动分配的,所以你可以不加。Master 程序和中断没关系,master 程序是个无限循环,一直执行。中断是中断Master 程序Enter中断Sub程序,中断完成后继续执行Master程序。中断标志应该在输入中断后清除。如果没有清除,下次就不会触发。Main 程序继续执行没有效果。TR0是启动定时器。开始后就不要重写了,每次都输入中断。输入中断后清除中断 enable标志,不要求你关闭定时器。

3、STM32保存串口接收到的数据,但是 程序很快就死了,而且只保存了其中一...

1。你没有给出初始化部分。不知道你有没有启用发送中断或者串口中断什么的。2.在中断 function中多次读取SR状态寄存器:if (usart _ get it status (usart1,usart _ it _ rxne)!RESET)这里一次,而(usart _ getflagstatus (usart1,usart _ flag _ rxne)RESET);这里不知道看了多少遍。你应该知道,状态寄存器中的一些位一旦被读取就会自动清零。可以查看手册,所以不建议多次读取中断函数中的状态寄存器。

 1/2   上一页 1 2 下一页 尾页

文章TAG:中断  处理程序  程序  现场  保护  为什么进入中断后 程序死了  
下一篇