首页 > 其他分享 >位带操作-单通信DHT11接收单个bit

位带操作-单通信DHT11接收单个bit

时间:2024-07-13 10:32:35浏览次数:12  
标签:位带 0000 000 1101 bit data DHT11

目录

位带操作-单通信DHT11接收单个bit操作详解

单总线协议:只有一条数据线,数据只能以比特流的方式传输,所以就会涉及到MSB(高位先出)还是LSB(低位先出),传输方向是半双工通信

点击查看整体代码
//DHT11读取1bit,循环8次,合成1字节  DHT11提供的是以MSB
uint8_t DHT11_ReadByte(void)
{
	int i = 0;
	//1.定义变量并初始化
	uint8_t data = 0;  // 0000 0000
	
	//2.循环8次,接收一个字节
	for(i = 0;i < 8;i++)
	{
		data <<= 1;
		data |= DHT11_ReadBit(); 
	} 
	
	return data;
}

解析位带操作

data <<= 1;

data |= DHT11_ReadBit();

假设DHT11发送的前8bit是 1101 1001 --- MSB

实际发送

实际发送

0000 000 1
0000 000 1
0000 000 0
0000 000 1
0000 000 1
0000 000 0
0000 000 0
0000 000 1
要取最后一个bit,合成一个字节

//1.定义变量并初始化
->data=0000 0000

第一步
				(data<<1) ->(0000 000)
(0000 0000)|= (0000 000 1)	  ->(0000 000 1)

第二步
				(data<<1) ->(0000 0010)
(0000 0010)|= (0000 000 1)	  ->(0000 001 1)

第三步
				(data<<1) ->(0000 0110)
(0000 0110)|= (0000 000 0)	  ->(0000 011 0)

第四步
				(data<<1) ->(0000 1100)
(0000 1100)|= (0000 000 1)	  ->(0000 1101)

省略。。。
第八步
				(data<<1) ->(1101 1000)
( 1101 1000 )|= (0000 000 1)	  ->(1101 1101)


参考李明轩老师第12天的笔记

标签:位带,0000,000,1101,bit,data,DHT11
From: https://www.cnblogs.com/shishusheng/p/18299731

相关文章

  • STM32驱动-DHT11(温湿度模块)
    STM32驱动-DHT11(温湿度模块)一、DHT11模块简介DHT11是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接......
  • RabbitMQ + JMeter组合,优化你的中间件处理方式!
     RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息中间件,它是基于Erlang语言编写的,并发能力强,性能好,是目前主流的消息队列中间件之一。 RabbitMQ的安装可参照官网(https://www.rabbitmq.com/),安装完以后启动管理服务,RabbitMQ提供强大的管理功能。 在使用Jmeter处理Rabbi......
  • .NET/C#、Netcore、数据库、Redis 、RabbitMQ&kafka、Docker ⾯试题汇总系列目录
    .NET/C#⾯试题汇总系列.NET/C#⾯试题汇总系列:ASP.NET常见面试题001.NET/C#⾯试题汇总系列:ASP.NET常见面试题002.NET/C#⾯试题汇总系列:ASP.NET常见面试题003.NET/C#⾯试题汇总系列:基础语法.NET/C#⾯试题汇总系列:ASP.NETMVC.NET/C#⾯试题汇总系列:多线程.NET/C#⾯......
  • C++ 中的 lowbit
    lowbit的定义首先了解lowbit的定义\(lowbit(n)\),为\(n\)的二进制原码中最低的一位\(1\)以及其后面的\(0\)所表示的数举个简单的例子:将\(10\)使用二进制表示为\(1010\)其中最低位的\(1\)为第2位(\(_{10}1_0\),从右往左数)此时\(lowbit(10)\)使用二进制表示为......
  • 12bit 两通道5.2G或单通道10.4G pcie采集卡
    12bit两通道5.2G或单通道10.4Gpcie采集卡是一款同时支持交流耦合与双极性宽带信号输入的高精度高速数据采集卡,它提供12位双通道5.2GS/s或单通道10.4GS,A/D采样变换,全功率模拟带宽(-3dB)8GHz。板载FPGA具备实时信号处理能力,板载DDR4内存容量达8GB,可以进行大数据量的实时信号处理,这......
  • Linux捣鼓记录:快速搭建alist+aria2+qbittorrent
    简介:使用docker-compose创建alistaria2qbittorrent服务,前置条件安装docker及docker-compose插件,docker镜像仓库访问不了,建议配置代理用来拉取镜像。一、确认路径,确认UIDGID,确认端口路径alist挂载路径:-/home/dalong/app/alist:/opt/alist/data-/home/dalong:/homearia......
  • 设置DepthBufferBits和设置DepthStencilFormat的区别
    1)设置DepthBufferBits和设置DepthStencilFormat的区别2)Unity打包exe后,游戏内拉不起Steam的内购3)Unity2022以上Profiler.FlushMemoryCounters耗时要怎么关掉4)用GoodSky资产包如何实现昼夜播发不同音乐功能这是第394篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答......
  • 利用SpringBoot+rabbitmq 实现邮件异步发送,保证100%投递成功
    在之前的文章中,我们详细介绍了SpringBoot整合mail实现各类邮件的自动推送服务。但是这类服务通常不稳定,当出现网络异常的时候,会导致邮件推送失败。本篇文章将介绍另一种高可靠的服务架构,实现邮件100%被投递成功。类似的短信自动发送等服务也大体相同。一、先来一张流程图......
  • 记一次springboot整合rabbitMQ的list序列化问题
    问题:平时传一个类的时候都会继承Serializable实现正确传输,这次我把list<Object>直接丢成了message,导致rabbitMQ不能序列化对象。报错org.springframework.amqp.rabbit.support.ListenerExecutionFailedException:Failedtoconvertmessage下面的整合步骤提供了解决方案:在发......
  • SpringBoot集成Rabbitmq快速启动示例
    RabbitMQ六种模式示例源码:ghdefe/rabbitmq-demo此项目分别演示六种模式:简单模式、工作模式、发布/订阅模式、路由模式、主题模式、RPC模式简单模式:生产者直接发送消息到队列、消费者直接消费队列、不经过交换机工作模式:与简单模式一致,只是变成多个消费者消费同一......