16F877A和24C02通信汇编语言,pic单片机IIC通信读24C02程序例 16F877A 主频4M

#define _iic_h_//pic单片机IIC通信初始化函数声明

void iiccsh(void);

//pic单片机IIC通信读外围设备函数声明

//功能:传送一个8位地址,返回一个8位数据

unsigned char iicread(unsigned char data);

//pic单片机IIC通信给外围器件发送函数声明

//功能:传送一个8位地址,传送一个8位数据或指令

void iicwrite(unsigned char diz,unsigned char data);

#endif 文本名为 iic.c#ifndef _iic_h_ //立即写,立即读,在写读之间要有一定的延时(unsigned int sdf; sdf=400; while(sdf)--sdf;)

#define _iic_h_

#include//pic单片机IIC通信初始化函数

void iiccsh(void)

{

TRISC3=1;

TRISC4=1; //PIC单片机(对16F877A单片机而言IIC通信是RC3和RC4引脚)IIC通信时时钟引脚和数据引脚要设置成输入

SSPCON=0X28; //SSPCON同步串口控制寄存器设置成IIC通信功能使能和单片机主控方式

SSPCON2=0; //SSPCON2同步串口控制寄存器置0

SSPSTAT=0X80; //SSPSTAT同步串口状态寄存器设置成采用标准S模式(100Kb/s)和输入电平满足IIC总线标准

SSPADD=9; //SSPADD iic通信波特率寄存器

}

//pic单片机IIC通信读外围设备函数

//功能:传送一个8位地址,返回一个8位数据

unsigned char iicread(unsigned char address) //address位

{

unsigned char data;

SSPIF=0;

SEN=1; //在SDA和SCL线上建立和发送一个启动信号时序

while(!SSPIF); //判断是启动信号否发送完毕,SSPIF为1的时候是真 为0的时候是假 !SSPIF(1)为非真,为假退出语句

SSPIF=0; //软件清零 不会自动清零

SSPBUF=0XA0; //发送外设IIC器件地址和写信号

while(!SSPIF);

SSPIF=0;

SSPBUF=address; //发送要读外设IIC器件数据的地址

while(!SSPIF); //判断是否发送完毕

SSPIF=0;

RSEN=1; //发送启动重启信号

while(!SSPIF);

SSPIF=0;

SSPBUF=0XA1; //发送外设IIC器件地址和读数据信号

while(!SSPIF); //每发送一个数据都要检测是否成功

SSPIF=0;

RCEN=1; //设置读允许

while(SSPIF==0);

data=SSPBUF;

// while(SSPIF==0);

SSPIF=0;

ACKDT=0; //写入应答信号

ACKEN=1; //发送应答信号

while(!SSPIF);

SSPIF=0;

RCEN=0;

PEN=1; //在SDA和SCL线上建立和发送一个停止信号时序

while(!SSPIF); //如果收到停止信号同样会置位

SSPIF=0;

return(data);

}

//pic单片机IIC通信给外围器件发送函数声明

//功能:传送一个8位地址,传送一个8位数据或指令

void iicwrite(unsigned char diz,unsigned char data)

{

SSPIF=0;

SEN=1; //在SDA和SCL线上建立和发送一个启动信号时序

while(!SSPIF); //判断是启动信号否发送完毕,SSPIF为1的时候是真 为0的时候是假 !SSPIF(1)为非真,为假退出语句

SSPIF=0; //软件清零 不会自动清零

SSPBUF=0XA0; //发送外设IIC器件地址和写信号

while(!SSPIF); //判断是否发送完毕

SSPIF=0;

SSPBUF=diz; //发送要读外设IIC器件数据的地址

while(!SSPIF); //每发送一个数据都要检测是否成功

SSPIF=0;

SSPBUF=data; //发送要读外设IIC器件要存储的数据或命令

while(!SSPIF); //每发送一个数据都要检测是否成功

SSPIF=0;

PEN=1; //在SDA和SCL线上建立和发送一个停止信号时序

while(!SSPIF); //如果收到停止信号同样会置位

SSPIF=0;

}

#endif

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

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

相关文章

如何从XMLHttpRequest创建自定义获取API

What is your worst nightmare?你最可怕的噩梦是什么? That sounded dark, but it’s not a rhetorical question. I really want to know because I am about to tell you mine. Along the way, we will learn some things like how the fetch API works and als…

leetcode637. 二叉树的层平均值

给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。示例 1:输入:3/ \9 20/ \15 7 输出:[3, 14.5, 11] 解释: 第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。/*** Definition for a b…

5.3 上午

观看英语课程——《恋练有词》 学习Linux 转载于:https://www.cnblogs.com/bgd140206110/p/6801164.html

AD库转换为KiCAD库的方法

AD库转换为KiCAD库的方法 参照博主另外一篇文档: AD转换为KiCAD的方法,点击此处转载于:https://www.cnblogs.com/zhiqiang_zhang/p/11109560.html

遗传算法求解装箱问题c语言,求解装箱问题的遗传算法-南昌航空大学期刊网.pdf...

求解装箱问题的遗传算法-南昌航空大学期刊网1998 2 Journal of Nanchang Institute of Aeronautical Technology 21998方 平    李 娟( 南昌航空工业学院)  ( 西北工业大学): ( Bin Packing) ,, , D( irst it De-creasing) ,: ; ; ;: TP301. 6( )( Bin Packing) , :1 2 …

mysql索引随记

为什么80%的码农都做不了架构师?>>> 先了解下Btree:https://my.oschina.net/u/3646190/blog/1593094 为什么每个数据项,即索引字段要尽量的小,比如int占4字节,要比bigint8字节少一半? 通过上面…

leetcode79. 单词搜索(回溯算法)

给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: board [ [‘A’,‘…

react钩子_迷上了钩子:如何使用React的useReducer()

react钩子So the React Conference just happened and as always something new happened. Hooks happened! The React team talked about suspense, lazy loading, concurrent rendering, and hooks :D.因此,React会议刚刚发生,并且一如既往地发生了一些…

开发注意事项

明确需求 - 沟通 - 定好上下游接口 次序乱不得转载于:https://www.cnblogs.com/zslzz/p/6802437.html

c语言写桌面程序unity,Unity和iOS原生界面交互示例

注意上面的Main方法中出现的UnityAppController,该类就是作为控制类来实现Unity在iOS上显示的功能,在Main方法中就是将该控制器作为参数传递,即Main方法之后就会进入该类执行。所以这是我们进入到UnityAppController.mm,来查看该类…

oracle审计实施

1、语句审计 Audit session; Audit session By ; 与instance连接的每个会话生成一条审计记录。审计记录将在连接时期插入并且在断开连接时期进行更新。 保留有关会话的信息比如连接时期断开连接时期处理的逻辑和物理I/O,以及更多信息将存储在单独一条审计 记录中…

JPDA 架构研究5 - Agent利用环境指针访问VM (内存管理篇)

引入: 我们在前面说到JVMTI的客户端Agent,又提到Agent通过环境指针来访问VM。这里就来看看环境指针到底有多大的访问VM的能力。 分类1:内存管理 a.Allocate. 分配内存 jvmtiError Allocate(jvmtiEnv* env,jlong size,unsigned char** mem_ptr) size:分配…

leetcode94. 二叉树的中序遍历(dfs)

给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3]1\2/3输出: [1,3,2]代码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/ class …

vtk删除一个actor_如何构建一个基于actor的简单区块链

vtk删除一个actorScalachain is a blockchain built using the Scala programming language and the actor model (Akka Framework).Scalachain是使用Scala编程语言和参与者模型( Akka Framework )构建的区块链。 In this story I will show the development process to build…

java枚举的简单介绍

1.枚举,enum关键字,相当于public final static. 2.举例: 首先定义了一个名为spiciness的枚举类型。 public enum Spiciness {NOT, MILD, MEDIUM, HOT, FLAMING } 再来测试一下enum,这个测试方法表明它有tostring()方法&#xff0…

浏览器中插入富文本编辑器

常用的富文本编辑器有CKEditor、UEEditor、TinyEditor、KindEditor等、以下以kindeditor编辑器的使用为例。 1.官网下载KindEditor编辑器http://kindeditor.net/down.php, 当前最新版本为4.1.11,解压缩后放入项目的static目录,作为js插件引用…

获取Extjs文本域中的内容

经常在Ext.select()和Ext.query()等问题上纠结,今天终于有了点新认识: 需求,假设我们的页面上有个panel ,其id为clusterstab_edit_details,这个panel的内部有个textarea,这个textarea的name为editDetails_Description,那么我们有多少方法可以…

android触摸指纹会触发按键功能,Android P新特性:利用触摸指纹识别器能阻止手机息屏...

设想你正在阅读手机上的文章,突然间显示屏变暗了一点。显然,你设置的30秒或1分钟超时息屏对于常规使用来说还可以,但对于阅读纯文本片段,还远远不够。因此,这时你会轻触屏幕,可能会上下滑动,以防…

leetcode37. 解数独(hashmap+回溯)

编写一个程序,通过已填充的空格来解决数独问题。 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。 空白格用 ‘.’ 表示。 Note: 给定的数独序…

malloc、calloc、realloc和alloca各种的区别

需要先包含头文件 #include"malloc.h"malloc是标准的在堆中开辟新的空间比如char *pt(char *)malloc(10*sizeof(char));需要free(p)才会释放空间calloc也是开辟空间,但是使用方式不一样比如char *pt(char *)calloc(100, sizeof(char));然后用calloc开辟的…