1.外部中断原理图
2 外部中断配置
固定格式如下:
//配置外部中断功能
void exti0() interrupt 0 //外部中断 0 中断函数 { //执行所需的功能 } //配置外部中断原理 void exti0_init(void) { IT0=1;//跳变沿触发方式(下降沿) EX0=1;//打开 INT0 的中断允许 EA=1;//打开总中断 }
注:在中断函数中 exti0 是函数名,可自定义,但必须符合 C 语言标识符定义规 则,interrupt 是一个关键字,表示 51 单片机中断。后面的“0”是中断号,外 部中断 0 中断号为 0,如果是外部中断 1,则中断号为 2,这个可参考中断章节 的内容。
3 硬件设计
本实验使用到硬件资源如下:
(1)独立按键模块(K3)
(2)LED 模块(D1)
LED 模块和独立按键模块电路在前面章节已介绍过,这里就不多说。原理图 中 K3 键是连接在单片机 P3.2 口(外部中断 0),K4 按键是连接在 P3.3 口(外 部中断 1)
4 软件设计
#include "reg52.h" //外部中断0,扫描外部中断P3.2,有就执行 typedef unsigned char u8; typedef unsigned int u16; sbit LED1=P2^0; sbit KEY3=P3^2; void delay_10us(u16 ten_us) { while(ten_us--); } //配置外部中断---配置原理 void exti0_init(void) { EA=1;//打开总中断 EX0=1;//打开 INT0 的中断允许 IT0=1;//跳变沿触发方式(下降沿) } //配置功能 void exti0() interrupt 0 { delay_10us(1000); if(KEY3==0) LED1=!LED1; } void main() { exti0_init(); while(1) { } }
5.实验现象:
使用 USB 线将开发板和电脑连接成功后(电脑能识别开发板上 CH340 串口),
把编译后产生的.hex 文件烧入到芯片内,实现现象如下:当按下 K3 键,D1 指
示灯亮,再次按下 K3 键,D1 指示灯灭,如此循环。
如果下载的是外部中断 1 实验程序,实验现象如下:当按下 K4 键,D1 指示
灯亮,再次按下 K4 键,D1 指示灯灭,如此循环
注意:由于红外接收传感器与 K3 共用 P3.2 口,因此在做外部中断 0 实验时,
将红外接收传感器从开发板取下,防止干扰。