(八)外部中断的设计与应用
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--串口中断,串行端口完成一帧字符发送/接收后引起。
![](http://images2015.cnblogs.com/blog/810504/201510/810504-20151028220325357-931392473.jpg)
单片机在使用中断功能时,通常需要设置两个与中断有关的寄存器:
①中断允许寄存器IE
②中断优先级寄存器IP
一,中断允许寄存器 IE
![](http://www.51hei.com/UpFiles/up/0/48216562088537.jpg)
功能:
EA-- 全局中断允许位
EA=1 打开全局中断控制
EA=0 关闭全部中断
ET2 定时器/计数器2中断允许位
ET2=1 打开T2中断
ET2=0 关闭T2中断
ES 串行中断允许位
ET1 定时器1中断允许位
EX1 外部中断1允许位
ET0 定时器/计数器0中断允许位
EX0 外部中断允许位
二,中断优先级寄存器IP
![](http://www.51hei.com/UpFiles/up/0/48216572044954.jpg)
PS 串行优先级控制位
PS=1 串行口中断定义为高优先级中断
PS=0 串行口中断定义为低优先级中断
PT1 定时器/计数器1优先级控制位
PX1 外部中断1中断优先级控制位
PT0 定时器/计数器0优先级控制位
PX0 外部中断0中断优先级控制位
注意:定时器系统是单片机内部一个独立的硬件部分,它与CPU和晶振通过内部某些控制线连接并相互作用,CPU一旦设置开始启动定时功能后,定时器便在晶振的作用下自动开始计时,当定时器计数计满后,会产生中断,即通知CPU该如处理。
单片机在使用定时器/计数器功能时,通常需要设置两个与定时器有关的寄存器:
①工作方式寄存器TMOD
②控制计数器TCON
一,工作方式寄存器TMOD
![](http://www.51hei.com/UpFiles/up/0/48216572031019.jpg)
GATE 门控位
GATE=0 定时器/计数器启动与停止仅受TCON寄存器中TRX(X=0,1)来控制
GATE=1 定时器/计数器启动与停止由TCON寄存器中TRX(X=0,1)和外部中断引脚(INT0或INT1)上的电平状态来共同控制
C/T 定时器模式和计数器模式选择位(1为计数器模式,0为定时器模式)
M1M0 工作方式选择位
每个定时器有4个工作方式,他们由M1M0设定
![](http://www.51hei.com/UpFiles/up/0/48216572015236.jpg)
二,定时器/计数器控制寄存器TCON
![](http://www.51hei.com/UpFiles/up/0/48216582015541.jpg)
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置位,启动定时器/计数器定时或计数
图标:
中断源:
INTO0--外部中断0,由P3.2端口线引入,低电平或下降沿引起。
INTO1--外部中断1,有P3.3端口线引入,低电平或下降沿引起。
T0--定时器/计数器0中断,由T0计数器计满回零引起。
T1--定时器/计数器1中断,由T1计数器计满回零引起。
T2--定时器/计数器2中断,由T2计数器计满回零引起。
TI/RI--串口中断,串行端口完成一帧字符发送/接收后引起。
![](http://images2015.cnblogs.com/blog/810504/201510/810504-20151028220325357-931392473.jpg)
单片机在使用中断功能时,通常需要设置两个与中断有关的寄存器:
①中断允许寄存器IE
②中断优先级寄存器IP
一,中断允许寄存器 IE
![](http://www.51hei.com/UpFiles/up/0/48216562088537.jpg)
功能:
EA-- 全局中断允许位
EA=1 打开全局中断控制
EA=0 关闭全部中断
ET2 定时器/计数器2中断允许位
ET2=1 打开T2中断
ET2=0 关闭T2中断
ES 串行中断允许位
ET1 定时器1中断允许位
EX1 外部中断1允许位
ET0 定时器/计数器0中断允许位
EX0 外部中断允许位
二,中断优先级寄存器IP
![](http://www.51hei.com/UpFiles/up/0/48216572044954.jpg)
PS 串行优先级控制位
PS=1 串行口中断定义为高优先级中断
PS=0 串行口中断定义为低优先级中断
PT1 定时器/计数器1优先级控制位
PX1 外部中断1中断优先级控制位
PT0 定时器/计数器0优先级控制位
PX0 外部中断0中断优先级控制位
注意:定时器系统是单片机内部一个独立的硬件部分,它与CPU和晶振通过内部某些控制线连接并相互作用,CPU一旦设置开始启动定时功能后,定时器便在晶振的作用下自动开始计时,当定时器计数计满后,会产生中断,即通知CPU该如处理。
单片机在使用定时器/计数器功能时,通常需要设置两个与定时器有关的寄存器:
①工作方式寄存器TMOD
②控制计数器TCON
一,工作方式寄存器TMOD
![](http://www.51hei.com/UpFiles/up/0/48216572031019.jpg)
GATE 门控位
GATE=0 定时器/计数器启动与停止仅受TCON寄存器中TRX(X=0,1)来控制
GATE=1 定时器/计数器启动与停止由TCON寄存器中TRX(X=0,1)和外部中断引脚(INT0或INT1)上的电平状态来共同控制
C/T 定时器模式和计数器模式选择位(1为计数器模式,0为定时器模式)
M1M0 工作方式选择位
每个定时器有4个工作方式,他们由M1M0设定
![](http://www.51hei.com/UpFiles/up/0/48216572015236.jpg)
二,定时器/计数器控制寄存器TCON
![](http://www.51hei.com/UpFiles/up/0/48216582015541.jpg)
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置位,启动定时器/计数器定时或计数
图标:
![](http://images2015.cnblogs.com/blog/810504/201510/810504-20151028221546044-1836860603.jpg)
相关文章推荐
- Android通过在布局文件中设置include实现xml布局的复用
- [IOS开发教程] iOS获取设备信息
- 几个高危端口
- WebSocket使用教程 - 带完整实例
- JS面向对象的程序设计
- 如何使用CSS3创建一个漂亮的图标
- android Studio 配置LUA 开发环境
- 判断素数、输出素数以及对称素数---C++
- 织梦dedecms中html和xml格式的网站地图sitemap制作方法
- Emgucv安装
- 【郑轻】[1415]A+B Again!
- 读书笔记——《你的灯亮着吗》(1/2)
- tuzicms美化input(file)浏览按钮代码
- [IOS开发教程] IOS UIDevice & IOS检测屏幕旋转实例
- java.lang.InstantiationException错误
- kinect2.0+opencv获取图像和深度图像
- 简单堆栈理解
- 控制面板中找不到Internet信息服务(IIS)管理器
- 树莓派(一)安装win10 IoT
- [知其然不知其所以然-14] cpu hotplug引出的cgroup故障