学习笔记——外部中断的基本操作

目录

  • 一、任务简述
  • 二、实现方法
    • 2.1外部中断介绍
  • 三、参考代码

一、任务简述

在CT107D单片机上,将J5的跳帽接到2-3引脚,即S5按键接到P32/INT0,S4按键接到P33/INT1.定义一个函数,使LED1不断闪烁。将P32引脚定义成外部中断功能,按键S5就会产生外部中断信号,在中段响应函数中,点亮LED8指示灯,延时一段时间后熄灭。

二、实现方法

2.1外部中断介绍

你正在看《新闻联播》,正看得入迷的时候,电话响了,你暂停电视剧,去接电话,在接电话的过程中,门铃又响了,你暂时放下电话,去把门打开。如果看《新闻联播》是在执行主程序,那么电话就是中断源,电话铃响了就是中断请求,暂停电视就是现场保护,接电话就是中断响应,门铃响了是更高一级的中断请求,去把门打开,那就是中断嵌套。开完门回来接着聊电话,那是中断返回,接完电话把《新闻联播》暂停打开就是现场恢复。

外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。
学习笔记——外部中断的基本操作_第1张图片

三、参考代码

#include "reg52.h"

sbit L1 = P0^0;
sbit L8 = P0^7;

void Select_HC573()
{
	P2 = (P2 & 0x1f) | 0x80;
}

void delay(unsigned int nms)   //延时50us误差 0us
{
    unsigned int i, j;
	for(i = nms; i > 0; i--)
        for(j = 110; j > 0; j--);
}

void Working()
{
	Select_HC573();
	L1 = 0;
	delay(200);
	L1 = 1;
	delay(200);
}
void Initial_INTO()
{
	EX0 = 1;
	IT0 = 1;
	
	EA = 1;
}

unsigned char stat_k = 0;
void Service() interrupt 0
{
	stat_k = 1;
}

void action()
{
	if(stat_k == 1)
	{
		L8 = 0;
		delay(2000);
		L8 = 1;
		
	}
	stat_k = 0;
}

void main()
{
	Initial_INTO();
	while(1)
	{
		Working();
		action();
	}
}

学习来源于:https://www.bilibili.com/video/BV1Bt41187hw?p=3

你可能感兴趣的:(学习笔记,蓝桥杯,学习,单片机,嵌入式硬件)