微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机中的中断服务程序是干嘛的?里面写些什么?

单片机中的中断服务程序是干嘛的?里面写些什么?

时间:10-02 整理:3721RD 点击:
单片机中的中断服务程序是写中断响应(比如说一个按键接P1.0口,按下按键,点亮一个LED灯,停止定时器1代码能这么写吗?)
void timer()interrupt3
{
if(P1^0==0)
{
TR1=0;
LED0=0;
delay(255);
}
TH1=0xd8;
TL1=0xf0;
TR1=1;
}
这样对吗?就是说中断服务程序里面是写中断后该做的事,那如果不用中断服务程序写,直接用普通的函数void zhongduan()来代替不行吗?求解,谢谢。

不能代替,void zhongduan()只是普通的函数;中断函数具有优先级。

就拿计数来说,比如利用下降沿进入中断计数++。如果不用中断的话需要执行完一圈再来判断电平状态,很容易就漏掉一些下降沿。


单片机会判断中断源的状态位,如果某个中断状态为置1,硬件LCALL指令会找到中断处理函数的地址去执行,所以必须按照中断处理函数的写法来写(void timer()interrupt3),要不然找不到的。

单片机会判断中断源的状态位,如果某个中断状态为置1,硬件LCALL指令会找到中断处理函数的地址去执行,所以必须按照中断处理函数的写法来写(void timer()interrupt3),要不然找不到的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top