外部中断
51基本型有2个中断优先级:高优先级和低优先级。 STC89C52RC有4个中断优先级:3、2、1、0。
可以实现两级的中断嵌套,中断嵌套的基本规则有2条。 (1)低优先级的中断可被高优先级的中断打断,反之不行;
(2)一个被响应的中断,不会被同级的中断打断。
IP:中断优先级控制寄存器
作用:设置各个中断的优先级。
复位状态:IP(××00 0000B)
寻址方式:字节寻址和位寻址
优先级相同时,哪一个中断请求会被CPU相应,取决于中断的自然优先级。如果各中断源的优先级相同,中断响应则按照自上向下,自然优先级由高到低,外部中断0的自然优先级最高,定时器T2的自然优先级最低,CPU会响应自然优先级高的中断。
采用C语言编程时,中断号即可表示中断查询次序,中断号越小,自然优先级越高。C语言中中断函数的格式如下。
函数类型 函数名 interrupt n using m
void EXINT0(void) interrupt 0 //外部中断0中断函数。
void Timer0(void) interrupt 1 //定时器0中断函数。
void EXINT1(void) interrupt 2 //外部中断1中断函数。
void Timer1(void) interrupt 3 //定时器1中断函数。
void Uart0(void) interrupt 4 //串口中断函数。
void Timer2(void) interrupt 5 //定时器2中断函数。
1、外部中断0、外部中断1都有2种触发方式,下降沿触发和低电平触发。低电平触发时,相应引脚的低电平的持续时间至少为2个时钟周期;下降沿触发时,高电平和低电平都至少维持一个时钟周期。
2、外部中断请求的标志位是位于TCON寄存器中的IE0(TCON.1)、IE1(TCON.3)。
3、设置外部中断0~3的触发方式的标志位是位于TCON寄存器中的IT0(TCON.0)、IT1(TCON.02)。如ITx=0(x=0,1),则在(x=0,1)引脚检测到至少2个时钟周期的低电平后,相应的中断标志位IEx(x=0,1)被置“1”,向CPU申请中断;当ITx=1(x=0,1),则在(x=0,1)引脚检测到高电平至少持续1个时钟周期,随后的低电平也至少持续1个时钟周期后,相应的中断标志位IEx(x=0,1)被置“1”,向CPU申请中断。当外部中断被响应后,外部中断请求标志位IE0、IE1会被硬件自动清零。
作业要求:
利用开发板完成以下功能:外部中断0发生时,P0口所接的发光二极管自上而下循环点亮3圈;
当外部中断1发生时,发光二极管自上下两端到中间点亮3圈。
要求外部中断1可以打断外部中断0,并且外部中断1恢复后,可以从上次被打断的LED灯处开始点亮。
此实验采用的开发板中,KEY0与KEY1分别对应外部中断0与外部中断1,