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-03-16 13:31
基于51单片机的LED旋转显示器制作
由于刚学51单片机,加上制作电路板软件也是从零开始,的确花了我不少的时间和精力。不过也就是在这艰难的独立制作中,真正学到了不少实在的东西。原理就不多说了。 下面分享一下我的制作过程。这里有关于本制作的更详细的图片展示: 首先是制作效果图: 电路图: 电路采用的是无限供电模块给单片机供电的。采用无限供电。无摩擦,震动小。LED与单片机引脚之间的连接采用的是细小的漆包线。省去了限流电阻。省去复位电路制作起来更简单方便。 准备主要材料:因很多人不知材料哪里买,先将地址链接在材料名称,点击就进去了 1.51单片机1片 2.单片机插槽和万能电路板(洞洞板) 3.贴片LED0603(颜色自定,如果焊接技术不够
[单片机]
51单片机的静态和动态数码管的显示
一、数码管显示原理: 数码管其实就是有8个LED构成,分为a、b、c、d、e、f、g、dp,而数码管又分为共阴极(左边,高电平点亮)和共阳极(右边,低电平点亮),点亮对应的LED即可显示对应的数字,共阴极编码表如下: 0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d 、0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c,0x39 , 0x5e , 0x79 , 0x71 , 0x00 分别对应0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,而0x00则不显示。 注意:比如显示0,则要abcdef都为1,即是0011 1111,转为16进制就是
[单片机]
51单片机单串口同时实现AT指令和调试信息输出
很多外部模块是使用串口的方式与单片机通信的,但有的单片机只有一个串口,且不能硬件仿真,比如我使用的STC90C516,如果将唯一的串口给了外部模块,就不能打印调试信息了。 不过如果是使用AT指令只这样的模块,比如蓝牙SPP,WiFi模块,是使用AT指令的方式通信的 我们可以保留单片机串口与PC的连接,串口同时与模块连接,这样单片机的发送信息同时被模块和PC收到了。 模块只对AT指令有反应,对其他格式不正确的指令无反应, 如: printf( AT+RST\r\n );//模块对该指令有反应 printf( DEBUG+RST Test\r\n );//模块对该指令无反应 /span 这样串口就可以接收发送的数据和调试
[单片机]
以89C51单片机为核心器件的自动控制系统编码译码显示实验电路设计
引 言 在日常数字逻辑电路实验中编码译码显示实验电路是编码、译码、显示三个电路的综合运用, 在数字逻辑实验电路中具有重要的地位, 在实验的过程中, 时常会出现显示结果的抖动, 经研究出现这种现象主要原因是:编码电路的编码信号输入采用手工拨盘方式, 产生的编码输入信号往往不稳定; 另外, 电路控制性能较差,不能达到自动复位, 为此有必要对现有电路进行改进,在电路的设计上采用89C51 单片机为控制电路制作而成, 自动提供稳定编码输入信号, 显示结果稳定性和电路控制性能大大提升, 提高了教学实验质量。 1 编码译码显示实验电路的基本结构 编码译码显示电路的基本结构如图1 所示, 主要由控制电路、编码信号发生器、编码译码显示电路等组
[单片机]
基于51单片机和ADC0809的数字电压表设计
本课题是利用单片机设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示,使用的元器件数目较少。外界电压模拟量输入到A/D转换部分的输入端,通过A/D转换变为数字信号,输送给单片机。然后由单片机给数码管数字信号,控制其发光,从而显示数字。 注:因为ADC0809的通道选择端口是使用插针,做出电路板后再用导线连起来的,在程序里也少了通道选择的语句,请注意一下。 一.原理图 二.仿真图 三.存储空间定义 (1)70H用于存放A/D转换结果,71H、72H、73H、74H分别存储显示用的三位数据如表所示。 (2)地址30H~39H存放显示在数码管上0~9的数。如表所示。 四.程序 程序可分为数据采
[单片机]
MCS-51单片机内部包含哪些主要逻辑功能部件?
MCS-51单片机内部包含哪些主要逻辑功能部件有: (1)1个8位的微处理器CPU。 (2)8KB的片内程序存储器Flash ROM(51子系列的Flash ROM为4KB),用于烧录运行的程序、常数数据。 (3)256B的片内数据存储器RAM(51子系列的RAM为128B),在程序运行时可以随时写入数据和读出,用于存放函数相互传递的数据、接收的外部数据、中间结果、最后结果以及显示的数据等。 (4)3个16位的定时器/计数器(51子系列仅有2个定时器),每个定时器/计数器可以设置为计数方式,用于对外部事件信号进行计数,也可以设置为定时方式,满足各种定时要求。 (5)有一个管理6个中断源(51子系列1是5个中断源)、两个优
[单片机]
基于51单片机和PDIUSB12的USB接口设计
简介:为解决51单片机与计算机的串行总线(USB)的通信问题,以PDIUSB12芯片为基础,选择51单片机中的STC89C52为示例,设计了一款USB的接口电路,解决了多款51单片机与计算机的USB通信困难的问题。 引言 USB因其使用方便、传输速度快、连接灵活而受到用户和计算机厂商的广泛青睐。微控制器(MCU)在与计算机实现通信时大多依靠USB来实现。在MCU中,51单片机是国内使用最广的单片机之一,但是由于多款51单片机无法直接与计算机实现USB通信,而给许多用户开发和使用带来不便。本文以51单片机中的典型代表STC89C52和恩智浦半导体公司的PDIUSB12为基础设计的USB接口电路,解决了MCU和计算机的USB通信问
[单片机]
解析8051单片机的三种数据传输方式
单片机CPU与外部设备交换信息通常有如下几种方式:无条件传送方式,查询传送方式和中断传送方式。我们以单片机与微型打印机接口为例讲述这三种方式。假定用户要打印三个数据,这三个数据保存在单片机的内部数据存储器10H,11H,和12H中,8051用并口P2与微型打印机的并行数据口DB进行数据交换。 (1)无条件传送方式 这种数据传送方式中没有联络信号,即CPU总是认为打印机在如何时候都是处于“准备好”的状态。这种传送方式中只需要在程序中加入数据送往P2的指令,数据传送便可以实现。但这种数据传送方式有一个致命弱点,数据易丢失,这是因为CPU的速度相当快,而打印机的速度相对来说较慢,其结果是在打印机打印一个数据的时间内,CPU已送来了多
[单片机]