电子产业一站式赋能平台

PCB联盟网

搜索
查看: 4996|回复: 14
收起左侧

执行中断时又来了一次中断,中断里面的程序是不是继续执行?

[复制链接]

591

主题

1772

帖子

5770

积分

四级会员

Rank: 4

积分
5770
发表于 2023-3-23 16:44:02 | 显示全部楼层 |阅读模式
直接上程序:
#include <reg52.h>
sbit fenminqi=P2^3;
void delay(int a)
{
int b;                                    
for(a;a>0;a--)
  for(b=100;b>0;b--);
}


int main()
{
TH0=(65536-10)/256;                        
TL0=(65536-10)%256;
TMOD=1;
TR0=1;
EA=1;
ET0=1;
while(1);
}


void zhongduan() interrupt 0
{
TH0=(65536-10)/256;                        
TL0=(65536-10)%256;
delay(10);
fenminqi=0;
}
回复

使用道具 举报

0

主题

804

帖子

517

积分

二级会员

Rank: 2

积分
517
发表于 2023-3-23 16:44:18 | 显示全部楼层
这个我也想确定,做个程序试试
回复 支持 反对

使用道具 举报

2

主题

849

帖子

722

积分

二级会员

Rank: 2

积分
722
发表于 2023-3-23 16:44:54 | 显示全部楼层
上述程序的结果是蜂鸣器响了
回复 支持 反对

使用道具 举报

2

主题

849

帖子

722

积分

二级会员

Rank: 2

积分
722
发表于 2023-3-23 16:45:53 | 显示全部楼层
wowangjile
回复 支持 反对

使用道具 举报

10

主题

904

帖子

812

积分

二级会员

Rank: 2

积分
812
发表于 2023-3-23 16:46:48 | 显示全部楼层
这个要看中断优先级,如果来的中断比当前的中断优先级高就会放下当然程序执行新的中断程序,等新的中断程序执行完后就接着执行之前的中断
回复 支持 反对

使用道具 举报

10

主题

904

帖子

812

积分

二级会员

Rank: 2

积分
812
发表于 2023-3-23 16:47:21 | 显示全部楼层
进入中断服务程序后 ,CLR TR0,把定时期关了
回复 支持 反对

使用道具 举报

633

主题

1927

帖子

8108

积分

联盟顾问

Rank: 3Rank: 3

积分
8108
发表于 2023-3-23 16:48:14 | 显示全部楼层
这时只有高优先级中断才会响应
回复 支持 反对

使用道具 举报

591

主题

1772

帖子

5770

积分

四级会员

Rank: 4

积分
5770
发表于 2023-3-23 16:48:24 | 显示全部楼层
如果是每次在中断没有返回前能再进中断的话,程序会跑飞,栈超出内存,太久没有用51了,不知道这种中断是不是被允许的
回复 支持 反对

使用道具 举报

10

主题

904

帖子

812

积分

二级会员

Rank: 2

积分
812
发表于 2023-3-23 16:48:58 | 显示全部楼层
其实只是想看结果的话用递归函数就行了,中止递归的条件永远不能满足,或者有足够的递归深度,结果是一样的
回复 支持 反对

使用道具 举报

0

主题

804

帖子

517

积分

二级会员

Rank: 2

积分
517
发表于 2023-3-23 16:49:10 | 显示全部楼层
原因是这样的:正在进行的中断过程不能被新的同级或低优先级的中断请求所中断
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表