10.2 外部中断源的C51程序设计
8051单片机提供了两个外部中断源,和
,下面分别进行介绍。
❑中断,外部中断0请求,占用P3.2引脚,其中断请求号为0。
❑中断,外部中断1请求,占用P3.3引脚,其中断请求号为2。
这里举例讲解外部中断的C51程序设计。假设外部中断0和外部中断1均为下降沿触发,当外部中断0发生的时候,P0端口的电平反向;当外部中断1发生的时候,P1端口的电平反向。如果采用C51语言进行程序设计,其程序示例如下。
include<reg51.h>//头文件
void ISR0(void)interrupt 0//外部中断0服务例程
{
P0=~P0;//P0端口反相
}
void ISR1(void)interrupt 2//外部中断1服务例程
{
P1=~P1;//P1端口反相
}
void main(void)//主函数
{
P0=0x00;
P1=0xFF;
IP=0x05;//外部中断0和外部中断1设置为高优先级
IT0=1;//外部中断0为下降沿触发
IT1=1;//外部中断1为下降沿触发
EX0=1;//开EX0中断
EX1=1;//开EX1中断
EA=1;
while(1)//主循环
{
}
}
该程序可以在KeilµVision3集成开发环境中执行。在该程序中,分别定义了外部中断0的服务例程为ISR0,外部中断1的服务例程为ISR1。在主函数中,首先初始化P0端口和P1端口;然后将外部中断0和外部中断1设置为高优先级,并设置为下降沿触发方式;最后打开相应的中断,并将EA赋值为1打开总中断。在主循环中不进行任何操作,CPU等待外部中断的发生。
当(P3.2引脚)和口和P1端口反向。
(P3.3引脚)有负跳变时,将触发相应的外部中断,分别置P0端口和P1端口反向。