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

news2025/1/11 2:44:23

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.coloradmin.cn/o/1220918.html

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

相关文章

【入门篇】1.1 redis 基础数据类型详解和示例

文章目录 1. 简介2. Redis基础数据类型2.1 String类型场景示例常用命令示例 2.2 List类型场景示例 2.3 Set类型场景示例 2.4 Hash类型场景示例 2.5 Sorted Set类型 3. 使用Redis存储数据的注意事项1. 内存管理2. 数据持久化3. 高并发下的性能考量 4. 参考资料 1. 简介 Redis概…

springMvc中的拦截器【巩固】

先实现下想要的拦截器功能 package com.hmdp.utils;import com.hmdp.entity.User; import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Ht…

【SpringMvc】SpringMvc +MyBatis整理

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理 Java 框架 中 SpringMVC的知识点和值得注意的地方 &#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以关…

python_主动调用其他类的成员

# 主动调用其他类的成员 # 方式一: class Base(object):def f1(self):print("5个功能") class Foo(object):def f1(self):print("3个功能")# Base.实例方法(自己传self),与继承无关Base.f1(self)obj Foo() obj.f1()print("#"*20)# 方式二:按照类…

Rockdb简介

背景 最近在使用flink的过程中&#xff0c;由于要存储的状态很大&#xff0c;所以使用到了rockdb作为flink的后端存储&#xff0c;本文就来简单看下rockdb的架构设计 Rockdb设计 Rockdb采用了LSM的结构&#xff0c;它和hbase很像&#xff0c;不过严格的说&#xff0c;基于LS…

希亦ACE和小吉内衣洗衣机选哪个?两款洗衣机对比

内衣洗衣机可以称得上是实现幸福的小家电&#xff0c;它不仅懒人的福音还是我们打工人的福音&#xff0c;在每天下班之后可以有时间休息了&#xff0c;洗完澡还有要手洗内衣裤&#xff0c;真的很痛苦&#xff0c;拥有了内衣洗衣机简直是一件非常幸福的事情&#xff0c;但现在市…

wpf devexpress Property Grid创建属性定义

WPF Property Grid控件使用属性定义定义如何做和显示 本教程示范如何绑定WP Property Grid控件到数据和创建属性定义。 执行如下步骤 第一步-创建属性定义 添加PropertyGridControl组件到项目。 打开工具箱在vs&#xff0c;定位到DX.23.1: Data 面板&#xff0c;选择Prope…

HarmonyOS 实现底部导航栏

该功能实现需要Tabs、TabsController、TabContent、Column等组件 Tabs相当于Android中的BottomNavigationView TabContent相当于Android中的fragment TabBuilder内相当于每个Item Entry Component struct Main {public tabsController : object new TabsController()State c…

后端接口性能优化分析-多线程优化

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

微软 Gradle 强强联手,Gradle 构建服务器正式开源!

作者&#xff1a;Nick Zhu - Senior Program Manager, Developer Division At Microsoft 排版&#xff1a;Alan Wang Gradle 构建服务器 (Build Server for Gradle) 在九月份&#xff0c;我们宣布 Microsoft 和 Gradle 联手探索了一种基于 Build Server Protocol&#xff08;B…

用户运营:如何搭建用户分析体系

在运营的工作范畴中&#xff0c;用户运营是很重要的一个环节&#xff0c;甚至有公司会设置专门的“用户运营”岗位。 用户运营的价值体现在多个方面&#xff0c;不仅可以帮助引流、吸引更多用户使用产品&#xff0c;在用户正式使用产品之后的运营则更为重要。通过日常用户运营&…

思源笔记的优缺点 vs Obsidian vs Logseq vs Trilium

新用户对思源笔记的印象。&#xff08;PS&#xff1a;两年前我试用过思源笔记&#xff0c;被卡顿劝退了&#xff09; 优点 相比obsidian&#xff0c; 可在文档树拖拽 拖拽调整笔记顺序 拖拽使一个笔记成为另一个笔记的子笔记&#xff0c;树状结构 设置-文档树&#xff0c;默认…

儿童玩具上架亚马逊和国际站及TEMU平台CPC认证

儿童玩具上架亚马逊和国际站及TEMU平台CPC认证办理 最近相当火爆的玩具重力萝卜刀也在全网做屏霸&#xff0c;听上去像是一种能让你在虚拟世界中模拟挖矿的神奇工具。但实际上&#xff0c;它是一种新型玩具&#xff0c;不仅具备重力感应功能&#xff0c;还可以进行切割和挖掘。…

合璧之光,共创辉煌|明道云伙伴大会2023圆满结束

2023年11月3日至11月4日&#xff0c;“合璧之光明道云伙伴大会2023”在上海星河湾酒店顺利举行&#xff0c;报名参会人数超过1800人。大会邀请到明道云标杆客户及合作伙伴分享组织落地零代码的经验及各行业领域解决方案&#xff0c;包括越秀集团、豫园股份、远大医药&#xff0…

CTF-虚拟机——【前置知识三】

文章目录 内存虚拟化常见缩写虚拟机内存访问原理影子页表扩展页表VPID&#xff08;Virtual Processor Identifier&#xff09;&#xff1a;TLB&#xff08;Translation Lookaside Buffer&#xff09;资源优化 内存虚拟化 能够提供在Guest机制中识别为从零开始的连续的物理地址…

redis运维(九)字符串(二)字符串过期时间

一 字符串过期时间 细节点&#xff1a; 注意命令的入参和返回值 ① 再谈过期时间 说明&#xff1a; 设置key的同时并且设置过期时间,是一个原子操作 ② ttl 检查过期时间 ③ persist 删除过期时间 ④ redis 删除过期key的机制 ⑤ 惰性删除 惰性理解&#xff1a;让过期…

redis运维(八)数据类型(一)字符串

一 字符串 说明&#xff1a; 不需要精通,但是得有一个粗略的认识,然后利用help command查看具体使用仅做记录查询 ① 基础概念 说明&#xff1a; ex是用来收敛内存使用率备注&#xff1a; 早期set是不带ex的默认&#xff1a; 不设置ex,是常驻内存 key和value的命名规范 …

浅谈基于云计算的环境智能监控系统

随着经济的飞速发展&#xff0c;环境污染也越来越严重&#xff0c;环境监控成为了政府与社会关注的焦点。本文提出了一种基于云计算的环境智能监控系统——EasyCVR&#xff0c;该系统综合应用了传感器、云计算、大数据、人工智能等技术&#xff0c;具有实时、准确、高效的监控能…

Docker安装MinIO遇到的问题汇总——持续更新中

文章目录 Docker安装MinIO遇到的坑前言问题1&#xff1a;执行docker run报错Error response from daemon问题2&#xff1a;启动MinIO容器浏览器无法访问问题3&#xff1a;上传文件报错InvalidResponseException问题4&#xff1a;上传文件报错Connection refused最终的启动指令问…

Linux系统(CentOS7)上安装MYSQL8.x

Linux系统是CentOS7版本&#xff0c;今天在新电脑上安装MYSQL&#xff0c;跟着网上的文章&#xff0c;尝试了好几次&#xff0c;都是启动失败&#xff0c;删了安&#xff0c;安了删&#xff0c;搞了一下午&#xff0c;头昏脑胀&#xff0c;网上的一些文章太乱了&#xff0c;每种…