中断嵌套
来源:互联网 发布:省市区json数据 2016 编辑:程序博客网 时间:2024/05/15 06:41
问题描述:
STC89C52单片机的P1口高4位连接发光二极管,P1口低4位连接开关,P3口的P3.2连接按键开关K2,P3.3连接按键开关K1,接口电路如图5-4所示,请编程实现按键中断以及中断嵌套(外部中断1为高优先级,外部中断0为低优先级),按下按键K1产生外部中断1中断请求信号,中断响应后读取键值去驱动发光二极管点亮,按下按键K2产生外部中断0的中断请求信号,中断响应后驱动发光二极管循环点亮。请编写驱动程序。建议:编程时,为了更好观察二极管亮灭状态,加入适当的延时程序。调试运行时,先按按键K2,执行外部中断0的低级中断;再按按键K1,执行外部中断1的高级中断,观察中断嵌套。
相关电路图:
效果:当按下K2键,发光二极管循环点亮,当按下K1键一次,发一次中断申请,读取P1口低四位键值去驱动相应的发光二极管的亮灭,K2触发低级中断,K1触发高级中断。
C语言代码:
#include <reg52.h>#include <intrins.h>sbit K1=P3^3;sbit K2=P3^2;void delay(int time){ int i; while(--time!=0) { for(i=0;i<125;i++); }}//外部中断0void exint() interrupt 0{ unsigned char p1_value; unsigned int i ,j; //循环的嵌套,实现循环点亮二极管 for(i=0;i<255;i++) { p1_value=0X08; for(j=0;j<4;j++) { p1_value=p1_value<<1; P1=p1_value; delay(1000); } }}//外部中断1void exint1() interrupt 2{ unsigned char p1_value=0; P1=0XFF; p1_value=P1&0X0F; p1_value=p1_value<<4; //读取低四位的键值 P1=p1_value; delay(800);}void main(){ //应题目要求设置中断的开关和优先级 SP=0X50; EA=1; EX1=1; EX0=1; IT1=1; IT0=1; PX0=0; PX1=1; while(1) { ; }}
最终仿真效果图:
阅读全文
0 0
- 中断嵌套
- linux中断--中断嵌套&中断请求丢失
- linux中断--中断嵌套&中断请求丢失
- RTOS 与嵌套中断
- 谈谈ARM中断嵌套
- STM32中断嵌套
- RTOS 与嵌套中断
- Linux内核中断嵌套
- SylixOS 中断嵌套机制
- 中断的嵌套
- MSP430的中断优先级及中断嵌套
- linux中断嵌套以及中断丢失
- msp430的中断优先级和中断嵌套
- ARM中断原理, 中断嵌套的误解
- linux中断嵌套以及中断丢失
- linux中断嵌套以及中断丢失
- 中断子系统6_中断嵌套处理
- linux中断嵌套以及中断丢失
- supervisor安装与使用入门
- CSS3连续动画实现的思路【演示DEMO】
- 频繁项集实际应用之分类到分类的交叉推荐
- 毕向东讲解(摘)—11.多线程线程间通信(示例代码)
- linux因为系统损坏无法进入系统解决
- 中断嵌套
- Spring注解标签 @Autowired @Qualifier
- html中遇到的坑
- Java反射机制可恶问题NoSuchFieldException
- oracle之 Oracle LOB 详解
- linux命令--grep详解
- JSP中的注释注意事项
- bzoj1048 [HAOI2007]分割矩阵
- padding oracle attack相关之CBC模式