实验3 外部中断实验报告

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

实验三定时中断实验

一、实验目的

1、掌握51单片机外部中断的应用。

2、掌握中断函数的写法。

3、掌握定时器的定时方法。

4、掌握LED数码管的显示。

二、实验内容

1、用外部中断0测量负跳变信号的累计数,同时在LED数码管上显示出来。

2、用外部中断改变流水灯的方式。

3、用定时器T1的方式2控制两个LED以不同周期闪烁。

使用定时器T1的方式2来控制P0、0、P0、1引脚的两个LED分别以1s与2s的周期闪烁。

三、实验仿真硬件图

在Proteus软件中建立如下图所示仿真模型并保存。

1、用外部中断0测量负跳变信号的累计数,同时在LED数码管上显示出来(用中断方式做计数器)。

2、用外部中断改变流水灯的方式。

中断前:开始时,P0、0~P0、7的8个灯依次点亮。

外部中断0:P0、0~P0、7的左右4个灯闪烁亮8次

外部中断1: P0、0~P0、7的8个灯间隔闪烁8次

改变中断优先级与保护现场,观察运行结果

四、编程提示

外部中断0请求

______

INT,由P3、2管脚输入,通过IT0位来决定就是低电平有效还就是下

降沿有效。一旦输入信号有效,即向CPU申请中断,并建立IE0中断标志。

以外部中断0为例,开放中断源采用以下语句:

EA=1; //开放中断总允许位

EX0=1; //开放外部中断0允许位

IT0=1; //置外部中断为边沿(下边沿)触发方式中断函数结构如下:

void int_0() interrupt 0 // interrupt 0表示该函数为中断类型号0的中断函数{

}

同级自然优先级:

外部中断0→定时器T0中断→外部中断1→定时器T1中断→串行口中断。

中断优先级别的设定:

实验二要求:

初始状态为P0、0~P0、7的8个LED显示灯依次循环点亮;外部中断0服务程序为8个LED灯,左4个,右4个闪烁8次,外部中断1服务程序8个LED灯,间隔闪烁8次。

⑴设定外部中断0为高优先级,先执行外部1中断,过程中用外部0中断来将其中断,反之不行。注意保护现场。

⑵设定外部中断1为高优先级,先执行外部0中断,过程中用外部1中断来将其中断,反之不行。注意保护现场。

实验三(调试下列程序,在错误行后面注明错误及改正方法):

#include

#define uchar unsigned char;

sbit D0=P1^0;

sbit D1=P1^1;

uchar a,b;

void main()

{

EA=1;

ET1=1;

TMOD=0x20;

TL1=6;

TR0=1;

a=0;

b=0;

while(1)

;

}

void t1() interrupt 1 {

a++;

b++;

if(a=1000)

{

D0=~D0

a=0;

}

if(b=4000)

{

D1=~D1;

b=0;

}

写出源程序,并注释

实验报告格式

实验三定时中断实验

学院: 专业: 年级: 实验时间:

姓名: 学号: 指导教师:

一、实验目的

1、掌握51单片机外部中断的应用。

2、掌握中断函数的写法。

3、掌握中断优先级别的使用。

4、掌握LED数码管的显示。

二、实验内容

1、用外部中断0测量负跳变信号的累计数,同时在LED数码管上显示出来。

2、用外部中断改变流水灯的方式。

三、电路图(贴Protues仿真图)

四、程序与注释

1)程序1

2)程序2

3)程序3

六、简答题

1)电平触发与下降沿触发在程序中如何设置?

2)如何设置INT1为优先级?何谓优先?

3)中断服务函数的interrupt后面的数字表示什么?

七、体会

相关文档
最新文档