2021-06-10 51单片机,键控流水灯——中断方式

缘由https://ask.csdn.net/questions/7444779?spm=1005.2025.3001.5141 

#include "reg52.h"
sbit K1 = P1^5;
sbit K2 = P1^6;
sbit K3 = P1^7;
bit kk=0;
void zdsz()
{
	EA=EX0=IT0=1;
}
void main()
{
	unsigned char Xd=0;
	unsigned int ys=4747,d1=0;
	zdsz();
	while(1)
	{
		if(!++ys){P0=255-(kk?(d1*=2)/2:(d1/=2));ys=4747;}
		if(kk&&d1>=256)d1=1;
		if(!kk&&d1==1)d1=256;
		if(kk&&!d1)d1=1;
	}
}
void zd() interrupt 0
{
	kk=!kk;
}

2021-06-10 51单片机,键控流水灯——中断方式_第1张图片

参考资料51单片机中的外部中断有什么作用?_百度知道

51单片机外部中断使用方法:
1、51单片机的外部中断int0对应的引脚为p3.2。

2021-06-10 51单片机,键控流水灯——中断方式_第2张图片

2、设置寄存器,打开终端并选择中断的触发方式。

EA为整体中断允许位,首先要将EA置1,打开中断。

EX0为外部中断INT0,置1开启。

IT0寄存器:置0为低电平触发,置1为下降沿触发。

2021-06-10 51单片机,键控流水灯——中断方式_第3张图片

3、编写中断函数,int0的中断编号为0,这里使用中断控制led的点亮与熄灭。

中断函数格式一般为:

void 函数名称(void) interrupt 中断编号 【using 寄存器组编号】{语句;}

4、编译程序,并导入单片机对程序进行测试。

2021-06-10 51单片机,键控流水灯——中断方式_第4张图片

你可能感兴趣的:(51单片机,单片机,嵌入式硬件,proteus)