目录
单片机--优先权编码器扩展外部中断点亮相应的led灯
如图在有8个中断源(S0~S7)的情况下,经74LS148优先 译码后,只占3个I/O引脚,即用3根引脚可分辨8个中断源, 从而节省了I/O口资源(8个中断源的响应用D1~D7模拟)。
代码
#include<reg51.h>
unsigned char status; //定义一变量,用来读取P0口状态
void main( )
{ EA=1;
EX0=1;
IT0=1;
for( ; ; )
{;}
}
void INT0_ISR( ) interrupt 0 //外中断0中断服务函数
{ status=P0&0x07;
switch(status)
{ case 0: P1=0xfe; break;//处理中断源0
case 1: P1=0xfd; break;
case 2: P1=0xfb; break;
case 3: P1=0xf7; break;
case 4: P1=0xef; break;
case 5: P1=0xdf; break;
case 6: P1=0xbf; break;
case 7: P1=0x7f; break;//处理中断源7
}
}
仿真
用到的元器件:
[74LS148]优先权编码器(Priority encoder)是一种数字电路,它可以将多个输入的信号优先级别高低的顺序编码,输出对应的二进制编码。这种编码器通常用于硬件设计中,例如在处理系统中的并行输入数据时,通过编码器可以快速确定哪个输入信号最先到达系统中,得到优先处理。同时,优先权编码器也能在多路选择器中使用,实现对多个输入选择其中的一个。在数字电路中,优先权编码器是一种广泛使用的基本数字逻辑部件。
仿真图:
视频
利用优先编码器扩展外部中断