关于单片机中断优先级,求大神解答

作者&投稿:贸孙 (若有异议请与网页底部的电邮联系)
关于51单片机中断优先级的~

#include
#define uint unsigned int
uint a=0,t=0;
void led1();
void chushi( );
void led2();
void main()
{
IP=0x10;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
while(1)
{
if(a==1)
led1();
if(a==2)
led2();
}
}

void extern0() interrupt 4
{
if(RI)
{
RI=0;
a=SBUF;
}}
void extern1() interrupt 1
{
TH0=(62235-40000)/256;
TL0=(62235-40000)%256;
t++;
}
void chushi( )
{
TMOD=0x01;
TH0=(62235-40000)/256;
TL0=(62235-40000)%256;
ET0=1;
TR0=1;
EA=1;
}
void led1()
{
while(a==1)
{
chushi();
t=0;
P1=0xfe;
while(t!=10);
P1=0xff;
while(t!=20);
}
}
void led2()
{
chushi();
while(a==0)
{
t=0;
P1=0xfe;
while(t!=5);
P1=0xff;
while(t!=10);
}
}

51单片机默认的中断优先级如下
INT0 >> T0 >> INT1 >> T1 >> TI/RI
设成高优先(IP)=00010100B 对应 PS PX1, 同级仍按自然序为
INT1 >> TI/RI, 然后是 INT0 >> T0 >> T1
故你的设想是对的: 外部中断1 T1溢出中断

你要看PDF呀,PDF上面会讲IPH和IP两个寄存器中每一位所对应的中断源的!!
譬如:如果按题目意思,第四位(共1到8位)就是PT1,第七位就是PX1。PDF上面会讲一共可以给中断源分多少个优先级的,IPH和IP两个寄存器共同决定优先级。如果IPH=IP=0x08,则PT1的优先级为11,如果IPH=0x08,IP=0x00,则PT1的优先级为10。至于11,10,01,00的优先级顺序也是PDF上面写清楚的!废话多了,最终还是请看PDF!!芯片手册!

如果想设置成优先级为:T1,INT1,INIT0,T0是不行的。
因为52单片机只有两级中断优先级。你可以这样想,假设可以按这样设置,也就是你得把T1和INT1的优先级控制位都设为1,INT0和T0设为0;但是,如果这样设置的话,实际的优先级是:INT1,T1,INT0,T0,(因为INT1的优先级默认就比T1高)
要注意一点是:52单片机默认的中断优先级是:外部中断0,定时器0,外部中断1,定时器1,串口中断

如果不是应付考试就别费心了,实际上中断函数里写的简单些,只记录中断的状态和顺序即可,几微秒就退出中断是正道。其他在主程序里进行处理,主程序在10mS内循环一次,应该能解决问题。

题目:...设置...,使它们的优顺序为T1,INT1,INIT0,T0。

----

呵呵,这题目出的!

什么是《优顺序》呀?

T1,INT1,INIT0,T0,是由高到低,还是由低到高?

这是什么教材?


一文读懂单片机里的“中断”优先级
在单片机中,同样的逻辑适用。紧急中断和一般中断的处理顺序取决于系统设定的优先级。这里有两种类型的中断优先级:抢占优先级和固有优先级。抢占优先级如表1和表2所示,它就像是电话的即时接听权,一旦高优先级的中断发生,无论正在执行哪一项任务,都会被立即打断,执行完后再回到原任务。抢占优先级示例...

51系列单片机中断系统中优先级的基本规则有哪些?
1. 中断优先级分组:51系列单片机通常支持多个中断源,如定时器中断、外部中断等。这些中断源被分为不同的优先级组,以确保在多个中断同时发生时,能够按照预定的优先级顺序进行处理。一般来说,中断优先级可分为高、中、低几个档次,其中高优先级的中断会优先于低优先级的中断被处理。2. 优先级可编程...

中断优先级怎么排序?
1、INT0——外部中断0,由P3.2端口引入,低电平或下降沿引起。默认优先级最高。2、INT1——外部中断1,由P3.3端口引入,低电平或下降沿引起。默认优先级第二。3、T0——定时器\/计数器0中断,由T0计数器计满回零引起。默认优先级第三。4、T1——定时器\/计数器1中断,由T1计数器计满回零引起...

单片机中断优先级处理的俩大原则是什么
中断优先级是CPU响应中断的先后顺序。中断优先处理的原则是:(1)先响应优先级高的中断请求,再响应优先级低的中断请求。(2)如果一个中断请求己被响应,同级的其他中断请求将被禁止。(3)如果同级的多个中断请求同时出现,CPU则按单片机内部的自然优先级顺序响应各中断请求。单片机内部自然优先级顺序(由高到...

单片机对中断优先级的处理原则是什么?
单片机对中断优先级的处理原则如下:1、CPU同时接收到几个中断,先响应优先级别最高的中断请求。2、正在进行的中断,不能被新的同级或低级中断请求所打断。3、正在进行的低优级中断服务,能被高级中断请求所中断。

MCS-51系列单片机中用于中断允许和中断优先级控制的寄存器分别是什么...
IP\\x0d\\x0a(IP.7:保留)\\x0d\\x0a(IP.6:保留)\\x0d\\x0aPT2(IP.5):若=1,定时器2中断设为高优先级(只适用于8052及其增强型)\\x0d\\x0aPS(IP.4):若=1,串行中断设为高优先级\\x0d\\x0aPT1(IP.3):若=1,定时器1中断设为高优先级\\x0d\\x0aPX1(IP....

说明单片机中共有哪几种中断,它们的默认优先级是什么?
单片机中共有哪几种中断?51单片机共有5个中断源:外部中断0、定时器0、外部中断1、定时器1、串口。它们的默认优先级是什么?它们的默认优先级,都是 低优先级。如同时有多个中断申请出现,它们,并不会出现中断嵌套。

51单片机串口中断能优先定时器中断吗?
可以的 51单片机的默认(此时的IP寄存器不做设置)中断优先级为: 外部中断0 > 定时\/计数器0 > 外部中断1 > 定时\/计数器1 > 串行中断; 但这种优先级只是逻辑上的优先级,当同时有几种中断到达时,高优先级中断会先得到服务。这种优先级实际上是中断同时到达的情况下,谁先得到服务的优先级,而不...

单片机的优先级是什么,中断源有几个?
优先级从高到低为:外部中断0 定时器0 外部中断1 定时器1 串口中断(51单片机)详细可参考各种芯片手册

51单片机有几个中断优先级
在51单片机中,有2个可编程定时\/计数器·5个中断源,2个优先级,21个专用寄存器。另有8位CPU的4kbytes程序存储器(ROM) ,128bytes的数据存储器(RAM),32条I\/O口线·111条指令,大部分为单字节指令。优先级设定方法:1、IP的状态由软件设定,某位设定为“1”,则相应的中断源为高优先级中断;...

武都区15579568845: 单片机中断优先级问题: -
那饶滴加: 80C51默认中断优先级从高到低排列:INT0 > T0 > INT1 > T1 > 串行中断 题目所给出的高优先级为PS和PX1,低优先级为其他四个.同一优先级中的中断申请不止一个时,有中断优先权排队问题,同一优先级的中断优先权由中断系统确定的默认优先级形成.由此可得中断优先级从高到低排列INT1 > 串行中断 > INT0 > T0 > T1

武都区15579568845: 单片机中,能否在中断函数中设置中断允许以及优先级?求高手解答 -
那饶滴加: 当然可以,中断的优先级是在IP寄存器,通过置相应的位,来改变优先级,至于中断嵌套,我以前也遇到过这种问题,51单片机最多允许二级中断嵌套.在中断嵌套中,你要注意,例如你要在定时器0中打开定时器1的话,要将中断允许和定时器开启同时打开.这样就能完成中断的嵌套.希望你帮到你.

武都区15579568845: 单片机中断优先级问题 -
那饶滴加: 你按键按下时不管流动点亮的执行到到哪了都改变为8灯齐闪,说明这个8灯齐闪的子程序的优先级比流动点亮的优先级高,并且你外部中断是8灯齐闪的子程序,而定时中断是流动点亮子程序,所以当然得设置外部中断为高优先级了.关于SP...

武都区15579568845: 单片机 中断 优先权 -
那饶滴加: 不行,全部置1,他们优先级在同一个级别上,可以做个代码,声明一个全局变量.然后在中T0里将变量赋值1,在INT0里把变量赋值0,然后一直检测IT0和变量值,不退出中断.如果检测到IT0为1超过20个时钟周期还是为1,变量也一直为1,点亮一个LED,表示中断打断失败,将变量赋值为0后退出.在中断INT0的处理里把变量赋值为0,检测到变量为1,点亮另外一个LED,表示中断打断成功. 20个时钟周期不是必须的可以再短,这个不是重点,因为只是测试程序.

武都区15579568845: 51单片机中断优先级问题请教!~ -
那饶滴加: 1.不会 2.因为在默认情况下(即每次单片机复位时),中断优先级寄存器IP为XXX0 0000B,未设置IP时,所有中断都是同等级的!外部中断1在执行时,同级的中断是进不来的. 3.是同时接到这些同级中断时,CPU按照如下硬件顺序进行中断响应 外部中断0 - >计时器0 ->外部中断1 ->计时器1->串口中断.不过这种情况一般不会发生,只是为了在出现这种情况下,单片机知道该怎么办而已.注意如果同时接到这些中断信号,外部中断0被响应了,可能其他的中断信号有的就不存在了,这时还要看有什么中断信号存在,在去响应未响应的中断

武都区15579568845: 关于单片机中断优先级的一点问题 -
那饶滴加: 注意这个和优先级无关,只是开放和关闭中断 应该设计中断允许寄存器IE=1000 0110 执行指令:MOV IE,#86H

武都区15579568845: 80C51单片机的中断优先级有那样的三条原则 -
那饶滴加: CPU同时接收到几个中断时,首先响应优先级别最高的中断请求. 正在进行的中断过程不能被新的同级或低优先级的中断请求所中断. 正在进行的低优先级中断服务,能被高优先级中断请求所中断. 为了实现上述后两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器.其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求.

武都区15579568845: 如何设置8051单片机的中断优先级 -
那饶滴加: PIC系列单片机只有一个中断入口(004H),所有的中断都通过该入口进入中断服务子程序,至于是哪一个中断源,只有在进入中断服务子程序后查询中断标志才能确认.该单片机没规定中断的优先级,也没有用于设定中断优先级的寄存器,...

武都区15579568845: MCS - 51单片机中断优先顺序是固定的,不能改变? -
那饶滴加: MCS-51单片机中断优先顺序同级的话,顺序是固定的,分别为:INT0,T0,INT1,T1,Uart.如果要改变顺,可以将其中断优先级设置为“高”级.比如想让串口的优先级最高,那么将串口的中断设为高级,其余为低级就可以实现了.

武都区15579568845: 关于51单片机中断优先级的 -
那饶滴加: #include#define uint unsigned int uint a=0,t=0; void led1(); void chushi( ); void led2(); void main() { IP=0x10; TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; while(1) { if(a==1) led1(); if(a==2) led2(); } } void extern0() ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网