>_<:简单介绍--[高手绕过这一段;心急的直接跳到下一部份]
>_<: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]
[ >_<:谢谢分享总结这么好的知识]