单片机实验七

  • 格式:docx
  • 大小:19.92 KB
  • 文档页数:2

下载文档原格式

  / 2
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机实验七

实实验报告专业计算机科学与技术班级学号姓名课程名称单片机原理及应用学年2013-2014学期1/2课程类别专业必修限选任选实践实验时间2014年4月21日实验名称实验七外部中断0(/INT0)中断技术实验实验目的和要求①掌握MSC-51单片机中断原理以及编程和使用方法。

②理解下降沿中断和低电平中断的区别。

实验器材1实验仪一台;2编程器一台;3万用表一块;4小镊子一把;实验原理、内容与要求(见附页)实验结果(见附页)小结通过实验,我掌握了MSC-51单片机中断原理以及编程和使用方法,以及理解了下降沿中断和低电平中断的区别。

评定成绩:

批阅教师:

年月日实验原理:MCS-51单片机有5个中断源,其中,两个是由/INT0、/INT1引脚输入的外部中断源;另外三个是内部中断源,即由T0、T1的溢出引起中断和串行口发送完一个字节或接收到一个字节数据引起的中断。触发外部中断有两种方式,即下降沿引起中断或低电平引起中断,当编程TCON中的ITi为1时,则规定引起触发的方式为边沿触发方式,反之为低电平触发方式。每个中断源的中断请求能否得到响应要受两级开关的控制,即一个总开关EA和五个分开关ES、EXT1、EX1、ET0和EX0的控制,只有当EA为1,且对应的分开关也为1时,对应中断源的中断请求才能被响应。5个中断源可编程为两个优先级,同一优先级内以/INT0的优先级最高,然后是T0中断、/INT1中断、T1中断和串行口中断。5个中断源对应5个固定的中断服务程序入口地址。CPU在每个机器周期顺序采样每个中断源,如查询到某个中断源的中断标志为1,中断系统通过硬件自动将相应的中断矢量装入PC,进入中断服务程序。实验线路如下图所示,图中的开关TR3为一按钮,通常状态下A点接地,C点为高电平,当按下按钮时B接地,这时就会在C点输出低电平,当松开按钮时,C 点重新变成高电平。

实验内容与要求:

1编写主程序,读取图中开关SW1的状态,当其闭合时(P1.3为低电平)初始化为下降沿中断,反之,初始化为低电平中断,且黄色发光管灭;编写中断服务程序,使图中的发光管闪烁5次,间隔250MS,即中断服务程序的执行时间为2.5秒,退出中断程序时,使发光管灭。

实验分两步进行:

首先将SW1闭合,按住按钮TR3,时间小于2.5秒,即在中断服务程序执行结束时,使图中C 点变成高电平;数秒后再按住按钮TR3,时间大于2.5秒,即在中断服务程序执行结束时,图中C点仍为低电平;观察发光管的闪烁情况。

然后关掉电源,将SW1打开,重复上述的动作,观察发光管的闪烁情况。两次的观察结果是否一样,为什么?2用万用表测量图中C点的电平,按下TR31秒钟,然后松开,观察C点电平的变化。

线路设置:

如程序存放在AT89S51中,AT89S51的/EA(引脚31)必须接高电平,实验时需短路J13的1和2引脚,否则;必须短路J13的2和3引脚;实验时要求短接J3的1、2,J6的2、6。实验结果:

发光管闪烁5次,间隔250MS,即中断服务程序的执行时间为2.5秒,退出中断程序时,发光管灭。

附录(源程序清单):

1汇编语言程序清单(FileName:

ex7.asm)ORG0000HSJMPMAINORG0003HLJMPEXINT0MAIN:MOVSP,#60HCLRP1.2SETBEAMOVC,P1.

3JCLOWERSETBIT0;边沿触发方式SJMPCONTLOWER:CLRIT0;低电平触发方式CONT:SETBEX0;

允许/INT0中断

HERE:SJMPHERE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;中断服务程

序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EXINT0 :MOVR0,#5LP:CPLP1.2

DLY:MOV30H,#5DEL0:MOVR7,#100;延时

50msDEL1:MOVR6,#125DEL2:DJNZR6,DEL2DJNZR7,DEL1DJNZ30H,DEL0DJNZR0,LPCLRP1.2RETI END2C语言程序清单(FileName:

cex7.c)#includeAT89X51.H#defineucharunsignedchar#defineuintunsignedint//延时t 毫秒

voiddelay(uintt){ucharj;for(;tt--)for(j=190;jj--);}voidmain(void){SP=0x60;P1_2 =0;//发光管灭EA=1;//开总中断if(P1_3)//如果开关SW1没闭合IT0=0;//外部中断0的中断方式设为低电平中断elseIT0=1;//否则,设为下降沿中断EX0=1;//开外部中断

0for(;;);}voidexint0()interrupt0{uintn;for(n=0;nn++){//发光管闪烁5次,间隔250MSP1_2=~P1_2;delay(250);}P1_2=0; }