多路开关状态指示

1.  实验任务

AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,P1.4-P1.7接了四个开关K1-K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。

2.  电路原理图

3.  系统板上硬件连线

(1) 把“单片机系统”区域中的P1.0-P1.3用导线连接到“八路发光二极管指示模块”区域中的L1-L4端口上;

(2) 把“单片机系统”区域中的P1.4-P1.7用导线连接到“四路拨动开关”区域中的K1-K4端口上;

4.  程序设计内容

(1)开关状态检测

对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相应的发光二极管指示,可以采用JB P1.X,REL或JNB P1.X,REL指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用MOV A,P1指令一次把P1端口的状态全部读入,然后取高4位的状态来指示。

(2)输出控制

根据开关的状态,由发光二极管L1-L4来指示,我们可以用SETB P1.X和CLR P1.X指令来完成,也可以采用MOV P1,#1111XXXXB方法一次指示。

5. 程序框图

6. 汇编源程序

方法一

ORG 00H
START: MOV A,P1
ANL A,#0F0H
RR A
RR A
RR A
RR A
ORl A,#0F0H
MOV P1,A
SJMP START
END

方法二

ORG 00H
START: JB P1.4,NEXT1
CLR P1.0
SJMP NEX1
NEXT1: SETB P1.0
NEX1: JB P1.5,NEXT2
CLR P1.1
SJMP NEX2
NEXT2: SETB P1.1
NEX2: JB P1.6,NEXT3
CLR P1.2
SJMP NEX3
NEXT3: SETB P1.2
NEX3: JB P1.7,NEXT4
CLR P1.3
SJMP NEX4
NEXT4: SETB P1.3
NEX4: SJMP START
END

7. C语言源程序

方法一

#include <AT89X51.H>
unsigned char temp;

void main(void)
{
while(1)
{
temp=P1>>4;
temp=temp | 0xf0;
P1=temp;
}
}

方法二

#include <AT89X51.H>

void main(void)
{
  while(1)
  {
    if(P1_4==0)
      {P1_0=0;}
    else
      {P1_0=1;}
    if(P1_5==0)
      {P1_1=0;}
    else
      {P1_1=1;}
    if(P1_6==0)
      {P1_2=0;}
    else
      {P1_2=1;}
    if(P1_7==0)
      {P1_3=0;}
    else
      {P1_3=1;}
  }
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/331420.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker安装Nginx并部署MySQL容器构建

一.MySQL容器的构建 1.创建MySQL根目录及配置文件夹&data文件夹 mkdir -p mysql/{conf,data} 2.上传配置文件 将配置文件上传到conf文件夹&#xff08;数据库配置文件已放到置顶资源中&#xff09; 3.命令构建MySQL容器 /soft/mysql/conf/my.cnf:/etc/my.cnf目录为我们…

electron+vite+vue3 快速入门教程

文章目录 前言一、electron是什么&#xff1f;二、electron 进程模型1.主进程2.渲染进程3.预加载脚本4.进程通信4.1 sendon&#xff08;单向&#xff09;4.2 invokehandle (双向)4.3 主进程向渲染进程发送事件 三、窗口创建与应用事件四、技术栈和构建工具五、electron-vite安装…

网络编程【1】

【 1 】什么是网络编程 网络编程是指通过计算机网络进行数据交换和通信的编程过程。它涉及到使用网络协议和通信接口&#xff0c;使不同计算机之间能够进行数据传输和通信。 总结&#xff1a; 网络编程的研究前提就是基于互联网 网络编程就是基于互联网写代码 【 2 】为什么…

当前vscode环境下 多进程多线程运行情况探究

我的代码 其中在“打开图片时”、“进入子进程之前”、“子进程join前”、“进入子进程区域后”&#xff0c;“子进程join后”、“进入子线程区域后”分别打印了进程线程的编号和数量。 # -*- coding: utf-8 -*-# Form implementation generated from reading ui file test2.…

【总结】Linux命令中文帮助手册

1. 为什么要总结Linux命令中文帮助手册 Linux 官方并不提供中文的 help、man 帮助手册。网络上已有的前人翻译过的中文手册版本比较老&#xff0c;且翻译存在误差。从记忆角度来看&#xff0c;Linux 很多命令都不一定记得住详细的用法&#xff0c;易遗忘&#xff0c;缺少经验总…

commvault学习(5):在linux上安装cv客户端

我的环境&#xff1a; 服务器&#xff08;同时装有CS、MA&#xff09;&#xff1a;windows server2008r2 客户端&#xff1a;两台centos7 1.为两台centos7配置静态ip 使得2者可以与服务器ping通 2.在两台centos7上预留出足够大的磁盘空间以存放安装文件 我是在/mnt下创建了…

RTT使用遇见的坑

栈线程的栈溢出&#xff1a; bus fault: SCB_CFSR_BFSR:0x82 PRECISERR 解决办法&#xff1a; 参考博客&#xff1a;https://blog.csdn.net/a6662580/article/details/124957479

吃瓜教程Task1:概览西瓜书+南瓜书第1、2章

由于本人之前已经学习过西瓜书&#xff0c;本次学习主要是对以往知识的查漏补缺&#xff0c;因此本博客记录了在学习西瓜书中容易混淆的点以及学习过程中的难点。更多学习内容可以参考下面的链接&#xff1a; 南瓜书的地址&#xff1a;https://github.com/datawhalechina/pumpk…

服务器管理平台开发(4)- 信息采集上报

信息采集上报 通过Shell脚本实现服务器CPU、内存、PCI设备、登录日志等信息定时采集和自主上报Shell脚本比Agent更加轻量化&#xff0c;无侵入式实现定时采集、自主上报&#xff0c;对业务几乎无影响&#xff0c;用户侧无感知 1、定时上报 搭建httpd文件服务器后&#xff0c;…

Gateway网关限流

在高并发的系统中&#xff0c;往往需要在系统中做限流&#xff0c;一方面是为了防止大量的请求使服务器过载&#xff0c;导致服务不可用&#xff0c;另一方面是为了防止恶意网络攻击 文章目录 一、常见限流场景1.1 限流的对象1.2 限流的处理1.3 限流的架构 二、常见的限流算法2…

华为网络设备文件传输FTP配置

R2配置 ftp server enable aaa local-user ftp-client password cipher Huawei123local-user ftp-client privilege level 15local-user ftp-client ftp-directory flash:/local-user ftp-client service-type ftpinterface GigabitEthernet0/0/0ip address 10.0.12.2 255.255.…

【VMware】安装和卸载VMware的Ubuntu

安装视频&#xff1a;&#xff08;全程无废话&#xff09; https://www.bilibili.com/video/BV1W34y1k7ge/?spm_id_from333.337.search-card.all.click&vd_sourcefb8dcae0aee3f1aab700c21099045395

如何使用VNC实现Win系统远程桌面Ubuntu图形化界面【内网穿透】

文章目录 推荐前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 …

k8s-kubectl常用命令

一、基础命令 1.1 get 查询集群所有资源的详细信息&#xff0c;resource包括集群节点、运行的Pod、Deployment、Service等。 1.1.1 查询Pod kubectl get po -o wid 1.1.2 查询所有NameSpace kubectl get namespace 1.1.3 查询NameSpace下Pod kubectl get po --all-namespaces…

第二百七十三回

文章目录 1. 概念介绍2. 方法与信息2.1 获取方法2.2 详细信息 3. 示例代码4. 内容总结 我们在上一章回中介绍了"蓝牙综合示例"相关的内容&#xff0c;本章回中将介绍如何获取设备信息.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中获…

Power Designer 连接 PostgreSQL 逆向工程生成pd表结构操作步骤以及过程中出现的问题解决

一、使用PowerDesigner16.5 链接pg数据库 1.1、启动PD.选择Create Model…。 1.2、选择Model types / Physical Data Model Physical Diagram&#xff1a;选择pgsql直接【ok】 1.3、选择connect 在工具栏选择Database-Connect… 快捷键&#xff1a;ctrlshiftN.如下图&#xff…

C语言——大头记单词

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 每一发奋努力的背后&#xff0c;必有加…

Flink1.17 基础知识

Flink1.17 基础知识 来源&#xff1a;B站尚硅谷 目录 Flink1.17 基础知识Flink 概述Flink 是什么Flink特点Flink vs SparkStreamingFlink的应用场景Flink分层API Flink快速上手创建项目WordCount代码编写批处理流处理 Flink部署集群角色部署模式会话模式&#xff08;Session …

解密PGSQL数据库引擎:探索数据世界的秘密

目录 1、引言 1.1 什么是PGSQL数据库引擎 1.2 数据库引擎的重要性 1.3 解密PGSQL数据库引擎的意义 2、PGSQL数据库引擎的基础知识 2.1 什么是数据库引擎 2.2 PGSQL数据库引擎的历史和发展 2.3 PGSQL数据库引擎的特点和优势 2.4 PGSQL数据库引擎的架构和组件 3、PGSQL…

数据库(基础理论+MySQL安装和部署)

目录 基础理论 1.1 什么是数据库&#xff1f; 1.2 DBMS数据库管理系统 1.3 数据库与文件系统的区别 1.4 数据库的发展和规划 1.5 常见的数据库 1.5.1 关系型数据库 1.5.2 非关系型数据库 1.6 DBMS支持的数据模型 层次模型 网状模型 关系模型 面向对象模型&#xf…