单片机实验说明<二>外部中断基本使用

实验二 外部中断应用

设计要求:

自行设计实验线路并编制程序:要求在无外部中断时最右一位发光二极管点亮。请编程实现:当外部中断0请求中断时发光二极管左移;当外部中断1请求中断时发光二极管闪烁。

电路设计:

软件代码:

/*****************************************************************************
 *                             头文件                                   *
 *****************************************************************************/
#include "hml/hml.h"
#define LSA P1_5					
#define LSB P1_6
#define LSC P1_7
void EXINT0() __interrupt 0;
void EXINT1() __interrupt 2;
/*****************************************************************************
 *                             初始化和功能函数                                   *
 *****************************************************************************/
void sys_init(void)
{
	LSA=0;
	LSB=0;
	LSC=0;
	IT0=0;                     
	IT1=0;
	EA=1;                       
	EX0=1;                      
	EX1=1;	
}
void Up2Down(int x) 		
{	
	int i, j;
	unsigned char sel=0x7f;
	for(i=0;i<x;i++)			
	{	
		for(j=0;j<8;j++)		
		{	
			P0 = sel;
			sleep(125);	
			sel=sel>>1|0x80; 	
		}
		sel=0x7f;						
	}
}
void EXINT0() __interrupt 0     	
{
	Up2Down(1);					
}
void EXINT1() __interrupt 2       
{
	P0=0xFF;
	sleep(125);
	P0=0x7F;
	sleep(125);
	P0=0xFF;
	sleep(125);					
}
/*****************************************************************************
 *                             主函数                                   *
 *****************************************************************************/
void main(void)
{
    sys_init();
    while(true)
    {
	P0=0x7F;
    }
}

思考题:

1.51 单片机的中断系统由哪几个特殊功能寄存器组成?
2.中断函数与函数调用有何不同?
3.如果 INT0 和 INT1 的优先级都设置成 0,但我们知道中断号越小,优先级越高,即 INT0 的自
然优先级高于 INT1,请修改程序,先按下 KEY1,在 LED 的闪烁过程中按下 KEY0,看能否打断 LED
的闪烁?原因是什么?


 

zhangrelay CSDN认证博客专家 不合格高校讲师
LoveRobot,Go!!!!人工智能和机器人粉,从事机器人工程专业本科教学和科研工作,研究方向包括多机器人仿真技术,控制与协作,机器人系统软硬件开发等。
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页