《单片机实验六-中断系统实验(5页).doc》由会员分享,可在线阅读,更多相关《单片机实验六-中断系统实验(5页).doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-信息工程系实验报告成 绩:课程名称:单片微型计算机与接口技术 指导教师(签名):实验项目名称:实验六 中断系统实验 实验时间:2013-12-02班级:电信* 姓名:* 学号:110706 实 验 目 的: 熟悉keil仿真软件、proteus仿真软件的使用和单片机外部中断的使用。了解并熟悉51单片机中中断的概念,中断处理系统的工作原理。理解51单片机中断管理系统处理五种中断源,特别是对外部中断的设置与控制方法。熟悉中断处理特别是外部中断处理的过程,掌握中断处理子程序的书写格式和使用方法。实 验 原 理: 现代的计算机都具有实时处理功能,能对外部发生的事件如人工干预、外部事件及意外故障做出及
2、时的响应或处理,这是依靠计算机的中断系统来实现的。51单片机内部有一个中断管理系统,它能对内部的定时器事件、串行通信的发送和接收事件及外部事件(如键盘按键动作)等进行自动的检测判断,当有某个事件产生时,中断管理系统会置位相应标志通知CPU,请求CPU迅速去处理。CPU检测到某个标志时,会停止当前正在处理的程序流程,转去处理所发生的事件(针对发生的事件,调用某一特定的函数,称为该事件的中断服务函数),处理完以后,再回到原来被中断的地方,继续执行原来的程序。外部中断请求0内部定时器0外部中断请求1内部定时器1 内部 T串行口 R源允许总允许允许中断寄存器中断优先级寄存器中断源标识符中断源标识符高优
3、先级中断请求中断矢量低优先级中断请求中断矢量T发送R接收INT0INT1查询硬件MCS51单片机最典型的有5个中断源(外部中断0、1,内部定时器中断0、1,串口中断),具有两个中断优先级。两个外部中断:(P3.2 INT0、P3.3 INT1)上输入的外部中断源,低电平或负跳变有效,置位TCON中的IE0和IE1中断请求标志位。通过外部中断源触发方式控制位IT可以使外部中断为电平触发方式(=0)或边沿触发方式(=1)。另外控制中断允许寄存器IE可以开放中断。使用MCS51的中断,要为使用到的中断源编写中断服务程序。C51为中断服务程序的编写提供了方便的方法。C51的中断服务程序是一种特殊的函数
4、,它的说明形式为:void 函数名(void) interrupt n using m 函数体语句 这里,interrupt和using是为编写C51中断服务程序而引入的关键字,interrupt表示该函数是一个中断服务函数,interrupt后的整数n表示该中断服务函数是对应哪一个中断源。 实 验 环 境: 硬件:微机、单片机仿真器、单片机实验板、连线若干软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件实 验 内 容 及 过 程: 一、利用外部中断INT1控制数码管显示0到9。二、利用外部中断INT1控制两个数码管显示00到99。1、打开Proteus,绘制电路图,如
5、图6-1,6-2所示:图6-1实验1整体电路图图6-2实验2整体电路图2、开启keil并在project中选择New Project,新建项目,然后在File中选择New。3、保存为lesson1-1.lesson1-2,选择,选择,点击确定,弹出一个对话框选择“否”。4、在新建的空页中编写程序,并保存为lesson1-1.c,lesson1-2.c。然后编译,加载,运行调试。5、双击Target1出现Source Group 1点击鼠标右键选择Add files to group Source Group 1,选中lesson1-1,lesson1-2点击Add击Close6、点击 如图1-
6、3作图6-3点击运行,如果显示无错误就编译成功7、双击AT89C51点击选择hex文件点击OK点击左下角的运行。实 验 结 果 及 分 析:一、单个数码管显示中断实验代码如下:#include #define uchar unsigned char#define uint unsigned intunsigned char code tabdu=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,;-第 5 页-int i=0;void led() interrupt 2i+;if(i=10)i=0;P2=tabdui;void main()EA
7、=1;EX1=1;IT1=1;P2=tabdui;while(1);实验结果如下图6-4所示: 图6-4二、两个数码管显示中断实验代码如下:#include #define uchar unsigned char#define uint unsigned intunsigned char code tabdu=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;void delay(uint x)uint y;for(x;x0;x-)for(y=130;y0;y-);int i=0;int n,m;void led() interrupt 2 EA=0;i+;if(i=100) i=0;EA=1;main()EA=1;EX1=1;IT1=1;n=i/10;m=i%10;P2= 0xbf; P0= tabdun; delay(2);P2=0x7f;P0=tabdum;delay(2);while(1) n=i/10;m=i%10;P2= 0xbf; P0= tabdun; delay(2);P2=0x7f;P0=tabdum;delay(2); 实验结果如下图6-5所示: 图6-5实 验 心 得:
限制150内