您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页单片机外部中断实验报告

单片机外部中断实验报告

来源:尚车旅游网


实验三 外部中断

班级:学号:姓名:

教师:

实验报告

一、实验目的

1、掌握单片机外部中断的原理及过程。 2、掌握单片机外部中断程序的设计方法。 3、掌握单片机外部中断时中断方式的选择方法。

、实验内容

如下图所示, P3.2 设为输入, P2 设为输出位,连有 8 个发光二极管 D1~D8 。每当发 生外

部中断时 ,发光二极管以向下流水灯的方式点亮。分别选择边沿触发外部中断 放是和电平触发外部中断方式两种。

三、编程提示

1、 P3 口是 8 位准双向口,具有双重功能:

第一功能和 P1 口一样,作为输入输出口,也有字节操作和位操作两种方式,每一位可 分别定义为输入或输出;第二功能定义如下 :

P3.0 RXD 串行输入口 P3.1

TXD 串行输出口

P3.2 P3.3 P3.4 P3.5 P3.6

INT0 外部中断 0 请求输入线 INT1 外部中断 1 请求输入线

T0 定时器 /计数器 T0 外部计数器脉冲输入线 T1 定时器 /计数器 T1 外部计数器脉冲输入线 WR 外部数据存贮器写脉冲输出线 RD 外部数据存贮器读脉冲输出线

P3.7

2、各中断服务程序入口地址:

外部中断 0

定时器 /计数器 T1 溢出中断 外部中断 1 定时器 /计数器 串行口中断

03H 0BH 13H 1BH 23H

3、外部中断的产生条件

中断允许寄存器 IE :

EA ES ET1 EX1 ET0 EX0 (1)外部中断源允许中断(中断 0: EX0=1 ;中断 1:EX1=1 )。 (2)CPU 开中断( EA=1 )。

(3)外部中断方式 CPU 发出中断申请。 4、外部中断方式的选择 控制 TCON : TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 IT0 是选择文字则外部中断 0 请求( INT0 )边沿触发方式或电平触发方式的控制位。前一方 式 IT0=1 ,后一方式 IT0=0 。

IT1 是选择外部中断 1 请求( INT1 )为边沿触发方式或电平触发方式的控制位。前一方式 IT1=1 ,后一方式 IT1=0 。 当 8031 复位后, TCON 被清 0。

5、外部中断电路 负脉冲作为中断请求信号时, 为了保证中断的唯一性, 必须加上消除开关抖动的

电路或 者去抖动延时程序, 保证每次只产生单脉冲, 构成边沿触发方式外部中断电路。 边沿

触发的

最大优点在于不会丢失中断。只要中断请求负跳变的宽度大于 1 个机器周期,单片机就能 够采样到中断请求信号, 单片机将采样到的信号琐存到中断请求标志寄存器中, 硬件自动置 IE0 为 1,即使单片机暂时不响应,这个标志也不会丢失,只有在外部中断响应之后,硬件 才将 IE0 清除。

低电平触发的外部中断与边沿触发的外部中断, 其中断过程基本相似。 唯一不同在于中 断请求信号的保持与撤消。在边沿触发中,单片机 TCON 寄存器专门有一位作它的请求标 志,当负跳变后,单片机将中断请求标志

IE1(INT1 中断为 IE1,INT0 中断为 IE0 )自动置

IE1 。但是对于电平触发方式,

1,由 IE1 请求中断,在响应中断时,又由单片机自动清除

单片机中没有专门的请求标志, 响应中断时也不能自动清除请求信号。 在实际应用中, 常常 是在单片机外增加一个触发器作为中断请求标志, 当中断请求发生时置触发器为 0,使 INT1 为低电平,在单片机响应这个中断后,利用软件(占用另一根 I/O 线,例如 P3.1)发出复位 脉冲,使该触发器置 1,撤消中断请求。 这种电路使请求中断的低电平能够保持足够的时间, 一直到中断发生为止, 因而不会丢失中断请求。 低电平的时间又不致太长, 只要进入中断服 务程序,在返回之前,就撤消请求信号,因而也不会产生多余的中断动作。

四、实验器材

仿真器、目标系统实验板、直流电源

五、实验步骤

1、边沿触发式外部中断 0 实验

(1) P3.2 设为边沿触发方式,连接外部复位开关,编程使每次中断流水灯向下移 位一

次,中断程序中不延时去抖动,观察结果。

( 2)P3.2 设为边沿触发方式,连接外部复位开关,编程使每次中断流水灯向下移 位一

次,中断程序中采用延时去抖动,观察结果。

(3)P3.3设为边沿触发方式,连接外部 RS 触发器硬件去抖动的开关,编程使每次 中断流

水灯向下移位一次,中断程序中不延时去抖动,观察结果。 2、电平触发式外部中断实验

P3.3 设为电平触发方式,连接外部 RS 触发器硬件去抖动的开关,编程使每次 中断流水灯向下移位一次,中断程序中不延时去抖动,观察结果。

六、 C源程序清单

#include #define uchar unsigned char uchar i=0;

uchar numi[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; void delay(uchar k ); void main()

{

EA=1; EX0=1; IT0=1; while(1)

{

if(EX0==0)

{

//delay(100); IE0=0; EX0=1;

}

}

void int0() interrupt 0

{

EX0=0; P2=~numi[i]; i++; if(i>8) {

i=0;

}

}

void delay(uchar k )

{

uchar x,y,z;

for(x=k;x>0;x--) for(y=20;y>0;y--) for(z=250;z>0;z--);

七、总结

1、边沿触发和电平触发两种方式中断响应的原理与区别

边沿触发: 当从高至低电平或从低至高电平转变时, 触发产生;}

电平保持多久都只产生

次。所以,边沿触发适合与以负脉冲形式输入的外部中断请求。

电平触发: 那么在电平时间内中断一直有效; 因此如果在电平没有恢复之前中断程序就 已经执行完成从而退出, 那么会在退出后又再次进入中断; 但只要中断没有退出是不会重复 触发的。 所以,电平触发方式适合于外部中断以电平输入而且中断服务能清除外部中断源的 情况。 2、实验现象

1、(1)实验现象是,按键一次就会跳过几个灯,也就是说按键一次并不是向后移一位 而是好几位,这是因为按键没有去抖动,所以会进入多次中断导致。

1、(2)按键一次,灯就向下移一位,这是通过软件去抖动之后,按键按下后延时一段 时间,再来判断中断有没有打开,所以按键一次只进入一次中断。

1、(3)按键一次,灯就向下移一位,虽然没有用按键去抖动,但是这个键在硬件上已 经去抖,所以按键一次也是只进入一次中断程序,所以会有这种现象。

2、(1)由于是电平触发,所以在按下按键的时候,会有好多灯一起亮,比如低电平, 在低电平这段时间里, 会不断地请求中断, 所以就会进入很多次中断, 在加上请求中断的速 度快和 LED灯有一定的的余晖,所以肉眼看起来就好像灯全是亮的。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务