本帖最后由 xlsbz 于 2009-12-9 11:56 编辑
““中断系统的中断查询及优先级处理在每个机器周期中重复执行。所查询的是前一个机器周期的S5P2状态时被采样到的中断请求标志。这里需要注意的是:如中断请求标志已被置位,但因前述条件之一不满足而未被响应,待到封锁条件已撤出,该中断请求标志已不复存在(标志位已回0),则被拖延的中断请求就不再被响应。也就是说,MCS-51中的中断系统,对未被响应的中断请求 标志(置位状态)不作**。每个查询周期仅对前一个周期采样到的中断请求标志置位状态进行中断响应处理。为此,未被及时响应的中断请求有可能被丢失。”
注意:若中断请求标志未消失(其实应纳入中断系统)的话,下个指令周期内还会被查询。只有在未响应前,中断请求标志消失了(如电平触发),那此中断便就丢失。另外一种情况是,在响应前又来了一个中断请求,此请求覆盖了前请求,这样少了一个请求处理(也就是丢失了一个请求)。HWM 发表于 2009-12-9 09:47
****************
对你说的第二种情况验证,验证结果 你说的对!
*****************
程序共有两个中断 都为低优先级别 编译器keil 优化级别0
程序首先进入定时器中断处理程序
void Timer0(void) interrupt 1
{
//程序运行到这里,我向串口发送仅仅一个字符
i = 1;
i = 1;
i= 1;
i = 1;
i= 1;
TF0 = 1;
i =1;
i = 1;
i = 1;
}
void UART(void) interrupt 4
{
//这里是中断代码
} |