用的是普中的开发板,设置int0<int1,默认这两个引脚接到key3与key4,通过按键接到p3^0,p3 ^1,返回到主函数,可以验证低级中断无法打断高级中断,以及中断返回。地址设置包含在函数里,无需单独设置。
#include<reg52.h> //对单片机各端口、寄存器等等进行的预设置。
#define uchar unsigned char //uchar”全部代表“unsigned char”
#define uint unsigned int //unsigned int是无符号0——65535 int是有符号整型-32767——32767 ,uint代表unsigned int
sbit k1=P3^1;
sbit k2=P3^0;
/*sbit k3=P3^2;*/
/*sbit k4=P3^3;*/
void Int(); //定义两个中断,以及中断优先级
void main()
{
Int();
while(1)
{
P2 = 0x00; //8个灯全亮
}
}
void Int()
{
IT0 = 1; //TCON设置 中断0跳沿触发
IT1 = 1; // 中断1跳沿触发
PX1 = 1; //IP设置 中断1高于中断0
EX1=1; // IE设置 IE = 10000101 允许中断1中断
EX0 = 1; //允许中断0中断
EA = 1; //开总中断
}
void Interrupt0() interrupt 0 using 1
{ while (1)
{if(k1==0)
return;
P2 = 0xc3; //4个灯亮
}
}
void Interrupt1() interrupt 2 using 1
{
while (1)
{if(k2==0)
return;
P2 = 0xef; //1个灯亮
}}