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

2019-07-15 17:00发布

单片机中的中断服务程序是写中断响应(比如说一个按键接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()来代替不行吗?求解,谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
木途单行道
1楼-- · 2019-07-15 17:13
不能代替,void zhongduan()只是普通的函数;中断函数具有优先级。
尚品
2楼-- · 2019-07-15 19:21
就拿计数来说,比如利用下降沿进入中断计数++。如果不用中断的话需要执行完一圈再来判断电平状态,很容易就漏掉一些下降沿。
z表头图片.png 淘宝二维码.png
Golf_research
3楼-- · 2019-07-15 23:13
单片机会判断中断源的状态位,如果某个中断状态为置1,硬件LCALL指令会找到中断处理函数的地址去执行,所以必须按照中断处理函数的写法来写(void timer()interrupt3),要不然找不到的。
Golf_research
4楼-- · 2019-07-16 04:14
 精彩回答 2  元偷偷看……

一周热门 更多>