24c16读写驱动程序
////////////////////////////////////////////////////////////////
//24c16读写驱动程序
//
//模块调用:
//读数据:read(unsigned int address)
//写数据:write(unsigned int address,unsigned char dd) dd为要写的 数据字节*/
////////////////////////////////////////////////////////////////
#define unsigned char Uchar
#define unsigned int Uint
sbit sda = P3^;
sbit scl = P3^;
sbit a0 = ACC^; //定义ACC的位,利用ACC操作
//速度最快
sbit a1 = ACC^;
sbit a2 = ACC^;
sbit a3 = ACC^;
sbit a4 = ACC^;
sbit a5 = ACC^;
sbit a6 = ACC^;
sbit a7 = ACC^;
//------------------------------------------------------------------------------
#pragma disable
//起始函数
void s24(void)
{
_nop_();
scl = ;
sda = ;
scl = ;
_nop_();
sda = ;
_nop_();
_nop_();
scl = ;
_nop_();
_nop_();
sda = ;
}
//------------------------------------------------------------------------------
#pragma disable
//停止函数
void p24(void)
{
sda = ;
scl = ;
_nop_();
_nop_();
sda = ;
}
//------------------------------------------------------------------------------
#pragma disable
Uchar rd24(void) //从24c16读一字节数据
{
ACC = 0x00;
sda = ;
scl = ;a7 = sda;_nop_();_nop_();_nop_();_nop_();scl = ;
scl = ;a6 = sda;_nop_();_nop_();_nop_();_nop_();scl = ;
scl = ;a5 = sda;_nop_();_nop_();_nop_();_nop_();scl = ;
scl = ;a4 = sda;_nop_();_nop_();_nop_();_nop_();scl = ;
scl = ;a3 = sda;_nop_();_nop_();_nop_();_nop_();scl = ;
scl = ;a2 = sda;_nop_();_nop_();_nop_();_nop_();scl = ;
scl = ;a1 = sda;_nop_();_nop_();_nop_();_nop_();scl = ;
scl = ;a0 = sda;_nop_();_nop_();_nop_();_nop_();scl = ;
sda = ;scl = ;_nop_();_nop_();_nop_();_nop_();scl = ; /// ///////////////24c16的一位回答位。
return(ACC);
}
//------------------------------------------------------------------------------
#pragma disable
void wd24(Uchar dd) ////////////////向24c16写一字节数据
{
sda = ;
ACC = dd;
sda = a7;scl = ;_nop_();_nop_();_nop_();_nop_();scl = ;
sda = a6;scl = ;_nop_();_nop_();_nop_();_nop_();scl = ;
sda = a5;scl = ;_nop_();_nop_();_nop_();_nop_();scl = ;
sda = a4;scl = ;_nop_();_nop_();_nop_();_nop_();scl = ;
sda = a3;scl = ;_nop_();_nop_();_nop_();_nop_();scl = ;
sda = a2;scl = ;_nop_();_nop_();_nop_();_nop_();scl = ;
sda = a1;scl = ;_nop_();_nop_();_nop_();_nop_();scl = ;
sda = a0;scl = ;_nop_();_nop_();_nop_();_nop_();scl = ;
sda = ;scl = ;//scl=0;(在下面程序中)
}
//---------------------------------------------------------------------------
#pragma disable
Uchar read(Uint address)
{
Uchar dd;
s24(); //开始条件
wd24(0xa0); //写器件地址(写命令)
_nop_();_nop_();_nop_();_nop_();
scl = ; //接收器件地址确认信号
wd24(address); // 写数据地址
_nop_();_nop_();_nop_();_nop_();
scl = ;
s24(); //开始条件
wd24(0xa1); //写器件地址(读命令)
scl = ;
dd = rd24(); //读一字节
p24(); //停止条件
return(dd);
}
//------------------------------------------------------------------------------
#pragma disable
void write(Uint address,Uchar dd)
{
s24(); //开始条件
wd24(0xa0); //写器件地址;
scl = ;
wd24(address); //写数据地址
scl = ;
wd24(dd); //写dd数据
scl = ;
p24(); //停止条件
}
24c16读写驱动程序的更多相关文章
- I2C的读写操作实验
[实验任务] 利用24C08断电以后存储的数据不消失的特点,可以做一个断电保护装置.首先利用单片机做一个0-99秒的自动计时器.然后随机关断电源,在 通电以后计时器接着断电前的状态继续计时. [实 ...
- 理解select,poll,epoll实现分析
mark 引用:http://janfan.cn/chinese/2015/01/05/select-poll-impl-inside-the-kernel.html 文章 select()/poll ...
- select()/poll() 的内核实现
mark 引用:http://janfan.cn/chinese/2015/01/05/select-poll-impl-inside-the-kernel.html 文章 select()/poll ...
- 外设:K9F2G08 nandflash 底层读写、控制驱动程序,可随机读写
/****************************************************************************** Copyright (C), 2001- ...
- 内核驱动程序中如何读写user space的文件,方便调试程序
需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据.但是在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() f ...
- nandflash驱动程序编写
NAND FLASH是一个存储芯片 那么: 这样的操作很合理"读地址A的数据,把数据B写到地址A" 问1. 原理图上NAND FLASH和S3C2440之间只有数据线, 怎么传输地 ...
- 嵌入式Linux驱动学习之路(二十四)Nor Flash驱动程序
Nor Flash和Nand Flash的不同: 类型 NOR Flash Nand Flash 接口 RAM-like,引脚多 引脚少 容量 小(1M.2M...) 大(512M.1G) 读 简 ...
- 15.linux按键驱动程序(二)
linux按键驱动程序 包含内容定时器延时去抖动,阻塞型设备驱动设计 一.定时器延时去抖 按键所用开关为机械弹性开关,当机械触点断开.闭合时,由于机械触点的弹性作用,开关不会马上稳定地接通或断开.因而 ...
- 14.linux按键驱动程序(一)
按键驱动程序 本文学习主要包含按键硬件的实现.中断分层管理.按键定时器去抖.阻塞性驱动程序设计.这里面需要使用到混杂设备驱动和中断处理程序的内容. 一.创建按键混杂设备驱动模型 int key_ope ...
随机推荐
- Oracle Sequence与Trigger的使用
一:建立sequence -- Create sequence create sequence SEQ_PUSH minvalue maxvalue start increment cache ; 二 ...
- GStreamer Plugin: Embedded video playback halted; module decodebin20 reported: Your GStreamer installation is missing a plug-in.
标题是在Linux下使用系统yum install 的opencv库来获取视频帧的时候抛出来的错误消息.opencv调用了Gstream的API来处理了视频.错误抛出的代码如下图: http://ub ...
- 03_Elasticsearch如何安装以及相关插件的介绍
03_Elasticsearch如何安装以及相关插件的介绍 elasticsearch -d (-d参数是为了让服务后台运行) Elasticsearch 目录结构: 文件夹 作用 /bin 运行El ...
- Tomcat部署项目通过—IP地址:端口访问
如题所示,实现效果图如下: 设置如下: (1)修改${tomcat}/config/sever.xml文件虚拟内容目录: <Engine name="Catalina" de ...
- 什么是内存泄漏?(What is a memory leak?)
程序中的内存泄漏是怎么回事呢? 我们写过很多带有关键词free()的程序.比如我在这篇博文关于链表的一些重要操作(Important operations on a Linked List)中删除整个 ...
- 【转】使用miniupnpd-->upnp协议 映射本地端口到外网
miniupnpc的主要函数介绍 1>.miniupnpc库主要使用的头文件有 #include"miniwget.h" #include"miniupnpc.h& ...
- linux下部署svn服务器
系统Linux debian 2.6.32-5-686 先安装svn工具:apt-get install subversion,耐心等待安装完成.安装完成后svn客户端.服务器都有了. 接者建立svn ...
- 用Less循环生成样式
需求是这样的,我要给一个轮播图设置不同的背景图,由于每张图片的背景图路劲都不一样,所以需要对每个单独的元素自定义图片路径.然后想到Less语法有mixin机制,就这样实现了一个递归function,然 ...
- Jpeg(模拟)
Jpeg Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Status ...
- openldap---ldapsearch使用
ldapsearch 參数表 下表描写叙述能够用于 ldapsearch 的区分大写和小写的參数. 參数 用途 -? 打印关于使用 ldapsearch 的帮助. -a deref 指定别名反向引用. ...