实验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 <reg51.h>
#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后面的数字表示什么?
七、体会。

相关文档
最新文档