51单片机应用从零开始(六)·逻辑运算

51单片机应用从零开始(一)-CSDN博客

51单片机应用从零开始(二)-CSDN博客

51单片机应用从零开始(三)-CSDN博客

51单片机应用从零开始(四)-CSDN博客

51单片机应用从零开始(五)·加减乘除运算-CSDN博客

详解 KEIL C51 软件的使用·建立工程-CSDN博客

详解 KEIL C51 软件的使用·设置工程·编绎与连接程序-CSDN博客

目录

1.  P0 口显示逻辑ʺ与ʺ运算结果

2.  P0 口显示条件运算结果

3.  P0 口显示按位ʺ异或ʺ运算结果

4.  用 P0 显示左移运算结果

5. ʺ万能逻辑电路ʺ实验

6.  总结


1.  P0 口显示逻辑ʺ与ʺ运算结果

        逻辑运算是根据对真值的操作来判断命题的真假关系的运算。常见的逻辑运算包括:

  1. 非(not)运算:对命题取反,表示命题的否定。例如,“今天不下雨”。

  2. 与(and)运算:当且仅当所有命题都为真时,结果为真。例如,“今天既不下雨,又不刮风”。

  3. 或(or)运算:当且仅当至少有一个命题为真时,结果为真。例如,“今天下雨或刮风”。

  4. 异或(xor)运算:当且仅当有且仅有一个命题为真时,结果为真。例如,“今天只下雨或只刮风”。

  5. 蕴含(implication)运算:当且仅当条件命题为真时,结果命题为真。例如,“如果今天下雨,那么地面就会湿润”。

  6. 双向蕴含(bi-implication)运算:当且仅当条件命题和结果命题都为真或都为假时,结果命题为真。例如,“今天下雨当且仅当地面会湿润”。

C语言中的逻辑运算符包括:

  1. 逻辑与运算符:&&(也可用and表示)

  2. 逻辑或运算符:||(也可用or表示)

  3. 逻辑非运算符:!

        这些逻辑运算一般用于判断语句中的条件表达式,例如在if语句和while语句中。逻辑运算的结果通常是一个布尔值,即true或false。在C语言中,true用1表示,false用0表示。

#include<reg51.h> //包含单片机寄存器的头文件
void main(void) 
{ P0=(4>0)&&(9>0xab);//将逻辑运算结果送 P0 口while(1) ; //设置无限循环,防止程序“跑飞”
}

2.  P0 口显示条件运算结果

        C语言中的条件运算使用三目运算符(?:)来表示。其语法形式如下:

condition ? expression1 : expression2

        如果condition为真,则返回expression1的值,否则返回expression2的值。

#include<reg51.h> //包含单片机寄存器的头文件
void main(void) 
{ P0=(8>4)?8:4;//将条件运算结果送 P0 口,P0=8=0000 1000B while(1) ; //设置无限循环,防止程序“跑飞”
}

        三目运算符是一种简化条件判断语句的方式,也被称为“三元表达式”。它的语法结构如下:

表达式1 ? 表达式2 : 表达式3

        如果表达式1的值为真(即非零),则整个表达式的值为表达式2的值,否则为表达式3的值。可以理解为,如果表达式1成立,执行表达式2,否则执行表达式3。三目运算符通常用于条件赋值或条件返回语句的简化,可以使代码更加简洁和易读。

3.  P0 口显示按位ʺ异或ʺ运算结果

        按位"异或"运算是指对两个二进制数的每一位进行比较,相同则结果为0,不同则结果为1。例如,对于二进制数1010和1101进行按位"异或"运算,结果为0111。

符号表示为"^",例如a^b表示对a和b进行按位"异或"运算。

具体表现如下所示:

操作数A操作数B运算结果
000
011
101
110
#include<reg51.h> //包含单片机寄存器的头文件
void main(void) 
{ P0=0xa2^0x3c;//将条件运算结果送 P0 口,P0=8=0000 1000B while(1) ; //设置无限循环,防止程序“跑飞”
}

4.  用 P0 显示左移运算结果

        左移运算是一种位运算,用于将一个二进制数的所有位向左移动指定的位数,同时在右侧补上零。左移运算符是“<<”,例如:

a = 3 << 2

        在这个例子中,将数字3左移2位,结果为12。原因是将数字3转换为二进制数为“11”,向左移动2位后变成“1100”,即12的二进制表示。

#include<reg51.h> //包含单片机寄存器的头文件
void main(void) 
{ P0=0x3b<<2;//将左移运算结果送 P0 口,P0=1110 1100B=0xec while(1) ; //无限循环,防止程序“跑飞”
}

5. ʺ万能逻辑电路ʺ实验

        万能逻辑电路(Universal Logic Gate,简称ULG),顾名思义是一种具有多种基本逻辑运算功能的电路。在实验中,可以使用多种逻辑门电路的组合,实现任意逻辑函数的计算,因此也被称为“可编程逻辑门电路”(Programmable Logic Gate,简称PLG)。

实验具体流程:

  1. 准备实验器材和材料,包括逻辑门电路模块、电源、通用电路板、杜邦线、开关和数码管等。

  2. 根据所需逻辑函数的真值表,确定逻辑门的类型和连接方式,并用杜邦线将它们接在通用电路板上。

  3. 测试电路的正确性,将输入信号带入电路,观察输出结果,与真值表进行比对,确保电路计算正确。

  4. 可以将多个逻辑门电路模块和其他电路模块组合使用,实现更复杂的逻辑计算。

  5. 最后,将逻辑函数的结果显示在数码管上,以检查电路设计的正确性。

通过实验,可以更好地了解逻辑门电路的原理和工作方式,掌握逻辑设计的基本方法和技能。

#include<reg51.h> //包含单片机寄存器的头文件
sbit F=P1^4; //将 F 位定义为 P1.4 
sbit X=P1^5; //将 X 位定义为 P1.5 
sbit Y=P1^6; //将 Y 位定义为 P1.6 
sbit Z=P1^7; //将 Z 位定义为 P1.7 
void main(void) 
{ while(1) { F=((~X)&Y)|Z; //将逻辑运算结果赋给 F ; } 
}

6.  总结

用右移运算流水点亮 P1 口 8 位 LED
#include<reg51.h> //包含单片机寄存器的头文件
/***************************** 
函数功能:延时一段时间
*****************************/ 
void delay(void) 
{ unsigned int n; for(n=0;n<30000;n++) ; 
} 
/***************************** 
函数功能:主函数
*****************************/ 
void main(void) 
{ unsigned char i; while(1) { P1=0xff; delay(); for(i=0;i<8;i++)//设置循环次数为 8 { P1=P1>>1; //每次循环 P1 的各二进位右移 1 位,高位补 0 delay(); //调用延时函数} } }

更多推荐:

时光の尘_千题千解·Java面试宝典,Linux学习,C++学习-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年亚太杯数学建模思路 - 案例:FPTree-频繁模式树算法

文章目录 赛题思路算法介绍FP树表示法构建FP树实现代码 建模资料 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模式树算法&#…

操作系统:输入输出管理(二)磁盘调度算法

一战成硕 5.3 磁盘固态硬盘5.3.1 磁盘5.3.2 磁盘的管理5.3.3 磁盘调度算法 5.3 磁盘固态硬盘 5.3.1 磁盘 磁盘是表面涂有磁性物质的物理盘片&#xff0c;通过一个称为磁头的导体线圈从磁盘存取数据。在读写操作中&#xff0c;磁头固定&#xff0c;磁盘在下面高速旋转。磁盘盘…

第四代智能井盖传感器,万宾科技助力城市安全

在迈向更为智能化、相互联系更为紧密的城市发展过程中&#xff0c;智能创新产品无疑扮演了一种重要的角色。智能井盖传感器作为新型科学技术产物&#xff0c;不仅解决传统井盖管理难的问题&#xff0c;也让城市变得更加安全美好&#xff0c;是城市生命线的一层重要保障。这些平…

人工智能引领环境保护的新浪潮:技术应用及其影响

在全球范围内&#xff0c;环境保护已经成为一个迫切的话题。随着人工智能技术的发展&#xff0c;它开始在环境保护领域扮演越来越重要的角色。AI不仅能够帮助更有效地监测环境变化&#xff0c;还能提出解决方案来应对环境问题。 污染监测与控制&#xff1a; AI系统可以分析来自…

hadoop 大数据环境配置 配置jdk, hadoop环境变量 配置centos环境变量 hadoop(五)

1. 遗漏一步配置系统环境变量&#xff0c;下面是步骤&#xff0c;别忘输入更新系统环境命令 2. 将下载好得压缩包上传至服务器&#xff1a; /opt/module 解压缩文件存放地址 /opt/software 压缩包地址 3. 配置环境变量&#xff1a; 在/etc/profile.d 文件夹下创建shell文件 …

Python---列表 集合 字典 推导式(本文以 列表 为主)

推导式&#xff1a; 推导式comprehensions&#xff08;又称解析式&#xff09;&#xff0c;是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列&#xff08;一个有规律的列表或控制一个有规律列表&#xff09;的结构体。 共有三种推导&#xff1a;列表…

【带头学C++】----- 六、结构体 ---- 6.7 结构体的对齐规则

6.7 结构体的对齐规则 6.7.1 知识点引入 6.7.2 结构体自动对齐规则 1、确定分配单位(一行分配多少字节) 结构体中最大的基本类型长度决定 2、确定成员的偏移量 成员偏移量成员自身类型的整数倍 需要根据你所在平台的位数&#xff0c;32位和64为类型大小不一样。cpu一次读取…

前段-用面向对象的方式开发一个水管小鸟的游戏

首先准备好各类空文件 index.js css html 和图片 图片是下面这些&#xff0c;如果没有的可在这里下载 2 开发开始 好了&#xff0c;基础准备工作完毕&#xff0c;开发开始&#xff0c; 首先&#xff0c;先把天空&#xff0c;大地&#xff0c;小鸟的盒子准备好&#xff0c;并…

Android studio配置Flutter开发环境报错问题解决

博主前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住也分享一下给大家 &#x1f449;点击跳转到教程 报错问题截图 报错原因已经给出&#xff1a; You need Java 11 or higher to build your app with this version of G…

【智能家居】4、智能家居框架设计和代码文件工程建立

目录 一、智能家居项目框架 二、智能家居工厂模式示意 三、代码文件工程建立 SourceInsight创建新工程步骤 一、智能家居项目框架 二、智能家居工厂模式示意 三、代码文件工程建立 创建一个名为si的文件夹用于保存SourceInsight生成的文件信息&#xff0c;然后在SourceInsig…

DocCMS keyword SQL注入漏洞复现 [附POC]

文章目录 DocCMS keyword SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 DocCMS keyword SQL注入漏洞复现 [附POC] 0x01 前言 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测…

【超好用的工具库】hutool-all工具库的基本使用

简介&#xff08;可不看&#xff09;&#xff1a; hutool-all是一个Java工具库&#xff0c;提供了许多实用的工具类和方法&#xff0c;用于简化Java开发过程中的常见任务。它包含了各种模块&#xff0c;涵盖了字符串操作、日期时间处理、加密解密、文件操作、网络通信、图片处…

ZYNQ7000---FLASH读写

提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Flash是什么&#xff1f;二、Flash的分类1、内部结构&#xff08;接口&#xff09;区分&#xff1a;2、外部接口区分&#xff1a;SPIQPSI Flash: QSPI 控制…

京东数据挖掘(京东数据采集):2023年Q3电脑行业数据分析报告

近年来&#xff0c;在远程办公、远程教育等需求的刺激下&#xff0c;电脑的销售增长较为显著。不过&#xff0c;随着市场的成熟乃至饱和&#xff0c;电脑销售市场也逐渐出现增长困难、需求疲软等问题。 2023年第三季度&#xff0c;电脑市场的出货量同比下滑。根据鲸参谋电商数据…

德迅云安全为您介绍关于抗D盾的一些事

抗D盾概述&#xff1a; 抗D盾是新一代的智能分布式云接入系统&#xff0c;接入节点采用多机房集群部署模式&#xff0c;隐藏真实服务器IP&#xff0c;类似于网站CDN的节点接入&#xff0c;但是“抗D盾”是比CDN应用范围更广的接入方式&#xff0c;适合任何TCP 端类应用包括&am…

GB28181 编码规则说明

背景&#xff1a; GB/T28181-2011 《安全防范视频监控联网系统信息传输、交换、控制技术要求》中规定了联网系统应对前端设备、监控中心设备、用户终端ID进行统一编码,该编码具有全局唯一性。这就是国标编码。编码分20位和18位&#xff0c;其中18位编码已经淘汰。下文中&#…

搭建yum源并定时同步

一 、安装yum源 1-准备yum目录 cd /data/www/html createrepo -v ./目录 2-安装服务 yum -y install httpd 3-配置服务 /etc/httpd/conf/httpd.conf 4.配置/etc/yum.repo.d/local.rpeo 二、定时更新yum源 #1. 同步整个源到指定目录 [rootV10SP1-1 pac]# reposync -p /root/…

python 随机数生成

生成随机整数 使用 randint() 函数可以生成指定范围内的随机整数。 import random # 生成1到10之间的随机整数 random_int random.randint(1, 10) print(random_int) 生成随机浮点数 random() 方法用于生成 0 到 1 之间的随机浮点数。 import random # 生成0到1之间…

[msg_msg] corCTF2021 -- fire_of_salvation

前言 msg_msg 是 kernel pwn 中经常用作堆喷的结构体. 其包含一个 0x30 大小的 header. 但 msg_msg 的威力远不如此, 利用 msg_msg 配合其他堆漏洞可以实现任意地址读写的功能. 程序分析 本题给了源码, 可以直接对着源码看. 并且题目给了编译配置文件, 所以可以直接编译一个…

Linux/麒麟系统上部署Vue+SpringBoot前后端分离项目

目录 1. 前端准备工作 1.1 在项目根目录创建两份环境配置文件 1.2 环境配置 2. 后端准备工作 2.1 在项目resources目录创建两份环境配置文件 2.2 环境配置 3. 前后端打包 3.1 前端打包 3.2 后端打包 4、服务器前后端配置及部署 4.1 下载、安装、启动Nginx 4.2 前端项目部署…