MCS-51单片机:中断系统与应用设计


前言

  本次主要介绍一下关于单片机的实验:MCS-51单片机中断系统与应用设计。


一、MCS-51单片机中断系统原理

1.1 Proteus仿真模拟

在这里插入图片描述

  从图中可以看出,本电路中用到了STC89C52单片机的P2的8个管脚和P3.2以及P3.3两个管脚。其中P2的8个管脚分别连接8个LED灯,P3.2和P3.3两个管脚分别与按键相连接。

1.2 MCS-51中断系统内部结构及其原理如下

在这里插入图片描述

  A、中断响应就是CPU对中断源提出的中断请求的接受。满足什么条件才开进行中断响应呢?我们可以从上图MCS-51中断系统内部结构中推出中断相应条件:
  (1)总中断允许开关接通,即IE寄存器中的中断总允许位EA=1。
  (2)该中断源发出中断请求,即该中断源对应中断请求标志为“1”。
  (3)该中断源的中断允许位=1,即该中断被允许。
  (4)无同级或更高级中断正在被服务。
  B、中断服务函数的一般形式为:

函数类型函数名(形式参数表)interrupt nusing n
voidint0 ( )interrupt 0using 0

  其中interrupt后面的 n是中断号,取值为0~4,n=0时,对应的中断源是外部中断0;n=1时,对应的中断源是定时器0;n=2时,对应的中断源是外部中断1;n=3时,对应的中断源是定时器1;n=4时,对应的中断源是串行口。
  C、中断服务函数与平时子程序的调用类似,二者的最大区别在于:子程序在使用时会在主程序有一个调用的过程,但是后者产生中断服务后,会直接跳到对应的程序。

二、MCS-51单片机中断应用案例功能

   在外部中断0引脚(P3.2)接一只按钮开关。在外部中断1引脚(P3.3)接另一个开关,编制一段程序,当程序启动时,P2口上的8只LED全亮。按第一个开关,让低4位的LED与高4位的LED交替闪烁5次,按第二个开关让8个LED同时闪亮,然后从中断返回,控制8只LED再次全亮。

三、MCS-51单片机中断应用案例程序代码

  代码如下(示例):

#include<reg52.h>         //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
sbit k3=P3^2;         //定义按键 K3
sbit k4=P3^3 ;       //定义按键 K4
sbit led=P2^0;       //定义 P20 口是 led
void delay(u16 i)
{
while(i--);
}
void Int0Init()   //设置 INT0
{
IT0=1;       //跳变沿出发方式(下降沿)
EX0=1;       //打开 INT0 的中断允许。
EA=1;        //打开总中断
}
void Int1Init()  //设置INT1
{
IT1=1;      //跳变沿出发方式(下降沿)
EX1=1;      //打开 INT0 的中断允许。
EA=1;       //打开总中断
}
void main()   //主程序
{
P2=0;
Int0Init();      // 设置外部中断 0
Int1Init();	    // 设置外部中断 1
while(1)
	{P2=0;} ;
}
void Int0() interrupt 0  using 0    //中断 0 的中断函数
{
delay(1000);     //延时消抖
if(k3==0)
{
	     unsigned char m;
	     for(m=0;m<5;m++)		 //交替闪烁5次
	     {
		      P2=0x0f;			//低4位LED灭,高4位LED亮
		      delay(100000);	//延时
		      P2=0xf0;			//高4位LED灭,低4位LED亮
		      delay(100000);
		      EX0=1;		    //中断返回前,打开外部中断0中断
	    }
}
}
void Int1() interrupt 1            //中断 1 的中断函数
{
delay(1000); //延时消抖
if(k4==0)
{	
        unsigned char m;	
	    for(m=0;m<5;m++)		 	//闪亮5次
	    {
		     P2=0xff;				  //LED全灭
		     delay(100000);			  //延时
		     P2=0x00;				  //LED全亮
		     delay(100000);
		     EX1=1;                  //中断返回前,打开外部中断1中断
	    }					  
}
}



四、MCS-51单片机中断应用案例电路图

              在这里插入图片描述 在这里插入图片描述
              在这里插入图片描述 在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道无方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值