一、功能简介
CA51F551 系列芯片有一个增强的中断控制系统,共有 7 个中断入口,每个中断入口有若干中断源,每个中断源有 2 级中断优先级。每个中断源都有独立的中断向量、优先级设置位、中断使能位、中断标志。CPU 在响应中断后,进入该中断对应的中断服务程序,接到 RETI 指令后将返回中断前状态。如果同时有多个有效中断产生中断请求,CPU 将根据设置的中断优先级依次响应;如果优先级相同,则根据它们的自然优先级(中断入口地址从低到高)依次响应。
二、中断逻辑
三、中断向量表![](https://i-blog.csdnimg.cn/blog_migrate/03f0c90bb7b56fd9628187cc23e883fb.png)
四、中断控制寄存器![](https://i-blog.csdnimg.cn/blog_migrate/4b9388bb14de565e9da920399f09d2be.png)
五、外部中断
1、外部中断介绍
除了标准 8051 的 INT0 和 INT1 以外,系统还扩展了 3 个中断入口 INT2~INT4 作为外部中断。扩展的每个
外部中断都可选择任意输入口作为中断触发源, 同时也可各自单独设置上升沿或下降沿触发中断。每个外部中断
都可以用于 STOP 模式唤醒。EPIF 为 INT2~INT4 外部中断状态寄存器。INT2~INT4 对应的各个配置寄存器为
EP0CON~EP2CON。
备注:INT0 和 INT1 可选择上升沿或下降沿触发,选择位分别为 IT0 和 IT1,详见寄存器 TCON 相关描述
2 外部中断寄存器
3、 外部中断控制例程
(1) 外部中断 0/1 控制例程
例如,使能外部中断 0,程序如下:
void INT0_init(void)
{
P32F = 1; //外部中断 0 的中断引脚为 P32,设置 P32 为输入功能
EX0 = 1; //INT0 中断使能
IE0 = 1; //外部中断 0 使能
IT0 = 1; //设置为下降沿中断
PX0 = 1; //设置 INT0 为高优先级
EA = 1; //总中断使能
}
void INT0_ISR (void) interrupt 0
{
//外部中断 0 中断服务程序
}
例如,使能外部中断 1,程序如下:
void INT1_init(void)
{
P33F = 1; //外部中断 1 的中断引脚为 P33,设置 P33 为输入功能
EX1 = 1; //INT1 中断使能
IE1 = 1; //外部中断 1 使能
IT1 = 1; //设置为下降沿中断
PX1 = 1; //设置 INT1 为高优先级
EA = 1; //总中断使能
}
void INT1_ISR (void) interrupt 2
{
//外部中断 1 中断服务程序
}
(2)外部中断 2~4 控制例程
以外部中断 2 为例,设置 P00 为外部中断 2 中断输入引脚并开启外部中断 2,程序如下:
void INT2_init(void)
{
P00F = 1; //设置 P00 为输入引脚
EP0CON = (1<<7) | (0<<6) | 0; //设置为上升沿触发并设置中断引脚索引编号,0 对应 P00,如果设置为下
//降沿触发则设置为 EP0CON = (1<<7) | (1<<6) | 0;
INT2EN = 1; //INT2 中断使能
EA = 1; //总中断使能
}
void INT2_ISR (void) interrupt 4
{
if(EPIF & 0x01) //判断外部中断 2 中断标志
{
EPIF = 0x01; //中断标志写 1 清 0
//外部中断 2 中断服务程序
......
}
}