51单片机中断的使用及优先级设置
51单片机有两个外部中断,两个定时器/计数器,两个外部中断分别是int0,int1。定时器/计数器分别是t0,t1,还有一个串口中断TI/RI,加起来有五个中断。它们在硬件上的排列顺序是INT0,T0,INT1,T1,TI/RI,这5个中断源的中断顺序号依次就是interrupt 后面的0,1,2,3,4。其中定时器可以选择工作方式,因为我们使用定时器的方式不一而足,有的程序会用来计时,有的程序用来计数,根据程序要求设置工作方式各取所需。
下图显示了51单片机中的4个寄存器,分别是TCON,SCON,IE,IP,还有我们常用的定时器模式控制寄存器TMOD。

一、TMOD:定时器/计数器工作方式控制寄存器
TMOD中存放两个定时器/计数器,每个定时器都可以设置它们的工作方式,如定时器0的工作方式1设置就是TMOD=0x01,定时器1设置方法同定时器0,不过设置位数变到前4位TMOD=0x10。如果两个都用方式1的话就是TMOD=0x11了吧。

二、IP:优先级寄存器
IP寄存器是控制中断优先级的寄存器,在51单片机中可以设置中断为高优先级或低优先级,以达到嵌套的目的。想要嵌套中断,必须使用到我们前面说过一嘴的IP寄存器,否则int0的优先级只是查询优先级最高,而不是中断优先级最高。IP寄存器结构如下图,通过设置IP寄存器可以设定由哪个中断最先运行,51单片机可以设置二级中断服务嵌套。通过IP寄存器结构我们可以明显看到下面5个中断所处的位置,因此可以轻易的设置想要的中断优先级,例如设置PX0,即外部中断int0优先级最高,就是IP=0x01;或者PX0=1;效果相同。举一反三,其他中断也是如此设置。

三、protues仿真
了解了中断和定时器的基本使用方式就可以画仿真图以及写程序了,先画一个简单的仿真图。

四、编写代码
图中52单片机有两个按键和两个LED灯,我们设置他们的功能。
1.使用定时器定时2秒,两秒后点亮两个LED灯,点亮LED灯后重置定时器,如果LED灯被熄灭后间隔两秒又会被重新点亮。
2.按键1按下后,通过中断int0把两个LED熄灭一段时间,int0优先级设置为最高(优先级必须设置,设置后才能嵌套,否则即使它是int0,也不能嵌套进int1中)。
3.按键2被按下后,LED1闪烁5次。
4.最后效果是,当定时器点亮两个LED灯,我们按下按键2,LED1闪烁。此时,按下按键1,LED1和LED2全部熄灭并保持一段时间后,LED1继续未完成的闪烁,直至完成后两个LED灯依旧点亮。通过简单的功能实现,我们可以充分的了解外部中断和定时器的具体应用。
代码如下:

#include"reg52.h"
#define uchar unsigned char  //定义字符类型
#define uint unsigned int
sbit led=P2^0;   //定义IO口P2.0为led
sbit led1=P2^1;
uchar flag; //定义flag类型void delay(){  //延时程序
int i,j;for(i=500;i>0;i--)for(j=100;j>0;j--);
}
void init()//初始化,即打开各中断开关
{TMOD=0x01;TH0=(65536-50000)/256; //定时器0装初值TL0=(65536-50000)%256; //同上IT0=1;//外部中断0为跳变沿触发方式IT1=1;//外部中断1为跳变沿触发方式EA=1;//开总中断EX0=1;//打开外部中断0EX1=1;//打开外部中断1ET0=1;//打开定时器0中断开关TR0=1;//打开定时器0运行开关IP=0x01;//设置int0优先级为高,与PX0=1;等效
}
/*按键1*/
void int0() interrupt 0 using 0//外部中断0的执行程序。
{                              //interrupt 0指外部中断0 using 0指第0组寄存器                       led=0;  //熄灭LED灯led1=0;delay();//延时delay();delay();
}
void t0() interrupt 1 using 1 //定时器
{   TH0=(65536-50000)/256; //定时器0装初值TL0=(65536-50000)%256; //同上flag++; //记录定时器经过的时间if(flag==40){   //定时2秒后执行,flag=40时约两秒led=1;   //点亮LED灯led1=1;flag=0; //重置定时,达到每两秒点亮一次的目的}
}
/*按键2*/
void int1() interrupt 2 using 2//外部中断1的执行程序。
{unsigned char i;   for(i=0;i<10;i++)//实现led闪烁五次。{led=~led;delay();}
}
void main()//主函数
{init();      //初始化led=0;   //指定LED灯开始的时候是熄灭状态led1=0;while(1);
}

proteus仿真加keil4代码文件下载链接:
https://download.csdn.net/download/CenJuLong/18281185

`

51单片机外部中断的使用以及优先级设置相关推荐

  1. 51单片机外部中断的C51编程

    51单片机外部中断的C51编程 相关知识: 1.51单片机的5大中断源:串行口中断.定时中断1.外部中断1.定时中断0.外部中断0: 2.中断源的编号: 串行口中断为4.定时中断1为3.外部中断1为2 ...

  2. 51单片机 | 外部中断实验

    文章目录 一.外部中断介绍 二.外部中断配置 三.硬件设计 四.软件设计 五.实验现象    51 单片机外部中断有 2 个,外部中断 0 和外部中断 1,它们的使用方法是一样的,所以只要学会一个即可 ...

  3. c语言51单片机外部中断,51单片机外部中断0实例详解

    今天就以51单片机的外部中断0为例,来简单讲解一下单片机中断的用法. 1 51单片机的中断源 51单片机共有5个中断源,分别为:外部中断0 定时器0中断 外部中断1 定时器1中断 串口中断 每一个中断 ...

  4. 51单片机外部中断实验 设置中断优先级寄存器,当有外部中断0请求中断时,中断程序执行发光二极管程序,在此过程中,外部中断1也有中断请求,外部中断0的中断程序将被中断去执行外部中断1的中断程序(数码管

    设置中断优先级寄存器,当有外部中断0请求中断时,中断程序执行发光二极管程序,在此过程中,外部中断1也有中断请求,外部中断0的中断程序将被中断去执行外部中断1的中断程序(数码管加1显示程序). #inc ...

  5. 51单片机按键控制数码管0~9_51单片机外部中断

    前面为大家介绍的点亮LED灯.数码管.按键只用到了51单片机的IO资源,我们要是仅仅用单片机点灯.操作数码管,那可真是大才小用了.这些都只是51单片机资源的冰山一角,51单片机还有好多的功能,我后面将 ...

  6. 51单片机之中断系统

    51单片机之中断系统 中断系统 四种中断类型: 外部中断: 定时器/计数器T0.T1中断: 串行口中断: 定时器/计数器T2中断: 中断入口: 与中断相关的特殊功能寄存器: 中断优先级: 中断响应时间 ...

  7. STC15单片机——外部中断

    STC15单片机拥有5路外部中断,分别为外部中断0.1.2.3.4.本文章将其分为外部中断0.1和外部中断2.3.4介绍,分别介绍其相关的寄存器以及注意事项. 由于STC15单片机外部中断的使用于传统 ...

  8. 51单片机学习----中断

    什么是中断? 当CPU正在处理某件事的时候,突然有一个紧急的事情发生了,要求CPU暂停当前的工作,转而去处理这个紧急的事情,处理完之后,再回到原理被中断的地方,继续原来的工作,这样的过程就叫中断.比如 ...

  9. STM32单片机外部中断配置讲解

    2019独角兽企业重金招聘Python工程师标准>>> 单片机外部中断简介 所谓外部中断,就是通过外部信号所引起的中断,如单片机引脚上的电平变化(高电平.低电平).边沿变化(上升沿. ...

最新文章

  1. [转载]MongoDB开发学习 经典入门
  2. java web开发学习手册_【Java手册】Java开发手册_华山版(2019.06)
  3. Centos下通过wget方式下载jdk8
  4. php mysql 双条件排序,PHP-MySQL联合查询,按2个变量排序
  5. VIM使用小技巧-重新载入文件
  6. (95)Vivado时序约束TCL命令-all
  7. Ubuntu的一些命令
  8. 删除所有的.svn 文件
  9. redis的数据持久化方案
  10. ELK logstash基本配置
  11. 【MySQL】新闻发布系统数据库设计
  12. oracle年龄计算函数
  13. 代理服务器(Proxy)
  14. 柑曼怡推出非凡特酿系列;舒肤佳健康传中国“手护”新年期待助力2022年冬奥会 | 知消...
  15. 与计算机相关的格言,与机器相关的经典名言
  16. 台式计算机电源线 规格,台式电脑电源线怎么接
  17. 年终敬酒万能语句(领导篇)
  18. unity找不到报错界面
  19. UE风格化Day16-风格化云雾材质/风格化的探讨
  20. 黑苹果cpu支持列表_单卡gpu直通,黑苹果,amd_cpu教程

热门文章

  1. antd 表单 校验、取值、重置
  2. 推荐系统中特征交叉模型之——DeepWide/DeepFM/NFM
  3. partial部分类
  4. 1157 Anniversary
  5. 编程之美 - 创作后记(部分)
  6. AIDL使用以及原理分析
  7. 零窗口探测怎么抓包_易语言防止助手探测窗口的代码
  8. 如何把 Excel 数据按分类拆分为多个
  9. Excel拆分合并数据,使用vb编程,效率提高50倍
  10. linux容器内核配置,如何在Linux内核Centos下使用Sentinel LDK保护Docker容器实例