MCU 51-5中断
中断概念 : 计算机执行某程序时,发生了紧急事件或有特殊请求,CPU暂停某程序的执行, 转而去处理上述事件或请求,处理完毕后再重新执行某程序的过程叫做中断。
数据的输入/输出传送方式:
(1)无条件传送方式: 一方对另一方来说总是准备好的。
(2)查询传送方式(LOOK UP): 传送前一方先查询另一方的状态,若已经准备好就传送,否则就继续查询/等待。
(3)中断传送方式(IRQ): 一方通过申请中断的方式与另一方进行数据传送。
(4)直接存储器存取方式(DMA): 双方直接通过总线传送数据, 不经CPU中转。适用于数据量大高速通讯的设备不占用CPU时间。
中断传送方式特点:
数据传送的双方平时各自做自己的工作,一旦甲方要求与乙方进行数据传送,就主动发出信号提出申请,乙方接到申请后若同意传送,安排好当前的工作,再响应与甲方发生数据传送。完事后,回去继续做打断前的工作。
引起CPU中断的根源,称为中断源。
中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。
对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。
实现上述中断功能的部件称为中断系统(中断机构)。
中断功能强弱是计算机性能优劣的重要标志
提高CPU效率
解决速度矛盾
实现并行工作
应付突发事件……
51子系列允许5个中断源:
外部中断源(2个):
INT0——由P3.2端口线引入,低电平或下降沿引起。
INT1——由P3.3端口线引入,低电平或下降沿引起。
这两个外部中断源标志和它们的触发方式控制位由特殊功能寄存器TCON的低4位控制。
内部中断源(3个):
T0——定时器/计数器0中断,由T0回零溢出引起。
T1——定时器/计数器1中断,由T1回零溢出引起。
TI/RI——串行I/O中断,串行端口完成一帧字符发送/接收后引起。
这3个内部中断源的控制位分别锁存在特殊功能寄存器TCON和SCON中。
1、中断请求标志TCON(88H)可位寻址 TCON:Timer控制寄存器,低4位管理外部中断 作用:设置外部中断触发方式,标注外部中断请求。
IE0/IE1:外部中断申请标志位: =0:没有外部中断申请; =1:有外部中断申请。 IT0/IT1:外部中断请求的触发方式选择位: =0:在INT0/INT1端申请中断的信号低电平有效; =1:在INT0/INT1端申请中断的信号负跳变有效。
外部中断及中断请求的撤除
低电平/负脉冲→INT0/INT1引脚可触发中断
IT0/IT1:INT0/1的触发方式选择位: IT0/IT1 =0 时,INT0/INT1是低电平有效; IT0/IT1 =1 时,INT0/INT1是负跳变有效。
低电平触发 引脚上的低电平须持续到中断发生。若中断返回前仍未及时撤除低电平,将再次中断。
负脉冲触发 CPU在前一机器周期采到INT0/INT1引脚为高,后一机器周期采到为低才认为是一次中断请求。CPU 可记忆申请、可自动撤除中断申请。
#include <reg52.h> #define uchar unsigned char
#define uint unsigned int uint count;
void delay(uint z)
{
uint x,y;
for(x = z; x > ; x--)
for(y = ; y > ; y--);
} /*中断服务特殊功能寄存器配置*/
void init()
{ TMOD = 0x01; //定时器16为计数工作模式
TH0 =0x4b;
TL0 =0xfd; //50ms
ET0 = ; //开定时器0中断
TR0 = ;//启动定时器0
EA = ; //开总中断
} void main()
{
init();
while()
{
P1 = 0xff;
}
} /*中断服务程序*/
void timer0() interrupt
{
TH0 =0x4b;
TL0 =0xfd; //50ms
count++;
if (count == )
{
P1 = ;
delay();
count = ;
}
}
最新文章
- SSRS ----环境配置,没有 ReportServer DB 怎么办?
- 支付宝PC即时到账和手机网站支付同步
- 浅析java内存模型--JMM(Java Memory Model)
- Linux异常表
- [Linux] - CentOS中文乱码解决办法
- mysql-模拟全连接处理
- VC++ 浅谈VS2010中CMFCToolBar的用法
- [Angular2 Router] Optional Route Query Parameters - The queryParams Directive and the Query Parameters Observable
- ubuntu 11.10 安装apache2 tomcat6
- 微信小程序开发之大坑记之post请求
- PHP - 接口 - 单一接口
- cocos2d-x lua 内存回收
- STM32学习笔记(五)——通用定时器计数延时
- 谈谈 ANR 之 Service 超时
- 2种不同方式实现背景图里加入文字的简单CSS样式
- Linux下PHP扩展pdo_mysql
- os常用模块,json,pickle,shelve模块,正则表达式(实现运算符分离),logging模块,配置模块,路径叠加,哈希算法
- tomcat 启动慢问题
- 20135337——Linux实践二:模块
- Angular 请求数据