请教高人C51单片机C语言中的中断优先级怎么设置?
如果是同时用到几个中断像T0,T1,外部中断0,串口的,这么多个如果要按指定的优先顺序进行处理中断,只设置IP就可以了吗?具体怎么设置?...
如果是同时用到几个中断像T0,T1,外部中断0,串口的,这么多个如果要按指定的优先顺序进行处理中断,只设置IP就可以了吗?具体怎么设置?
展开
4个回答
展开全部
C51中设置中断优先级,需要对中断寄存器IP进行配置。具体值需要根据用户需要的优先级顺序进行确定,具体的设置方法就是直接写如下C语言语句:
IP = 06H; // 如果5个中断同时发生,则响应次序为:定时器0 -> 外中断1 -> 外中断0 -> 定时器1 -> 串行中断
下面给出IP寄存器中每位(共8位)的含义:
PX0(IP.0),外部中断0优先级设定位;
PT0(IP.1),定时/计数器T0优先级设定位;
PX1(IP.2),外部中断0优先级设定位;
PT1(IP.3),定时/计数器T1优先级设定位;
PS (IP.4),串行口优先级设定位;
PT2 (IP.5), 定时/计数器T2优先级设定位(80C52的T2)
IP.6和IP.7无意义,均为0(在C51中PT2也设置为0)。
ps:IP默认值为00H,此时优先级顺序为:
外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断
IP = 06H; // 如果5个中断同时发生,则响应次序为:定时器0 -> 外中断1 -> 外中断0 -> 定时器1 -> 串行中断
下面给出IP寄存器中每位(共8位)的含义:
PX0(IP.0),外部中断0优先级设定位;
PT0(IP.1),定时/计数器T0优先级设定位;
PX1(IP.2),外部中断0优先级设定位;
PT1(IP.3),定时/计数器T1优先级设定位;
PS (IP.4),串行口优先级设定位;
PT2 (IP.5), 定时/计数器T2优先级设定位(80C52的T2)
IP.6和IP.7无意义,均为0(在C51中PT2也设置为0)。
ps:IP默认值为00H,此时优先级顺序为:
外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断
展开全部
具体设置看书就知道了,自己解决问题,才能真正掌握。优先级,只有两个优先级,也就是说,如果有多个中断,那只能是有一个是最优先的,其它的按照同等处理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单片机已经定好了中断优先级,你可以进入中断处理函数的时候关掉总中断
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询