STC8H8K64U——I2C(PCF8591 查询方式)

2023-11-24 19:59

本文主要是介绍STC8H8K64U——I2C(PCF8591 查询方式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

i2c.c

查询方式与中断方式的代码区别不大。
i2c.h 和 main. c文件

#include "i2c.h"void I2C_Init(void)            //I2C初始化
{P_SW2 |= EAXFR;              //XFR寄存器使能P_SW2 |= I2C_S;              //I2C引脚I2CCFG = ENI2C|MSSL|MSSPEED; //允许I2C功能,主机模式I2CMSST = 0x00;   	
}	void I2C_Start(void)           //起始信号
{I2CMSCR = I2C_START;         //起始命令I2C_Wait();                  //等待MSCMD命令执行完毕
}void I2C_Stop(void)             //终止信号
{I2CMSCR = I2C_STOP;           //停止命令I2C_Wait();                   //等待MSCMD命令执行完毕	
}void I2C_ACK_R(void)	          //接收应答信号	
{I2CMSCR = I2C_RECEVIVE_ACK ;  //接收 ACK 命令I2C_Wait();                   //等待MSCMD命令执行完毕	
}void I2C_ACK_S(bit A)	          //发送应答信号
{
/*发送"0101"命令到I2CMSCR寄存器的MSCMD位后,控制器会自动读取I2CMSST的MSACKO位的数据当作ACK数据发送到SDA。*/if(A == 1)I2CMSST |= MSACKO;          //非应答信号elseI2CMSST &= ~MSACKO; 		    //应答信号I2CMSCR = I2C_SEND_ACK ;      //发送 ACK 命令I2C_Wait();                   //等待MSCMD命令执行完毕	
}	void I2C_SendByte(unsigned char dt)  //发送数据
{I2CTXD = dt;                       //写数据到数据缓冲区I2CMSCR = I2C_SEND_DATA;           //发送数据命令I2C_Wait();                        //等待MSCMD命令执行完毕	
}unsigned char I2C_ReceiveByte(void)  //接收数据
{I2CMSCR = I2C_RECEVIVE_DATA;       //接收数据命令I2C_Wait();                        //等待MSCMD命令执行完毕return I2CRXD;
}void I2C_Wait(void) 
{/*主机模式的I2C控制器执行完I2CMSCR寄存器中MSCMD命令后,会产生中断信号,硬件自动将MSIF位置一,向CPU发出中断请求,响应中断后, MSIF位必须软件清零*/	while(!(I2CMSST & MSIF));I2CMSST &= ~MSIF;  //中断标志位清零	}

实物图

这篇关于STC8H8K64U——I2C(PCF8591 查询方式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/422475

相关文章

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然