51单片机的中断嵌套

用的是普中的开发板,设置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个灯亮
    }}

版权声明:本文为m0_37749400原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。