51单片机(四)——中断

发布者:MindfulCreator最新更新时间:2018-05-01 来源: eefocus关键字:51单片机  中断 手机看文章 扫描二维码
随时随地手机看文章

一、中断

1.1 中断概述

51单片机有5个中断源。

所谓中断,就是该事件可以打破正在执行的程序,从而进入新的任务中。等处理该事件的任务完成之后,再重新执行刚才被打断的任务。

中断优先级低的任务可以被中断优先级更高的任务打断。平时没有中断时执行的程序优先级最低,可以被任何中断打断。

中断系统结构示意图: 
这里写图片描述 
该芯片是stc90c51,因此多了一个外部中断和定时器2的中断。

  • 一般情况下,51单片机有2个定时器中断,2个外部中断和一个串口中断。

  • 每一个中断,都有相应的一个中断使能位。只有中断使能位为1,系统才能响应该中断。

  • 每一个中断,都有两个相应的优先级控制位,可以设置0~3的中断优先级。0为最低,3为最高。

  • 两个优先级相同的中断同时发生时,根据上图的查询顺序来响应。

  • 同优先级的中断不能被另一个中断打断。

  • 中断程序的起始地址存在中断向量表中。

1.2 中断触发方式

当定时器寄存器THx/TLx(x = 0,1)溢出时,溢出标志位TFx(x = 0,1)会被置位,定时器中断发生。

当串行口接收中断请求标志位RI和串行口1发送中断请求标志位TI中的任何一个被置为1后,串行口中断都会产生。

外部中断既可低电平触发,也下降沿触发,采用何种触发方式由TCON寄存器里的控制位决定。

1.3 相关寄存器

这里写图片描述

IE里的EA位是所有中断的总开关,其他位都是针对每一个中断的使能开关。

IP和IPH控制每一个中断的优先级。

TCON里控制外部中断的触发方式,以及定时器溢出的标志位。

SCON里有串口中断的标志位。

二、编程示例

sdcc下初始化中断

#include <8051.h>


/* sfr IPH can not access by bit */

#define PX0H 0x01

#define PT0H 0x02

#define PX1H 0x04

#define PT1H 0x08

#define PSH  0x10


#ifdef USB_ISR 

void isr_init()

{

    EA = 1;


    /* ir 0 int0 */

#ifdef ISR_INT0

    EX0 = 1;


    /* trigger */

#ifdef ISR_INT0_EDGE

    IT0 = 1;

#endif


#ifdef ISR_INT0_LEVER

    IT0 = 0;

#endif

    /* priority */

#if (ISR_INT0_PR == 1)||(ISR_INT0_PR == 3)

    PX0 = 1;

#endif


#if (ISR_INT0_PR == 2)||(ISR_INT0_PR == 3)

    IPH = IPH | PX0H;

#endif  

#endif


    /* ir 1 timer0 */

#ifdef ISR_TIMER0

    ET0 = 1;


    /* priority */

#if (ISR_TIMER0_PR == 1)||(ISR_TIMER0_PR == 3)

    PT0 = 1;

#endif


#if (ISR_TIMER0_PR == 2)||(ISR_TIMER0_PR == 3)

    IPH = IPH | PT0H;

#endif

#endif  


    /* ir 2 int1 */

#ifdef ISR_INT1

    EX1 = 1;


    /* trigger */ 

#ifdef ISR_INT1_EDGE

    IT1 = 1;

#endif


#ifdef ISR_INT1_LEVER

    IT1 = 0;

#endif


    /* priority */

#if (ISR_INT1_PR == 1)||(ISR_INT1_PR == 3)

    PX1 = 1;

#endif


#if (ISR_INT1_PR == 2)||(ISR_INT1_PR == 3)

    IPH = IPH | PX1H;

#endif  

#endif


    /* ir 3 timer1 */

#ifdef ISR_TIMER1

    ET1 = 1;


    /* priority */

#if (ISR_TIMER1_PR == 1)||(ISR_TIMER1_PR == 3)

    PT1 = 1;

#endif


#if (ISR_TIMER1_PR == 2)||(ISR_TIMER1_PR == 3)

    IPH = IPH | PT1H;

#endif

#endif  



    /* ir 4 uart */

#ifdef ISR_UART

    ES1 = 1;


    /* priority */

#if (ISR_UART_PR == 1)||(ISR_UART_PR == 3)

    PS = 1;

#endif


#if (ISR_UART_PR == 2)||(ISR_UART_PR == 3)

    IPH = IPH | PSH;

#endif

#endif

}

#endif


关键字:51单片机  中断 引用地址:51单片机(四)——中断

上一篇:单片机最小系统详解
下一篇:51单片机(三)——定时器/计数器

推荐阅读最新更新时间:2024-03-16 16:01

STM32CubeMX系列教程2:外部中断(EXIT)
这一章我们在前一章GPIO的工程修改。复制GPIO的工程,修改文件夹名。点击STM32F746I.ioc打开STM32cubeMX的工程文件重新配置。PA0管脚重新配置为GPIO_EXIT0模式。 WAKEUP按键已经外部下拉,按下是PA0为高电平。在GPIO配置中配置PA0为上升沿触发。内部既不上拉也不下拉,添加用户标签WAKEUP。 在NVIC(嵌套向量中断控制器)中,勾选EXIT Line0 interrupt使能PA0中断。右边两个选项设置抢占优先级和响应优先级。此处我们选择默认的,不修改。 在这里简单介绍一下NVIC(嵌套向量中断控制器)。NVIC就是控制中断响应的。主要由三个参数,一个是中断使能,
[单片机]
STM32CubeMX系列教程2:外部<font color='red'>中断</font>(EXIT)
基于51单片机的GPS公交车自动报站系统
一.硬件方案 本设计主要是制作出一款基于51单片机的GPS自动报站公交车,根据设计需求,硬件部分应该具有的功能有,GPS定位、语音播报、液晶显示、按键操作以及相应的指示灯提示,所以本次设计采用了STC89C58RC单片机作为主控芯片、GPS模块采用了VK2828U7G5LF、液晶显示部分采用了LCD12864液晶、音频播放部分采用了Miniplay模块,以及按键电路、指示灯提示电路还增加了时钟显示电路。整体硬件框图如图: 二.设计功能 (1)本设计播报主要有两种方式,其一是当到达播报站点时,司机按下对应按键进行播报;另一种是全自动语音播报方式,到达播报站点时,设计会自动进行播报。 (2)自带时钟显示,并且设有GPS自动校时
[单片机]
基于<font color='red'>51单片机</font>的GPS公交车自动报站系统
如何用51单片机来产生PWM波
89C51芯片没有自带PWM发生器,如果要用51来产生PWM波就必须要用软件编程的方法来模拟。方法大概可以分为软件延时和定时器产生两种方法。下面将逐一介绍。 1 软件延时法 利用软件延时函数,控制电平持续的时间,达到模拟pwm的效果。 程序如下: #include sbit pwm=P1^0; main() while(1) pwm=1; delayus(60);//置高电平后延时60us,占空比60% pwm=0; delayus(40); void delayus(uint x) while(x--); proteus软件仿真结果如下: 可见,用这种延时函数的方法就能简单地模拟出pwm输出。但是这种方法的缺点也相当明显
[单片机]
如何用<font color='red'>51单片机</font>来产生PWM波
51单片机入门——Proteus 8 Professional的使用
1.什么是Proteus 8 Professional ? Proteus是Lab Center Electronics公司推出的一个EDA工具软件。 Proteus具有原理布图、PCB自动或人工布线、SPICE电路仿真、互动电路仿真、仿真处理器及其外围电路等特点功能。 Proteus 8.9 安装包,内附安装教程 链接:https://pan.baidu.com/s/19YPyUeNt5bTVd7ch_15tig 提取码:qcyx 2.Proteus 8 Professional的使用 双击图标后进入主页面:如图: 首先我们要建立一个工程文件,点击左上角的图标或在开始设计中点击新建工程,如图: 选择合适的保
[单片机]
<font color='red'>51单片机</font>入门——Proteus 8 Professional的使用
8051单片机教程第五课:延时程序分析
上一次课中,我们已经知道,程序中的符号R7、R6是代表了一个个的RAM单元,是用来放一些数据的,下面我们再来看一下其它符号的含义。 DELAY:MOVR7,#250;(6) D1:MOVR6,#250;(7) D2:DJNZR6,D2;(8) DJNZR7,D1;(9) RET;(10) MOV:这是一条指令,意思是传递数据。说到传递,我们都很清楚,传东西要从一个人的手上传到另一个人的手上,也就是说要有一个接受者,一个传递者和一样东西。从指令MOVR7,#250中来分析,R7是一个接受者,250是被传递的数,传递者在这条指令中被省略了(注意:并不是每一条传递指令都会省的,事实上大部份数据传递指令都会有传递者
[单片机]
80<font color='red'>51单片机</font>教程第五课:延时程序分析
基于2051单片机串行数据采集传输模块的设计
在微机测控系统中,经常要用到A/D转换。常用的方法是扩展一块或多块A/D采集卡。当模拟量较少或是温度、压力等缓变信号场合,采用总线型A/D卡并不是最合适、最经济的方案。这里介绍一种以GNS97C2051单片机为核心,采用TLC2543 12位串行A/D转换器构成的采样模块,该模块的采样数据由单片机串口经电平转换后送到上位机(IBM PC兼容机)的串口COM1或COM2,形成一种串行数据采集串行数据传输的方式。经实践调试证实:该模块功耗低、采样精度高、可靠性好、接口简便,有一定实用价值。 1 主要器件介绍 1.1 TLC2543串行A/D转换器 模块采用TI公司的TLC2543 12位串行A/D转换器,使用开关电容逐次逼近技术完
[单片机]
基于20<font color='red'>51单片机</font>串行数据采集传输模块的设计
80c51是几位单片机 80c51单片机有几个中断
  80c51是几位单片机   80C51是一种8位微处理器,也被称为8051,由Intel公司推出。它是最早的商用单片机之一,由于它的简单易用、灵活可靠,被广泛应用于许多嵌入式系统中。在80C51系列中,最常见的型号包括AT89C51和AT89S52等。   80c51单片机寻址范围有多少   80C51单片机的寻址范围取决于其具体的型号和存储器结构。在最常见的AT89C51和AT89S52型号中,其寻址范围如下:   内部RAM寻址范围:0x00-0x7F(128字节)   内部ROM寻址范围:0x0000-0xFFFF(64KB)   特殊功能寄存器(SFR)寻址范围:0x80-0xFF(128字节)   外部扩展RAM
[单片机]
单片机的中断函数编写方法
interrupt m修饰符 C51中断函数必须通过该修饰符进行修饰。在C51程序设计中,当函数定义时用了interrupt m修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按51系统中断的处理方式自动把它安排在程序存储器中的相应位置。 在该修饰符中,m的取值为0~31,对应的中断情况如下: 0——外部中断0 1——定时/计数器T0 2——外部中断1 3——定时/计数器T1 4——串行口中断 5——定时/计数器T2 其它值预留。 C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断号,也即interrupt后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。 【例】编写一个用于统计外中断0
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved