中断概念 : 计算机执行某程序时,发生了紧急事件或有特殊请求,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 = ;
}
}

最新文章

  1. SSRS ----环境配置,没有 ReportServer DB 怎么办?
  2. 支付宝PC即时到账和手机网站支付同步
  3. 浅析java内存模型--JMM(Java Memory Model)
  4. Linux异常表
  5. [Linux] - CentOS中文乱码解决办法
  6. mysql-模拟全连接处理
  7. VC++ 浅谈VS2010中CMFCToolBar的用法
  8. [Angular2 Router] Optional Route Query Parameters - The queryParams Directive and the Query Parameters Observable
  9. ubuntu 11.10 安装apache2 tomcat6
  10. 微信小程序开发之大坑记之post请求
  11. PHP - 接口 - 单一接口
  12. cocos2d-x lua 内存回收
  13. STM32学习笔记(五)——通用定时器计数延时
  14. 谈谈 ANR 之 Service 超时
  15. 2种不同方式实现背景图里加入文字的简单CSS样式
  16. Linux下PHP扩展pdo_mysql
  17. os常用模块,json,pickle,shelve模块,正则表达式(实现运算符分离),logging模块,配置模块,路径叠加,哈希算法
  18. tomcat 启动慢问题
  19. 20135337——Linux实践二:模块
  20. Angular 请求数据

热门文章

  1. 第一次前端实习机试题 很粗糙的一个天气预报demo
  2. List集合排序的方法
  3. Shell总结02-shell变量、赋值与替换
  4. Arduino控制超声波检测与0.96OLED及串口显示
  5. cb25a_c++_函数对象简介
  6. Eplan显示项目属性的编号设置方法
  7. Python 为什么不支持 i++ 自增语法,不提供 ++ 操作符?
  8. 浅析Java中Ant的使用
  9. 47 _ 循环队列程序演示.swf
  10. 华为云—环境安装(jdk安装,tomcat安装)