基于proteus的51单片机仿真实例七十六、8-3编码芯片74HC148应用实例

时间:2024-04-08 20:33:34
1、本例使用8-3编码芯片74HC148实现外部中断扩展,可以实现对8路外部中断信号按优先级进行处理
2、74HC148是带优先级的编码芯片,对于外部的8根数据输入线,只要有一根或者几根被置0,编码芯片会按照又搞到低的优先级进行编码,由ABC引脚输出3位2进制数,而且GS引脚会自动变为0,本例将GS引脚连接到说、单片机的外部中断10,当GS为0时即会触发外部中断
 
3、在keil c51中新建工程ex64,编写如下程序代码,编译并生成ex64.hex文件
// 利用74HC148芯片扩展外部中断数量
#include <reg51.h>
#include <intrins.h>

//外部中断0中断服务函数
void EX_INT0(void) interrupt 0
{
  unsigned char temp = P2 & 0x07;
 P0 = _cror_(0x7f,temp);     //中断控制点亮拨码开关对应的LED
}
//主函数
void main(void)
{
  unsigned int i;
 IE = 0x81;     //外部中断0寄存器设置
 IT0 = 0;     //低电平触发中断
 while(1)
 {     
 
  for(i = 0;i < 30000;i++); //   延时
  if(INT0 == 1)     //   INT0为1(即CS为1),拨码开关全部处于断开状态,关闭所有LED
  {
    P0 = 0xff;
  }
 }
}
4、在proteus中新建仿真文件ex64.dsn,电路原理图如下所示

基于proteus的51单片机仿真实例七十六、8-3编码芯片74HC148应用实例
5、将ex64.hex文件载入at89c51中,启动仿真,按动拨码开关,观察运行结果。下图是某一时刻程序运行结果

基于proteus的51单片机仿真实例七十六、8-3编码芯片74HC148应用实例