51单片机 外部中断实验
2015-04-06 17:34
176 查看
51单片机一共有两个外部中断源。
IE0的置位与否与IT0有关,当IT0=1时,下降沿触发也就是说当INT0由高到低时IE0将被硬件置1, 执行完中断,遇到RETI自动清0,但不影响INT0的状态。当IT0=0时,当CPU检测到连续两个周期的INT0低电平时IE0置1, 中断结束时遇到RETI自动将IE0清0,之后如果INT0仍然为低电平,且长度超过两个机器周期, 那么将重新将IE0置1申请中断。
/** * 文件名称:外部中断实验 * 实验目的:1.掌握51单片机外部中断相关寄存器的配置方法和触发方式 * 程序说明:1.使用程序前,将跳线J2调整为BTN模式(独立按键) * 将跳线J13调整为IO模式 * 2.按下P3.2-INT0引脚对应的按键S5,LED1状态反转 * 3.按下P3.3-INT1引脚对应的按键S4, LED2状态反转 */ #include <reg52.h> sbit LED1 = P0^0; sbit LED2 = P0^1; void configExtInt0(); //外部中断0对应引脚P3^2 void configExtInt1(); //外部中断1对应引脚P3^3 void main() { configExtInt0(); configExtInt1(); while (1); } void configExtInt0() { IT0 = 1; //选择为下降沿触发方式(为1代表下降沿触发,为0代表低电平触发) EA = 1; //使能总中断 EX0 = 1; //使能外部中断0 } void configExtInt1() { IT1 = 1; //选择为下降沿触发方式 EA = 1; //使能总中断 EX1 = 1; //使能外部中断1 } //外部中断0中断服务函数 void extInt0ISR() interrupt 0 { P2 = ((P2 & 0x1F) | 0x80); LED1 = ~LED1; P2 &= 0x1F; } //外部中断1中断服务函数 void extInt1ISR() interrupt 2 { P2 = ((P2 & 0x1F) | 0x80); LED2 = ~LED2; P2 &= 0x1F; }
相关文章推荐
- Linux下的51单片机简单的外部中断实验
- S3C2440中断体系结构:外部中断实验
- 关于51单片机“外部中断触发方式”的经验总结
- 《划时代-51单片机C语言全新教程》-第八章 外部中断 概览
- 嵌入式成长轨迹45【Zigbee项目】【CC2430基础实验】【外部中断】
- stm32外部中断实验
- arm11 s3c6410 外部中断实验代码
- 外部中断实验
- 实验:PIO外部中断
- 一起学mini2440裸机开发(十)--mini2440外部中断实验
- 外部中断与定时器中断实验
- stm32外部中断实验
- mini2440外部irq中断实验
- 关于51单片机外部中断的触发方式
- 51单片机外部中断实验
- 51单片机外部中断的C51编程
- 外部中断实验-M3
- CC2430基础实验——外部中断
- 单片机实验期末考试-使用两个外部中断控制8只LED显示的电路
- 关于51单片机“外部中断触发方式”的经验总结