外部中断的基本操作(keil5)

没按s5,一直执行主程序(L1一直闪),按下s5,主程序暂停,执行中断服务函数中的内容(L2亮,L2灭后),继续刚刚主程序(L1一直闪)。

#include <STC15F2K60S2.H>
#include <intrins.h>
sbit L2=P0^1;
sbit L1=P0^0;
void initsystem()
{
    
    
	P2=0xbf&(P2|0xe0);
	P0=0x00;
	P2=0x1f&(P2|0xe0);
	P2=0x9f&(P2|0xe0);
	P0=0xff;
	P2=0x1f&(P2|0xe0);
}
void Delay500ms()		//@11.0592MHz
{
    
    
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 22;
	j = 3;
	k = 227;
	do
	{
    
    
		do
		{
    
    
			while (--k);
		} while (--j);
	} while (--i);
}
void LED()
{
    
    
	L1=0;
	Delay500ms();
	L1=1;
	Delay500ms();
}
void Init_Timer()
{
    
    
	IT0=1;
	EX0=1;
	EA=1;
}
void Iterrupt1() interrupt 0
{
    
    
	L2=0;
	Delay500ms();
	Delay500ms();
	Delay500ms();
	Delay500ms();
	L2=1;
}
void main()
{
    
    
	Init_Timer();
	initsystem();
	P2=0x9f&(P2|0xe0);
	while(1)
	{
    
    
		LED();
	}
}

猜你喜欢

转载自blog.csdn.net/m0_53126906/article/details/113868707
今日推荐