[51单片机] 中断1

时间:2021-05-26 19:50:27

 

 

>_<:简单介绍--[高手绕过这一段;心急的直接跳到下一部份]

[51单片机] 中断1

[51单片机] 中断1

[51单片机] 中断1

 

 

>_<:51单片机上的应用[应用控制篇]

 

>_<:MCS51的中断源

外部中断请求源:即外部中断0 和1,经由外部引脚引入,在单片机上有两个引脚,外称为INT0、INT1,也就是P3.2、P3.3这两个引脚

 

>_<:MCS51的中断向量表

单片机内部的中断模块在每个CPU周期都查询各个中断源的状态,当其发生预期的中断事件时,通知CPU将程序跳转到中断服务程序所在的程序存储器(ROM)地址。该地址称为中断向量。

中断的实质仍然是查询,只是不需要用户程序查询,不占用CPU运行时间而已。

51系列只有5个中断向量,5X系列还增加一个定时器2的中断向量

——————————————————————————————
       地址          |       中断入口   |    中断编号
——————————————————————————————
    0x0000           |        复位      |
    0x0003           |        外部中断0  |            0          
    0x000B           |        定时器0   |            1
    0x0013           |        外部中断1   |          2
    0x001B           |        定时器1     |          3
    0x0023           |        串口       |           4
    0x002B           |        定时器2(5x系列新增的)|  5
——————————————————————————————

 

>_<:MCS51中断运行的机里

以INT0为例:中断模块在每个CPU时钟周期都查询P3.2的状态,当输入的电平由高电平变为低电平时,CPU的程序运行会立即跳转的到地址0x03。处理INT0中断的代码放在地址为0x03开始的ROM区域。c语言中采用一类特殊的函数来实现此代码定位的功能,叫做 中断服务函数,格式如下:

   void 函数名()interrupt N

函数名可以任意,但一般要用一个有意义的函数名,N代表中断向量编号。

 

>_<:中断控制寄存器IE

MCS51中断系统中,中断的允许或禁止是由片内可以进行位寻址的8位中断允许寄存器IE来控制的。

EX0 :外中断0中断允许

ET0 :定时器0中断允许

EX1 :外中断1中断允许

ET1 :定时器1中断允许

ES :串行口中断允许

ET2 :定时器2中断允许

EA :是总开关,若为0,则所有中断都不允许。

 

>_<:中断标志及外部中断方式选择寄存器 TCON

IT0 :INT0触发方式控制位,边沿/电平触发模式

IE0 :INT0中断请标志,

IT1 :同上

IE1 :同上

TF0 :定时器/计数器0的溢出中断标志

TF1 :定时器/计数器1的溢出中断标志

 

>_<:外部中断的2种触发模式

触发模式由IT0和IT1控制。

1)边沿触发:IT0(IT1)=1,INT0(INT1)为边沿触发方式。如果一个周期中采样到高电平,下个周期中采样到低电平,则硬件使IE0(IE1)置1,向CPU请求中断。

2)电平触发:IT0(IT1)=0,INT0(INT1)为电平触发方式。此时外部中断是通过检测P3.2(P3.3)脚的输入电平(低电平)来触发的。采用电平触发时,输入脚的外部中断源必须保持低电平有效,直到该中断被响应。同时在中断返回前必须使用电平变高,否则将会再次产生中断。

一般采用边沿触发方式,因为此模式抗干扰能力较强,极少采用电平触发模式。

 

[>_<:这一部分转自http://hi.baidu.com/ft1022/item/ea2713ea92f1382e5a7cfbc6]

>_<:谢谢分享总结这么好的知识]