用IP寄存器设置中断优先级

[复制链接]
查看11 | 回复1 | 2011-5-21 23:05:12 | 显示全部楼层 |阅读模式
我写了如下程序,设置PT1,PT0分别为(1,0)(1,1)(0,1)(0,0),结果都是先执行interrupt 3的程序,这是为什么,请详解IP工作方式
#include
typedef unsigned char uchar;
typedef unsigned int uint;
sbit led0=P2^0;
sbit led7=P2^7;//两个led灯
void InitTimer01();
uint N0=50000;
uint N1=50000;//定时50ms
void main()
{
PT1=0;//设置定时器优先级
PT0=1;
InitTimer01();
while(1){}
}
void InitTimer01()//晶振12MHZ,方式1,N us,初始化两个定时器
{
TMOD=0x01;
TH0=(65536-N0)/256;
TL0=(65536-N0)%256;
TH1=(65536-N1)/256;
TL1=(65536-N1)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
}
void Timer0() interrupt 1
{
led7=0;
TH0=(65536-N0)/256;
TL0=(65536-N0)%256;
}
void Timer1() interrupt 3
{
led0=0;
TH0=(65536-N1)/256;
TL0=(65536-N1)%256;
}

回复

使用道具 举报

千问 | 2011-5-21 23:05:12 | 显示全部楼层
中断优先级的不同,和谁先发生中断,没有丝毫的关系。中断优先级的不同,将会导致中断的嵌套。要想验证中断嵌套,必须把低优先级的中断过程,编写的长一些,在低级的没有退出前,高优先级的中断又发生了,这样才会嵌套。现在看,楼主的中断程序,都极为简短,出现嵌套的概率极其微小。 中断嵌套的测试,可见:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/644b57c3e858a3160ff47751.html
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行