《单片机》实验——实验2 MCS-51外部中断控制实验

《单片机》实验——实验2 MCS-51外部中断控制实验

一、实验目的

  1. 掌握中断控制原理;
  2. 掌握中断处理程序的编程方法。

二、知识要点

(1)8051内部有5个中断源,其中两个为外部中断源/INT0、/INT1,两个定时器T0、T1的溢出请求中断,1个片内串行口发送或接收中断源TI和RI。
(2)8051的5个中断源的优先次序已由硬件结构决定,由高到低顺序:
/INT0→T0→/INT1→T1→RI或TI
(3)C51编译器支持51单片机的中断服务程序。用C语言编写中断服务函数的格式为:
函数类型 函数名(形式参数列表)[interrupt n][using m]
其中,interrupt后面的n是中断编号,取值范围为0~4。using中的m表示使用的工作寄存器组号(如不声明,取默认值第0组)

三、实验步骤与要求

  1. 使用Proteus画出电路原理图。
  2. 使用Keil C51编写源程序,编译,生成Hex文件。
  3. 运行程序,观察并分析实验结果。
  4. 写实验报告。

四、实验内容

(1)利用外中断/INT0,控制P1口所接LED花样闪烁。

(2)利用外中断/INT1,统计中断次数,并将统计结果送P1口的8位LED显示。

1.代码

下面的代码将(1)、(2)合为一段代码,利用外中断/INT0,控制P1口所接LED花样闪烁。利用外中断/INT1,统计外中断/INT0中断次数

#include<reg51.h>

char led[]={
    
    0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
bit dir=0,run=0;
void delay(unsigned int time);
int num=0;

key() interrupt 0{
    
    
	char i;
	for(i=0;i<=7;i++){
    
    
			P1=led[i];
			delay(200);
		}
	P1=0xff;
	num++;
}

key1() interrupt 2{
    
    
	P1=~num;
}

void main(){
    
    
	IT0=1;
	IT1=1;
	EX0=1;
	EX1=1;
	EA=1;
	while(1){
    
    
	}
}

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

2.电路图

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44652589/article/details/114661124