实验三 -INT0中断实验1.实验目的(1)掌握MCS-51单片机中断原理以及编程使用方法2)理解下降沿中断和低电平中断的区别2.实验内容 编写主程序,读取K0状态;当其与地端闭合时(P1.3=0)初始化为下降沿触发中断;反之(P1.3=1),初始化为低电平触发中断编写中断服务程序,使图中的发光管闪烁1次(点亮和熄灭各一次),间隔250ms,即中断服务程序的执行时间为2.5秒,退出中断程序时,使发光管灭3.实验器材(1)Proteus仿真软件 (2)keil C51开发环境软件4.实验原理MCS-51单片机有5个中断源,其中两个是由-INT0、-INT1引脚输入的外部中断源;另外三个是内部中断源即由T0、T1的溢出引起中断和串行口发送完一个字节或接收到一个字节数据引起中断触发外部中断有两种方式,即下降沿引起中断或低电平引起中断当编程TCON中的ITi(i=0、1)为1时,则引起触发的方式为边沿触发方式,反之(ITi=0)为低电平触发方式每个中断源的中断请求能否得到响应要受两级“开关”的控制,即一个总“开关”EA和五个分“开关”ES、ET1、EX1、ET0和EX0的控制能否中断,只有当EA为1,且对应的分“开关”也为1时,相应中断源的中断请求才能被响应。
5个中断源可编程为两种优先级,同一种优级内以-INT0的级别最高,然后是T0中断、-INT1中断、T1中断和串行口中断5个中断源对应有个固定的中断服务程序入口地址CPU在每个机器周期顺序采样每个中断源,如查询到某个中断源的中断标志为1,中断系统通过硬件自动将相应的中断矢量装入PC,进入中断服务程序图中的开关TR3为一带锁按钮(在实验仪“脉冲源”模块中),在按下和松开按钮时,“”孔的电平将发生变化,由此产生下降沿5.实验电路原理图16.程序框图判断P1.3=1?设置为低电平触发设置为下降沿触发开外中断0YN主程序流程图开 始关中断点亮L0延 时熄灭L0延 时开中断中断处理程序流程图开始结束7.实验步骤(1)按照“5.实验电路原理图”,用proteus绘制原理图2)用keil C51开发环境软件,按照“6.程序流程图”,编写、调试和运行C51处理程序(提示:可参考A15.C)3)首先将K0与地端相连(下降沿触发中断),按按钮TR3,使图中点变成高电平,等2秒后再按按钮TR3,使图中点为低电平,重复以上操作,观察发光管的闪烁情况4)然后将K0与VCC端相连(触发中断低电平),重新运行程序,重复上述的动作,观察发光管闪烁情况。
总结两次的观察结果是否一样,为什么?(5)用探针测量图中点的电平,按下TR3,然后松开,观察该点电平的变化将绘制的原理图和编写、调试和运行的处理程序存放在自己所带的USB盘中8.程序清单(参考MCS51\A15.ASM A15.C)// 实验三 INT0中断实验/* 读取K0状态;当其与地端闭合时(P1.3=0)初始化为下降沿触发中断;反之(P1.3=1),初始化为低电平触发中断编写中断服务程序,使图中的发光管闪烁5次,间隔250ms,即中断服务程序的执行时间为2.5秒,退出中断程序时,使发光管灭/#include "reg51.h"void DELAY();void int0() interrupt 0 using 0{// EA=0; //关中断 P1=P1|0x04; //点亮 DELAY(); //延时 P1=P1&0xfb; //熄灭 DELAY(); //延时// EA=1; //开中断}void main(){ while(1) { if(P1&0x08) IT0 = 1; //开关状态高电平(与地断开),设置成低电平触发中断 else IT0 = 0; //开关状态低电平(与地闭合),设置成下降沿触发中断 IE=IE | 0x81; //开中断,允许INIT0中断 IP=IP | 0x02; }}void DELAY(void){ unsigned char i=50,j; while(i--) { j=255; while(j--); }}9.撰写实验报告(1)预习(2)原始记录——用C51编写的处理程序,在“7.实验步骤”中的(3)(4)(5)观察总结内容。