中断系统应用实验

一、单片机的外部中断0和1分别接入按键,用于控制发光二极管的显示状态。具体要求如下:
1、外部中断0输入引脚P3.2接一只按钮开关k1,外部中断1输入引脚P3.3接一只按钮开关k2。
2、单片机P1端口接8只LED灯。
3、k1和k2都未按下时,P1口的8只LED呈流水灯显示;仅k1按下再松开时,上下各4只LED交替闪烁10次,然后再回到流水灯显示;若k2按下再松开时,P1口的8只LED全部闪烁10次,然后再回到流水灯显示。要求两个外部中断的优先级相同。

二、实验原理
中断系统结构见图6-2。中断系统有6个中断请求源(简称中断源),2个中断优先级,可实现2级中断服务程序嵌套。每一中断源可用软件独立控制为允许中断或关闭中断状态;每一个中断源的优先级均可用软件设置。在这里插入图片描述
** 图6-2 AT89S52的中断系统结构**

  1. 中断请求源
    由图6-2,中断系统共有6个中断请求源,它们是:
     (1)INT0*—外部中断请求0,外部中断请求信号(低电平或负跳变有效)由INT0引脚输入,中断请求标志为IE0。
     (2)INT1
    —外部中断请求1,外部中断请求信号(低电平或负跳变有效)由INT1*引脚输入,中断请求标志为IE1。
     (3)定时器/计数器T0计数溢出的中断请求,标志为TF0。
     (4)定时器/计数器T1计数溢出的中断请求,标志为TF1。
     (5)串行口中断请求,标志为发送中断TI或接收中断RI。
    (6)定时器/计数器T2的中断请求源,含有计数溢出(TF2)和“捕捉”(EXF2)两种中断请求标志,经或门共用一个中断向量。两种中断触发是由T2的两种不同工作方式决定的。

三、实验步骤
1、分析电路中外部中断触发的条件。
(1)当P3.2引脚上的电平由高变低时,会触发INT0中断;
(2)当P3.3引脚上的电平由高变低时,会触发INT1中断.
2、设计硬件电路原理图,画出实际接线图
在这里插入图片描述

3、根据实验任务设计出相应的程序

#include <reg51.h>
#define uchar unsigned char

uchar int0_F=0;
uchar int1_F=0;

void Delay(unsigned int i)
{
  unsigned int j;
	for(;i>0;i--)
	for(j=0;j<125;j++)
	{;}
}

void  main( )	
{
uchar code display[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};	

uchar a;
uchar n;
uchar m;
int0_F=0;
int1_F=0;

 EA=1;
 EX0=1;
 EX1=1;
 IT0=1;
 IT1=1;
 IP=0;

  for(;;)		
     { 
			 if(int0_F)
			 {
				 int0_F=0;
				 for(n=0;n<10;n++)
	         {
			       P1=0x0f;
			       Delay(500);
			       P1=0xf0;
			       Delay(500);
		       } 
         }
          
         if(int1_F)
				 {
            int1_F=0;
            for(m=0;m<10;m++)
	            {
			          P1=0;
			          Delay(500);
			          P1=0xff;
			          Delay(500);
		           } 
					}							 
				 
			 for(a=0;a<8;a++)
			   {
					 Delay(500);
					 P1=display[a];
				 } 
	    }
}

void int0(void) interrupt 0 using 1
{	
	 int0_F=1;							
}

void int1(void) interrupt 2 using 2
{
	 int1_F=1;
}


四、实验结果
(1)k1和k2都未按下时,P1口的8只LED呈流水灯显示;
在这里插入图片描述
(2)仅k1按下再松开时,上下各4只LED交替闪烁10次,然后再回到流水灯显示;
在这里插入图片描述
(3)若k2按下再松开时,P1口的8只LED全部闪烁10次,然后再回到流水灯显示。
在这里插入图片描述
五、思考题
1、如果k1、k2两个按键同时按下并同时松开,P1口的LED是什么状态?
答:如果 k1和 k2两个按键同时按下并同时松开,理论上应该同时触发两个中断。然而,由于中断是异步发生的,实际的执行顺序可能会受到多种因素的影响,包括中断响应时间、中断嵌套等。因此,我们无法准确预测P1口的LED状态,因为它取决于中断触发的时机和处理器的调度。
2、在单片机系统中什么场合下采用中断技术?
答:(1)具有故障处理功能:
当系统中的某个部分出现故障时,中断技术可以让CPU立即中断当前任务,转而处理故障,以防止问题扩大。这种机制有助于提高系统的稳定性和可靠性。
(2)实现分时操作:
通过中断技术,单片机可以在多个任务之间切换,为每个任务分配一定的处理时间。这种分时操作模式使得单片机能够为多个I/O设备服务,提高了资源的利用效率。
(3)处理异步事件:
在许多应用场景中,事件的发生是不可预测的,例如用户的按键操作或者外部传感器的变化。中断技术可以让CPU在这些异步事件发生时立即作出反应,而不是等待主程序周期性地检查这些事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值