当前位置:文档之家› 单片机实验4

单片机实验4

电子信息工程系实验报告课程名称:单片机原理及接口(应用)实验项目名称:实验四 中断系统实验 实验时间:2011-11-18 班级: 电信092 姓名: XXX 学号: 910706201一、实 验 目 的:熟悉keil 仿真软件、proteus 仿真软件的使用和单片机外部中断的使用。

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

理解51单片机中断管理系统处理五种中断源,特别是对外部中断的设置与控制方法。

熟悉中断处理特别是外部中断处理的过程,掌握中断处理子程序的书写格式和使用方法。

二、实 验 环 境:Windows 7Keil2编程软件、proteus 仿真软件三、实 验 原 理:中断概念:单片机内部有一个中断管理系统,它对内部的定时器事件、串行通信的发送和接收事件及外部事件(如键盘按键动作)等进行自动的检测判断,当有某个事件产生时,中断管理系统会置位相应标志通知CPU ,请求CPU 迅速去处理。

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

中断源及中断控制的有关寄存器:MCS -51中典型的8051单片机有5个中断源:两个外部中断:P3.2 — INT0(外部中断0)、P3.3 — INT1(外部中断1);三个内部中断源:定时器/计数器T0、T1的溢出中断源和串行口的发送/接收中断。

中断控制寄存器TCON :(可位寻址)IE0:外部中断0请求源(INT0)标志。

IE0=1,外部中断0正在向CPU 请求中断,当 CPU 响应该中断时由硬件清零IE0(边沿触发方式)。

IT0:外部中断源 INT0 触发方式控制位。

IT0 = 0,外部中断0程控为电平触发方式,当P3.2输入低电平时,置位IE0。

IT0 = 1,外部中断0程控为边沿触发方式,相继的两次采样,一个周期中采样到为高电平,接着的下个周期中采样到为低电平,则置‘1’ IE0。

IE1:外部中断1请求(INT1,P3.3)标志。

IE1 = 1外部中断1向 CPU 请求中断,当 CPU 响应外部中断时,由硬件清‘0’ IE1(边沿触发方式)。

IT1:外部中断1触发方式控制位。

IT1= 0,外部中断1程控为电平触发方式,IT1 = 1,外部中断1为边沿触发方式。

其功能和IT0类似。

TR0:定时/计数器T0运行控制位。

(启动/停止)TF0:定时/计数器T0溢出中断标志位,CPU 执行中断服务程序时由硬件复位。

TR1:定时/计数器T1运行控制位。

TF1:定时/计数器T1溢出中断标志位,CPU 执行中断服务程序时由硬件复位。

成 绩:指导教师(签名):中断允许寄存器IE:EA:CPU的中断开放标志。

EA = 1,CPU开放中断;EA = 0,CPU屏蔽所有的中断申请。

EX0:外部中断0中断允许位。

EX0 = 1,允许中断;EX0 = 0,禁止中断。

ET0:T0的溢出中断允许位。

ET0 = 1,允许T0中断; ET0 = 0,禁止T0中断。

EX1:外部中断1中断允许位。

EX1 = 1,允许外部中断1中断;EX1 = 0,禁止外部中断1中断。

ET1:定时器/计数器 T1的溢出中断允许位。

ET1 = 1,允许T1中断;ET1 = 0禁止T1中断。

ES:串行口中断允许位。

ES = 1,允许串行口中断;ES = 0禁止串行口中断。

中断优先级寄存器IP:(IP为特殊功能寄存器,它的字节地址为B8H,可位寻址)PX0:外部中断0中断优先级控制位。

PX0 = 1,外部中断0中断定义为高优先级中断;PX0= 0,外部中断0中断定义为低优先级中断。

PT0:定时器T0中断优先级控制位。

PT0 = 1,定时器T0中断定义为高优先级中断; PT0 = 0,定时器 T0中断定义为低优先级中断。

PX1:外部中断1中断优先级控制位。

PX1 = 1,外部中断1中断定义为高优先级中断;PX1= 0,外部中断 1中断定义为低优先级中断。

PT1:定时器T1中断优先级控制位。

PT1 = 1,定时器T1中断定义为高优先级中断;PT1= 0,定时器T1 中断定义为低优先级中断。

中断服务函数:使用MCS-51的中断,要为使用到的中断源编写中断服务程序。

C51的中断服务程序是一种特殊的函数,它的说明形式为:void 函数名(void) interrupt n using m{ 函数体语句 }这里,interrupt和using是为编写C51中断服务程序而引入的关键字,interrupt表示该函数是一个中断服务函数,interrupt后的整数n表示该中断服务函数是对应哪一个中断源。

每个中断源都有系统指定的中断编号:中断源中断编号外部中断0 0定时器T0 1外部中断1 2定时器T1 3串行口中断 4using指定该中断服务程序要使用的工作寄存器组号,m为0~3。

四、实验内容及过程:本实验是一次设计性实验,要求用proteus仿真软件设计一个仿真实验板,选取单片机的INT1或INT0引脚和按键相连,选将按键作为外部中断请求按键,用中断法判断按键,当所选按键被按下时,发出中断请求,引起外部中断。

实验中,设计选取单片机的INT1引脚和纽扣式按钮相连,设置按键作为外部中断请求按钮,下降沿触发。

为验证中断的发生,采用二位数码管,通过按键次数的改变来验证中断的产生。

设计说明:运行电路后,LED数码管显示“15”,通过按按钮来中断,使显示的数字逐渐减一;当数码管显示为“00”时,再进行一次中断,数字“00”闪烁3遍后,变为数字“15”,如此循环下去。

画LED数码管显示中断验证电路图:a、打开Proteus软件,在软件界面左边点击界面中的按钮,在弹出的界面中输入相应的器件名,得到搜索结果,并选择所需要的器件,例如要选择单片机AT89C51如图1所示:图1 器件搜索再点击右下角的按钮,就回到了画图界面,这时在工作界面中单击两次就可安放所选的器件,如图2所示:图2 放置器件b、按上面步骤将所需的器件都安放在画图界面上,调整好位置后,按电路要求将相应的器件连接起来,如有参数设置需要,可直接双击器件,再在弹出的设置界面中修改参数。

例如:若要修改电阻参数,可直接双击电阻,在弹出的界面中设置参数,完成后点击按钮即可,如图3所示。

图3 设置参数所需用到的元器件分别有7SEG-MPX2-CC-BLUE、A T89C52、BUTTON、CAP、CAP-ELEC、CRYSTAL、RES、RES-PACK。

最后,得到的电路图如图4所示,其中单片机的P0口接2个数码管的段选码并每一位都接一个上拉电阻,P2口接位选码,而P3口的第3位I/O口接一个纽扣式按钮。

图4 验证中断电路图c、之后点击按钮,将电路图保存在自己想要保存的位置。

建Keil项目、加程序和设置输出HEX文件:a、建Keil项目:启动Keil仿真软件后,点击Project菜单新建项目,新建项目后,选择仿真单片机型号并新建文件和添加文件到项目。

b、加程序:编写如下程序实现上述功能:#include <reg51.h>#define uchar unsigned char#define uint unsigned intuchar i=0,j=0;uchar codetab[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};void delay(uint a){uint x,y;for(x=a;x>0;x--)for(y=110;y>0;y--);}void Int() interrupt 2{ uchar p;delay(10);if(i==0){if(j!=0){i=10;j=0;}else{ for(p=0;p<3;p++){ P2=0xfc;P0=tab[0];delay(300) ;P2=0xff;delay(200) ;}i=6;j=1;} } i--; }main(){ EA=1;EX1=1;IT1=1;i=5;j=1;while(1){ P2=0xfd;P0=tab[i];delay(10) ;P2=0xfe;P0=tab[j];delay(10) ;} }c、设置输出HEX文件:右击target文件夹,点选options for target,然后会出现如下图5对话框,选中要生成的HEX文件后点击确定并运行程序,即可生成HEX文件.图5 生成HEX文件五、实验结果及分析:在proteus仿真的验证中断的LED数码管显示电路图中,可观察到每进行一次中断,数码管显示的数字递减,如下图6所示:图6 中断验证电路图六、实验心得:1、中断处理过程分为四个阶段:中断请求,中断响应,中断处理、中断返回。

2、中断请求、中断响应过程由硬件完成。

中断服务程序应根据需要进行编写,程序中要注意保护现场和恢复现场。

相关主题