简介: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的情况,就可以用一片单片机实现了,而不需要用两片单片机控制,还要进行单片机点对点通讯。
关键字:51单片机 扩展中断 中断源
引用地址:
关于51单片机扩展中断的四种方法
推荐阅读最新更新时间:2024-11-13 13:59
8051单片机的机器周期解析
在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。参见后面的时序图。
[单片机]
51单片机学习之4-数码管
第11集 一、数码管工作原理 数码管显示亮度高,响应速度快,可以在一些比较差的环境中使用。有1位、2位、4位、8位连体等。。。也有专用于显示时间的数码管。 如图,一位数码管由8个二极管构成,7个构成 日 字型,1个是小圆点。分共阴和共阳。 共阴:所有二极管的负极连接在一起,接到电源负极。共阳:所有二极管的正极连接在一起,接到电源正极。(图(a)引脚画错了。) 驱动的原理都很简单,如共阳型数码管的驱动。图(b)右边的电路图可以看出,所有的二极管正极都接在电源正极,a、b、c、d、e、f、g、dp都接在单片机的IO口上,在《51单片机复习笔记1》:http://www.51hei.com/mcu/2111.html
[单片机]
51单片机的中断与定时计数器尝试
这是我的第一篇有关51单片机的博客,主要记录我的学习历程与中间遇到的问题,如有错漏请指出。 在我理解里面中断与定时计数器是这样的: 中断是通过检查P3.2(INT0)与P3.3(INT1)两个引脚来触发的 计数器是通过检查P3.4(T0)与P3.5(T1)两个引脚的状态,要达到一定的次数(一般是记脉冲数)才触发 定时器不需要检测引脚,直接计数 先说中断的代码 #include reg51.h #include intrins.h #define SDT P0//静态数码管定义 unsigned char temp; unsigned char code SDT_map ={0xC0,0xF9,0xA4,0xB0,
[单片机]
51单片机入门 - 自己动手搭建实验板
前面介绍了几种准备实验板的方案。这里先介绍方案一,我将同大家一起搭建一块简易的单片机实验板,一起感受动手实践的乐趣。 我们有两种自己搭建实验板的方案,一是用面包板,二是用万用焊板。本篇我们介绍面包板搭建电路。 面包板和面包板线 面包板是一种用于电路实验的器材,上面有很多孔,我们可以将元器件和导线插进去,组成我们需要的电路。如果发现电路有错,拔下元件和导线重新插接即可。电路做完后,所有元件还可以拔下来再次使用。 面包板搭建电路简单易行,节省时间和材料。但是缺点在于,面包板只能搭建一些比较简单的电路,而且是对电气连接要求不高的电路。如果电路太复杂,面包板上全是各种导线,出现某些导线或元件松动的情况,不容易找到;有些电
[单片机]
51单片机位寻址区及能进行位寻址的SFR
(1)位寻址区 在80C51中,有一部份RAM和一部份SFR是具有位寻址功能的,也就是说这些RAM的每一个位都有自已的地址,能直接用这个地址来对此进行操作。 内部RAM的20H-2FH这16个字节,就是8031的位寻址区。看图1。可见这里面的每一个RAM中的每个位我们都可能直接用位地址来找到它们,而不必用字节地址,然后再用逻辑指令的方式。 (2)能位寻址的特殊功能寄存器 80C51中有一些SFR是能进行位寻址的,这些SFR的特点是其字节地址均可被8整除,如A累加器,B寄存器、PSW、IP(中断优先级控制寄存器)、IE(中断允许控制寄存器)、SCON(串行口控制寄存器)、TCON(定时器/计数器控制寄存器)、P0-P3(I/
[单片机]
51单片机学习:外部中断0实验
实验名称:外部中断0实验 接线说明: 实验现象:下载程序后,当按下K3键可控制D1指示灯亮灭 注意事项:将红外接收传感器取下,防止对P3.2口干扰 ***************************************************************************************/ #include reg52.h typedef unsigned int u16; //对系统默认数据类型进行重定义 typedef unsigned char u8; //定义LED1管脚 sbit LED1=P2^0; //定义独立按键K3控制脚 sbit KEY3=P3^2; /**********
[单片机]
51单片机学习:ADC模数转换实验--外部通道电压采集
实验名称:ADC模数转换实验--外部通道电压采集 接线说明: 实验现象:下载程序后,数码管上显示AD模块采集外部通道AIN3的电压值 注意事项: ***************************************************************************************/ #include public.h #include smg.h #include xpt2046.h /******************************************************************************* * 函 数 名 : main * 函数功能 :
[单片机]
51单片机定时器定时模式
写点专业的知识吧,也是初学,大家共同学习。好,废话少说,进入主题 初学51单片机的人都接触到定时器这个东西,关于定时器也有很多资料,包括内部结构,如何执行。但是说到模式,我想刚学的时候听他们讲的那堆乱七八糟的模式都很费解,什么模式0,模式1,十六位,八位。我到现在也没有明白。但是我在编程时,对这东西有一个初步的理解。 首先是定时器为啥要先装初值,这东西打个比方,古代定时用的是沙漏,沙漏是先在桶中装上沙子,在钻一个眼,沙子都溜走时,为一个周期。如果要定时,装的就是最后的那个时间,加入我定10毫秒,则是10、9、8、7、6 ,直到0,启动中断。而还有一种方法就在木桶中滴水,木桶的容积是一定的,水滴满以后就是一个周期。加入那个木桶可以装
[单片机]