0
点赞
收藏
分享

微信扫一扫

蓝桥杯_中断系统

一 中断

  中断,即cpu暂停执行当前程序,转而执行另外一段特殊程序,处理结束后。返回之前暂停程序继续执行。

  中断向量,中断服务程序的入口地址,每个中断源都对应一个固定的入口地址。

  中断服务函数,内核响应中断后,执行的相应处理。

二轮询和中断

  内核与外设之间的交互方式,有轮询和中断2种,相较于轮询工作效率低的问题,中断在处理突发

事件中更有优势。

三 关于51单片机的中断系统

    一般来说,51单片机有5个中断源,分2个优先级,这5个中断源安照自然优先级从高到低依次为

外部中断0INTO
定时/计数器0TFO
外部中断1INT1
定时/计数器1TF1
串口中断R1/T1

四 中断相关的寄存器

  中断相关的寄存器有4个,每个寄存器都是可以位存址的,这为编程带来了方便。2个控制寄存器(IE,IP),另外2个中断请求标志(TCON,SCON)

五 中断服务函数的编写格式

void 函数名()interrupt 中断号

{

};

六 工程 代码

将J5处跳帽接到2~3引脚,即S5按键接到P32/INT0,S4按键接到P33/INT1,L1指示灯不断闪烁,按键S5按下就会产生外部中断触发信号,L8指示灯点亮。

#include"reg52.h"

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

void Delay(unsignde int t)
{
  while(t--);
  while(t--);
  while(t--);
}//实现延时功能的函数

void InitHC138(unsigned char n)
{
 switch (n)
 { 
   case 4:
      HC138_C = 1;
      HC138_B = 0;
      HC138_A = 0;//输出Y4
   break;
   case 5:
      HC138_C = 1;
      HC138_B = 0;
      HC138_A = 1;//输出Y5
   break;
case 4:
      HC138_C = 1;
      HC138_B = 1;
      HC138_A = 0;//输出Y6
   break;
   case 5:
      HC138_C = 1;
      HC138_B = 1;
      HC138_A = 1;//输出Y7
   break;
 }
}//锁存器选择

void working()
{
  InitHC138(4)
  L1 = 0;
  Delay(600000);
  L2 = 1;
  Delay(600000);
}//主程序

//===========================================
void Init_INT0()
{
  IT0 = 1;
  EX0 = 1;
  EA =1;
}

void ServiceINT0() interrupt 0
{ 
  L8 = 0;
  Delay(600000);
  Delay(600000);
  Delay(600000);
  Delay(600000);
  Delay(600000);
  Delay(600000);
  L8 = 1;
}


//===========================================

void main()
{
 Init_INT0()
 while(1)
  {
    working();
   }
}
举报

相关推荐

0 条评论