单片机实验六-中断系统实验教学文稿

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

单片机实验六-中断系

统实验

信息工程系实验报告

课程名称:单片微型计算机与接口技术

实验项目名称:实验六中断系统实验

2013-12-02

班级:电信*** 姓名:*** 学号:

110706

实验目的:

熟悉keil仿真软件、proteus仿真软件的使用和单片机外部中

断的使用。了解并熟悉51单片机中中断的概念,中断处理系统的工

作原理。理解51单片机中断管理系统处理五种中断源,特别是对外

部中断的设置与控制方法。熟悉中断处理特别是外部中断处理的过

程,掌握中断处理子程序的书写格式和使用方法。

实验原理:

现代的计算机都具有实时处理功能,能对外部发生的事件如人工

干预、外部事件及意外故障做出及时的响应或处理,这是依靠计算机

的中断系统来实现的。

51单片机内部有一个中断管理系统,它能对内部的定时器事

件、串行通信的发送和接收事件及外部事件(如键盘按键动作)等进

行自动的检测判断,当有某个事件产生时,中断管理系统会置位相应

标志通知CPU,请求CPU迅速去处理。CPU检测到某个标志时,会停

止当前正在处理的程序流程,转去处理所发生的事件(针对发生的事件,调用某一特定的函数,称为该事件的中断服务函数),处理完以后,再回到原来被中断的地方,继续执行原来的程序。

MCS -51单片机最典型的有5个中断源(外部中断0、1,内部定时器中断0、1,串口中断),具有两个中断优先级。两个外部中断:(P3.2 — INT0、P3.3 — INT1)上输入的外部中断源,低电平或负跳变有效,置位TCON 中的IE0和IE1中断请求标志位。通过外部中断源触发方式控制位IT 可以使外部中断为电平触发方式(=0)或边沿触发方式(=1)。另外控制中断允许寄存器IE 可以开放中断。

使用MCS -51的中断,要为使用到的中断源编写中断服务程序。C51为中断服务程序的编写提供了方便的方法。C51的中断服务程序是一种特殊的函数,它的说明形式为:

void 函数名(void) interrupt n using m 外部

内部

外部

内部 内源允总允

允许中断中断优

高优中断中断低优中断中断

T —

INT IN 查询

{ 函数体语句 }

这里,interrupt和using是为编写C51中断服务程序而引入的关键字,interrupt表示该函数是一个中断服务函数,interrupt后的整数n表示该中断服务函数是对应哪一个中断源。

实验环境:

硬件:微机、单片机仿真器、单片机实验板、连线若干

软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件

实验内容及过程:

一、利用外部中断INT1控制数码管显示0到9。

二、利用外部中断INT1控制两个数码管显示00到99。

1、打开Proteus,绘制电路图,如图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 击Close

6、点击如图1-3作

图6-3

点击运行,如果显示无错误就编译成功

7、双击AT89C51点击选择hex文件点击OK点击左下角的运行。

实验结果及分析:

一、单个数码管显示中断实验代码如下:

#include

#define uchar unsigned char

#define uint unsigned int

unsigned char code

tabdu[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,};

int i=0;

void led() interrupt 2 {

i++;

if(i==10)

i=0;

P2=tabdu[i];

}void main()

{

EA=1;

EX1=1;

IT1=1;

P2=tabdu[i];

while(1);

}

实验结果如下图6-4所示:

图6-4

二、两个数码管显示中断实验代码如下:

#include

#define uchar unsigned char

#define uint unsigned int

unsigned char code

tabdu[]={0x3F,0x06,0x5B,0x4F

,0x66,0x6D,0x7D,0x07,0x7F,0x

6F};

void delay(uint x)

{

uint y;

for(x;x>0;x--)

for(y=130;y>0;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= tabdu[n];

delay(2);

P2=0x7f;

相关文档
最新文档