两个外部中断:(P3.2INT1)输入外部中断源,低电平或者负跳变有效,设置TCON中IE0、IE1中断请求标志位。通过外部中断源触发方式控制位IT,可使外部中断为电平触发(=0)或者边沿触发(=1)。另外还可以控制中断使能寄存器IE,打开中断。要使用MCS-51中断,需要对使用的中断源编写中断服务程序。C51提供了一种方便的编写中断服务程序的方法,C51的中断服务程序是一个特殊的函数,它的描述形式为: void 函数名 (void)interrupt 这里interrupt和using是为编写C51中断服务程序引入的关键字。interrupt表示该函数为中断服务函数,interrupt后的整数n表示该中断服务函数对应的是哪一个中断源。 三、实验设备及装置硬件:微机、单片机仿真器、单片机实验板、连接软件:KEILC51单片机仿真调试软件、proteus系列仿真调试软件四、实验内容利用proteus仿真软件设计仿真实验板,把实验板上单片机的INT1、INT0引脚接到按键引脚上,选择按键作为外部中断请求键,利用中断的方法判断按键,当选择的键被按下时,发出中断请求,引起外部中断。不同的按键显示不同的数字(0-F)A、首先利用Proteus建立如下如图1所示:(选择89C51芯片,7seg-mpx1-cc数码管)图1B、利用keil软件建立如图2所示的新工程:C、把我们编程的程序进行编译,如果没有错误的话,我们就可以让它生成HEX文件了。 当OUTPUT文件中出现下图时,我们就可以把程序烧录到我们的模拟图中了。
图3实验结果如下: 截图图4: 我们每按一次外部中断响应一次,它就会让我们的数码管的值加一,当到达9的时候就返回0,证明按下按键就是一个中断请求。 二、按下按键显示自己的按键代码 A、先用Proteus建立一个如图5所示的仿真图: B、建立keil,方法如上 C、实验结果如下图所示: 我们用两位数码管,把十位和个位分开,当个位到达9的时候,十位就会前进1,当十位到达9的时候就返回0,利用数码管动态显示的方法,让它同时显示,具体看程序。 五、实验心得 通过实验,我对中断系统更加清楚的知道了,知道51单片机一共有5个中断,每个中断的优先级不一样,但是我们可以设置它们的优先级。 熟悉Proteus软件的使用,在实验的过程中对单片机有了更进一步的认识,在编程方面还需要努力学习。附录:不同的按钮显示不同的数字(0-F)#includereg52.h #defineucharunsignedchar #defineuintunsignedintuintucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; voiddelay(uintEA=1;EX1=1;IT1=1;P0=0x3f;while(1)P0=table[i];delay(100); voidled()interrupt 按下按钮显示自己的按键代码 #includereg51.h #defineuintunsignedin t#define ucharunsignedchar uint uchar table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; void delay(uintEA=1;EX1=1;IT1=1;while(1)P2=0x7f;P0=table[i];delay(10);P2=0xbf;P0=table[i/10];delay(10);P2=0x3f;P0=0x3f;delay(10);void xianshi()中断第一级定位时考虑安全,ro