CA51F551芯片中断系统

一、功能简介

CA51F551 系列芯片有一个增强的中断控制系统,共有 7 个中断入口,每个中断入口有若干中断源,每个中断源有 2 级中断优先级。每个中断源都有独立的中断向量、优先级设置位、中断使能位、中断标志。CPU 在响应中断后,进入该中断对应的中断服务程序,接到 RETI 指令后将返回中断前状态。如果同时有多个有效中断产生中断请求,CPU 将根据设置的中断优先级依次响应;如果优先级相同,则根据它们的自然优先级(中断入口地址从低到高)依次响应。

二、中断逻辑 

三、中断向量表

四、中断控制寄存器

 

五、外部中断

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 中断服务程序
......
}
}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值