打印
[疑难问答]

四种简略的拓宽51单片机中断的妙招

[复制链接]
2539|46
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mickit|  楼主 | 2024-8-25 00:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、选用硬件央求和软件查询的办法:      这种办法是:把各个接连源通过硬件“或非(高有用,如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口外接连源的情况,以辨认提出央求的外扩接连源,并转向接连效能程序为其效能,其查询次第即为外部拓宽接连源的接连优先级次第。有点类似第一种办法。
三、用定时器/计数器作外部接连      单片机的定时器/计数器是一个加一计数器,每当计数输入端有一个“1—0”的负跳变时,计数器加一,当加一计数器溢出时,就向CPU宣告接连,运用这个特性来拓宽接连的办法是:首先把定时器/计数器设置成计数办法,并预置满值,把外部接连源输入到P3口第4引脚或第5引脚(计数器输入端),这么就可以运用定时器/计数器作为单片机外部接连了。留神这种办法的接连效能的进口地址应在000BH或001BH。
四、用专用接连拓宽芯片8259A      8259A是可编程接连控制接口,单片机控制八级接连。在系统中还可选用级联办法,一个主片可级联8个从片,构成64级接连处理系统。这么在程序小于8K的情况,就可以用一片单片机完成了,而不需要用两片单片机控制,还要进行单片机点对点通讯。

使用特权

评论回复
沙发
sdlls| | 2024-9-13 16:09 | 只看该作者
在主循环中添加代码,定期读取外部设备的状态寄存器。

使用特权

评论回复
板凳
biechedan| | 2024-9-13 20:17 | 只看该作者
在主程序中设置一个变量作为软件定时器,每次主程序循环时对该变量进行递减操作。当变量减到零时,产生一个标志位,表示软件定时器超时。
在主程序中不断检查这个标志位,当标志位为真时,执行相应的处理程序,就像响应中断一样。

使用特权

评论回复
地板
ulystronglll| | 2024-9-13 21:19 | 只看该作者
当某个中断源请求中断时,通过二极管接地,使单片机的中断引脚电平降低,触发中断。

使用特权

评论回复
5
zerorobert| | 2024-9-13 22:04 | 只看该作者
在某些情况下,可以使用多个51单片机来分别处理不同的任务,并通过串行通信或者其他方式相互协作。

使用特权

评论回复
6
sdlls| | 2024-9-13 22:16 | 只看该作者
选择合适的方法可以有效地提高51单片机处理多任务的能力。

使用特权

评论回复
7
sesefadou| | 2024-9-13 22:30 | 只看该作者
可以使用专门的中断扩展芯片,如8259A可编程中断控制器,来扩展中断源的数量。

使用特权

评论回复
8
eefas| | 2024-9-14 07:45 | 只看该作者
如果外部中断源数量有限,可以利用定时器中断来模拟外部中断。

使用特权

评论回复
9
maudlu| | 2024-9-14 12:42 | 只看该作者
当任一外部设备需要中断服务时,通过逻辑电路触发单片机的外部中断。

使用特权

评论回复
10
jonas222| | 2024-9-14 13:00 | 只看该作者
通过外部中断(INT0 或 INT1)来触发另一个外部中断控制器,如 8259A 或者其他可编程中断控制器。

使用特权

评论回复
11
loutin| | 2024-9-14 22:25 | 只看该作者
使用“或非”门(如CD4002)将多个中断源的逻辑请求合并到单片机的外部中断输入端(INT0或INT1)。

使用特权

评论回复
12
jimmhu| | 2024-9-15 11:34 | 只看该作者
利用51单片机的定时器中断来模拟额外的中断。

使用特权

评论回复
13
wangdezhi| | 2024-9-15 19:50 | 只看该作者
通过多路复用技术,可以将多个外部中断源共享一个中断输入端。例如,使用模拟开关或多路选择器将不同的中断源轮流连接到单片机的外部中断端口。在中断服务程序中,记录当前的多路选择状态,以便正确识别中断源。

使用特权

评论回复
14
51xlf| | 2024-9-16 07:57 | 只看该作者
利用定时器中断或空闲循环,在软件中轮询检查多个外部事件的发生。这种方法虽然不是真正的硬件中断,但在某些情况下可以满足需求。

使用特权

评论回复
15
primojones| | 2024-9-16 22:07 | 只看该作者
使用额外的硬件电路来扩展外部中断的数量。例如,可以通过与门、或门等逻辑器件将多个信号合并成一个信号,然后连接到单片机的一个外部中断引脚上。这样,当任何一个信号发生变化时,都会触发中断。

使用特权

评论回复
16
gygp| | 2024-9-18 10:07 | 只看该作者
将多个中断源通过逻辑门电路(如“或非”门)连接到单片机的外部中断输入端(INT0或INT1)。同时,这些中断源也被连接到单片机的一个I/O端口。当中断发生时,逻辑门会触发单片机中断,然后在中断服务程序中通过软件查询确定具体的中断源。

使用特权

评论回复
17
lzmm| | 2024-9-18 11:27 | 只看该作者
用定时器/计数器作外部中断              

使用特权

评论回复
18
mattlincoln| | 2024-9-18 14:04 | 只看该作者
在中断服务程序中,可以通过查询各个设备的状态标志位来确定是哪个设备触发了中断,然后进行相应的处理。

使用特权

评论回复
19
pmp| | 2024-9-19 09:58 | 只看该作者
8259A是一个可编程中断控制器,能够控制多达64级的中断源。通过级联多个8259A芯片,可以构建一个复杂的中断管理网络。

使用特权

评论回复
20
everyrobin| | 2024-9-19 11:37 | 只看该作者
利用与门、或门等逻辑电路将多个信号组合成单个中断输入。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

1297

帖子

1

粉丝