当前位置: 首页 > news >正文

74LS148实现优先权管理

0. 74LS148简介

74LS148是优先权编码器,其引脚图如图1所示,真值表如表1所示。

                    图1 74LS148引脚图

                                                                        表1   真值表

1. 任务

74LS148引脚GS接单片机引脚INT0,当有中断请求时,读取端口P2,查询优先权最高的中断源(闭合按键)的编号A2A1A0,并把编号在数码管上显示。不断查询,显示器显示的数字是优先权最高的中断源的编号。当P3.2引脚变为高电平,所有的中断请求都服务完毕,显示P,查询结束。

2. 电路图如图2所示。

  图2  电路图

3. 实现代码

#include <reg51.h>
unsigned char status;
bit flag;
sbit P27=P2^7;
sbit P32=P3^2;
unsigned char code led_mod[]={0x3f,0x06,0x5b,0x4f,
                                                   0x66,0x6d,0x7d,0x07};

void service_int0(void) interrupt 0 
    {
        flag = 1;   //标志位为1有中断
    }

void main(void) 
    {
        IT0 = 1;        //中断设置
        EX0 = 1;
        EA = 1;
        P0 = 0x40;      //起始显示-
        P27=0;
        
       for(;;) 
       {
         if(flag) 
         {
            status = ~P2 & 0x07;//取反屏蔽高5位,获得中断源序号
            switch(status) 
            {
             case 0: P0 = led_mod[status]; break;
             case 1: P0 = led_mod[status]; break;
             case 2: P0 = led_mod[status]; break;
             case 3: P0 = led_mod[status]; break;
             case 4: P0 = led_mod[status]; break;
             case 5: P0 = led_mod[status]; break;
             case 6: P0 = led_mod[status]; break;
             case 7: P0 = led_mod[status]; break;
            } 
           if(P32==1) {flag=0;P0 =0x73;}
         }
      }
  }
4. 仿真

按键K0、K3和K7都按下时,显示编号7,如图3所示。

                         图3  显示闭合按键K7的编号7

当按键K7断开后,显示按键K3的编号3,如图4所示。

               图4  显示闭合按键K3的编号3

当按键K3断开后,显示按键K0的编号0,如图5所示。

        图5  显示闭合按键K0的编号0

当没有按键闭合时,INT0为高电平,显示字符P,如图6所示。

                图6  中断完成,显示字符P


http://www.mrgr.cn/news/93785.html

相关文章:

  • Python asyncIO 面试题及参考答案 草
  • 《C陷阱与缺陷》读书笔记(一)
  • 如何利用DeepSeek+OCR技术打造一款AI投标工具:自动解析招标文件并生成投标标书的工具?
  • 初识大模型——大语言模型 LLMBook 学习(一)
  • 利用pdf.js+百度翻译实现PDF翻译,创建中文PDF
  • 【UCB CS 61B SP24】Lecture 28 - Tries 学习笔记
  • Java多线程与高并发专题——什么是阻塞队列?
  • Linux中的TCP编程接口基本使用
  • 【开源界的Manus替代战:模块化设计 vs 跨平台实战 vs 全能开发,谁主沉浮?】
  • HTML5(Web前端开发笔记第一期)
  • Vue使用jsts,将wkt转为geojson
  • 微服务与消息队列RabbitMQ
  • Windows控制台函数:控制台窗口设置函数system(“mode con ...“)
  • 【Python】omegaconf 用法详解
  • 深入解析:(基础篇)Linux中KVM虚拟化技术
  • JU TPS研究笔记
  • 蓝桥云客 拔河
  • 【Go学习实战】03-2-博客查询及登录
  • rpc和proto
  • 【向量模型】 开源通用向量模型BGE (BAAI General Embedding)