您的位置:首页 > 其它

(八)外部中断的设计与应用

2015-12-26 17:14 260 查看
52单片机:

中断源:

INTO0--外部中断0,由P3.2端口线引入,低电平或下降沿引起。
INTO1--外部中断1,有P3.3端口线引入,低电平或下降沿引起。
T0--定时器/计数器0中断,由T0计数器计满回零引起。
T1--定时器/计数器1中断,由T1计数器计满回零引起。
T2--定时器/计数器2中断,由T2计数器计满回零引起。
TI/RI--串口中断,串行端口完成一帧字符发送/接收后引起。



单片机在使用中断功能时,通常需要设置两个与中断有关的寄存器:
①中断允许寄存器IE
②中断优先级寄存器IP

一,中断允许寄存器 IE



功能:

EA-- 全局中断允许位
EA=1 打开全局中断控制
EA=0 关闭全部中断

ET2 定时器/计数器2中断允许位
ET2=1 打开T2中断
ET2=0 关闭T2中断

ES 串行中断允许位

ET1 定时器1中断允许位
EX1 外部中断1允许位
ET0 定时器/计数器0中断允许位
EX0 外部中断允许位

二,中断优先级寄存器IP




PS 串行优先级控制位
PS=1 串行口中断定义为高优先级中断
PS=0 串行口中断定义为低优先级中断
PT1 定时器/计数器1优先级控制位
PX1 外部中断1中断优先级控制位
PT0 定时器/计数器0优先级控制位
PX0 外部中断0中断优先级控制位

注意:定时器系统是单片机内部一个独立的硬件部分,它与CPU和晶振通过内部某些控制线连接并相互作用,CPU一旦设置开始启动定时功能后,定时器便在晶振的作用下自动开始计时,当定时器计数计满后,会产生中断,即通知CPU该如处理。

单片机在使用定时器/计数器功能时,通常需要设置两个与定时器有关的寄存器:
①工作方式寄存器TMOD
②控制计数器TCON
一,工作方式寄存器TMOD




GATE 门控位
GATE=0 定时器/计数器启动与停止仅受TCON寄存器中TRX(X=0,1)来控制
GATE=1 定时器/计数器启动与停止由TCON寄存器中TRX(X=0,1)和外部中断引脚(INT0或INT1)上的电平状态来共同控制
C/T 定时器模式和计数器模式选择位(1为计数器模式,0为定时器模式)
M1M0 工作方式选择位

每个定时器有4个工作方式,他们由M1M0设定




二,定时器/计数器控制寄存器TCON




IF1 定时器1溢出标志位
TR1 定时器1运行控制位
由软件清零关闭定时器1,当GATE=1,且INT1为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1启动定时器1
IE1 外部中断1请求标志
当IT0=1时为电平触发方式,每个机器周期的S5P2采样INT1引脚,若INT1脚为低电平。则置1,否则IE1清0.
当IT1=0时,INT1为跳变沿触发,当第一个机器周期采样到INT1为低电平时,则IE1置1,便是外部中断1正向CPU申请中断,当CPU响应中断,转向中断服务程序时,该位由硬件清0.
IT1 外部中断1触发方式选择位
IT1=0 为电平触发模式,引脚INT1上低电平有效
IT1=1 为跳变沿触发模式,引脚INT1上下降沿有效
IE0 同上
IT0 同上

计算定时器的初值问题
52单片机内部有12倍的分频,假设采用的是12MHZ的晶振,那么12个时钟周期为一个机器周期,那么此时机器周期就是1us。以定时器1,工作方式1为例。16位的计数器
溢出一次需要计数2^16-1个数=65536。约为65.5ms
如果要定时50ms的话,(65536-50000)/256 转载到THX
(65536-50000)/256 转载到TLX
公式:
THX=(65536-50000)/256
LTX =(65536-50000)/256

中断服务函数的写法:
void 函数名() interrupt 中断号 using 工作组
{
中断服务程序内容
}

定时器的初始化过程如下
①对TMOD赋值,以确定T0和T1的工作方式
②计算初值,并将初值写入TH0,TL0,或TH1,TL1
③中断方式,则对IE赋值,开放中断
④使TR0或TR1置位,启动定时器/计数器定时或计数

图标:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: