单片机扩展中断的4种方法

MCS—51系列单片机内部只有两个外部中断源输入端,当外部中断源多于两个时

,就必须进行扩展,下面介绍两种简单的扩展方法:

一、采用硬件请求和软件查询的方法:

这种方法是:把各个中断源通过硬件“或非(高有效,如CD4002)”(与,低有效)门引入到单片机外部中断源输入

端(INT0或INT1),同时再把外部中断源送到单片机的某个输入输出端口,这

样当外部中断时,通过“或非”(与)门引起单片机中断,在中断服务程序中再通

过软件查询,进而转相应的中断服务程序。显然,这种方法的中断优先级取决于

软件查询的次序。其硬件连接和软件编程如下:

Void zhongduan (void) interrupt 0 using 3 //中断函数

{

EX0=0;//关中断

If(P0_0=1) { *****}//中断查询

If(P0_1=1) { *****}//中断查询

If(P0_2=1) { *****}//中断查询

EX0=1;开中断

}

二、用普通二极管构成中断选择

扩展的8个外部中断源均通过二极管向I N T(x=0或I)请求中断。当某个外部中断源请求中断服务时输出低电平,单片机的I NT 经二极管接地电平,单片机满足响应外部中断(I N T)请求条件,响应中断,程序立即转向I NT 对应的中断入口地址处开始执行中断服务程序,通过软件查询PI.0~P1.7口外中断源的状态,以识别提出请求的外扩中断源,并转向中断服务程序为其服务,其查询顺序即为外部扩展中断源的中断优先级顺序。在图中,是选用PI.0~PI.7作为外扩中断源请求的状态信息输入端口。

有点类似第一种方法。

三、用定时器/计数器作外部中断

单片机的定时器/计数器是一个加一计数器,每当计数输入端有一个“1—0”的负

跳变时,计数器加一,当加一计数器溢出时,就向CPU发出中断,利用这个特性

来扩展中断的方法是:首先把定时器/计数器设置成计数方式,并预置满值,把

外部中断源输入到P3口第4引脚或第5引脚(计数器输入端),这样就可以利用

定时器/计数器作为单片机外部中断了。注意这种方法的中断服务的入口地址应

在000BH或001BH。

四、用专用中断扩展芯片8259A

8259A是可编程中断控制接口,单片机控制八级中断。在系统中还可采用级联方式,一个主片可级联8个从片,构成64级中断处理系统。

这样在程序小于8K的情况,就可以用一片单片机实现了,而不需要用两片单片机控制,还要进行单片机点对点通讯。

转自 http://www.21ic.com/jichuzhishi/mcu/interrupt/2014-03-20/216130.html

时间: 2024-10-13 22:59:18

单片机扩展中断的4种方法的相关文章

PHP中获取文件扩展名的N种方法

PHP中获取文件扩展名的N种方法 从网上收罗的,基本上就以下这几种方式: 第1种方法: function get_extension($file) { substr(strrchr($file, '.'), 1); } 第2种方法: function get_extension($file) { return substr($file, strrpos($file, '.')+1); } 第3种方法: function get_extension($file) { return end(expl

【技术宅3】截取文件和url扩展名的N种方法

//截取文件扩展名的N种方法   //第1种 //strrchr() 函数查找字符在指定字符串中最后一次出现的位置,如果成功,则返回其后面的字符串 //返回带有点的扩展名 function get_extension($file){ return strrchr($file, '.'); } echo get_extension("d.sdf.jpeg"); //第2种 //strchr() 函数查找字符在指定字符串中第一次出现的位置,如果成功,则返回其后面的字符串 //利用回调函数反

PHP中 获取文件扩展名的N种方法

PHP中获取文件扩展名的N种方法,有以下这几种方式:第1种方法:function get_extension($file){substr(strrchr($file, ‘.’), 1);} 第2种方法:function get_extension($file){return substr($file, strrpos($file, ‘.’)+1);} 第3种方法:function get_extension($file){return end(explode(‘.’, $file));} 第4种

避免云中断和提高系统性能的4种方法

避免云中断和提高系统性能的4种方法 当大多数人听到关于云计算中断的头条新闻时,他们通常考虑的是哪个云计算供应商,或其负面宣传将如何影响股票价格,却很少有人会想到事件背后的相关人员,也就是负责修复问题并让客户系统恢复运行的工作人员. 尽管他们付出了最大的努力,偶尔的业务中断或停电是不可避免的.互联网是一个不稳定的场所,没有人能够完全免于这种危险.幸运的是,企业可以采取一些简单的措施来防范意外停机的可能性. 以下是避免云计算中断的四种方法,同时提高了流程中的安全性和性能: 1.采用多个地点或多云环境

linux系统下php安装mbstring扩展的二种方法

.执行 复制代码代码如下: yum install php-mbstring 2. 修改php.ini (这一步非常重要, 部分lxadmin版本无法自动修改) 复制代码代码如下: echo ‘extension=mbstring.so' >>/etc/php.ini #更具php安装目录而定 3. 重启web service 如果是apache: service httpd restart 方法二:php 5.36安装目录:/usr/local/php 复制代码代码如下: #cd /usr/

关系型数据库横向扩展的三种方法

本文是 Oracle Coherence 3.5一书,第一章: Achieving Performance, Scalability, and Availability Objectives,第二节:Achieving scalability中,数据库横向扩展部分的读书笔记. 传统的关系型数据库很难扩展,通常是纵向扩展,但到达一定程度时只能横向扩展. 数据库的横向扩展支持三种方法,即主从复制,集群和分片(sharding). 主从复制 主从复制(Master-slave replication)

linux-CentOS6.4安装Memcached+memcached扩展+安装memcache扩展+Memcache同步SESSION的几种方法

一.编译环境的准备 yum install gcc  yum install gcc-c++ libstdc++-devel  yum install zlib-devel 二.源码包准备 wget http://monkey.org/~provos/libevent-1.4.14b-stable.tar.gzwget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz 三.安装与配置 1.安装libevent tar zx

【汇编】三种方法实现装填中断子程序地址的代码

1 CODE SEGMENT 2 ASSUME CS:CODE 3 INT_50H PROC FAR 4 MOV CX,1000H 5 L: LOOP L 6 IRET 7 INT_50H ENDP 8 BEGIN: 9 PUSH DS 10 MOV AX,0 11 MOV DS,AX 12 MOV WORD PTR DS:[140H],OFFSET INT_50H 13 MOV WORD PTR DS:[142H],SEG INT_50H 14 MOV AH,4CH 15 INT 21H 16

插件扩展的几种方法

<script> //第一种:扩展Jquery原型对象的方法 (function($) { $.fn.logText = function() { console.log(this.text()); } })(jQuery); $(function() { //自定义的原型方法,也就是jquery插件 $(".text01").logText(); }); //第二种:扩展jquery构造函数上的插件(方法) $.extend({ logTime: function() {