////////////////////////////////////////////////////////////////
//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读写驱动程序的更多相关文章

  1. I2C的读写操作实验

    [实验任务]   利用24C08断电以后存储的数据不消失的特点,可以做一个断电保护装置.首先利用单片机做一个0-99秒的自动计时器.然后随机关断电源,在 通电以后计时器接着断电前的状态继续计时. [实 ...

  2. 理解select,poll,epoll实现分析

    mark 引用:http://janfan.cn/chinese/2015/01/05/select-poll-impl-inside-the-kernel.html 文章 select()/poll ...

  3. select()/poll() 的内核实现

    mark 引用:http://janfan.cn/chinese/2015/01/05/select-poll-impl-inside-the-kernel.html 文章 select()/poll ...

  4. 外设:K9F2G08 nandflash 底层读写、控制驱动程序,可随机读写

    /****************************************************************************** Copyright (C), 2001- ...

  5. 内核驱动程序中如何读写user space的文件,方便调试程序

    需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据.但是在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() f ...

  6. nandflash驱动程序编写

    NAND FLASH是一个存储芯片 那么: 这样的操作很合理"读地址A的数据,把数据B写到地址A" 问1. 原理图上NAND FLASH和S3C2440之间只有数据线, 怎么传输地 ...

  7. 嵌入式Linux驱动学习之路(二十四)Nor Flash驱动程序

    Nor Flash和Nand Flash的不同: 类型 NOR Flash  Nand Flash  接口 RAM-like,引脚多 引脚少 容量 小(1M.2M...) 大(512M.1G) 读 简 ...

  8. 15.linux按键驱动程序(二)

    linux按键驱动程序 包含内容定时器延时去抖动,阻塞型设备驱动设计 一.定时器延时去抖 按键所用开关为机械弹性开关,当机械触点断开.闭合时,由于机械触点的弹性作用,开关不会马上稳定地接通或断开.因而 ...

  9. 14.linux按键驱动程序(一)

    按键驱动程序 本文学习主要包含按键硬件的实现.中断分层管理.按键定时器去抖.阻塞性驱动程序设计.这里面需要使用到混杂设备驱动和中断处理程序的内容. 一.创建按键混杂设备驱动模型 int key_ope ...

随机推荐

  1. Oracle BigFile

    http://blog.chinaunix.net/uid-20779720-id-3078273.html

  2. 使用ownCloud搭建你的个人云服务(ubuntu 14.04 server)(ownCloud对文件不切片,Seafile对文件切片),owncloud没有存储的功能 只能同步 本地删除了服务器也会删除

    ownCloud是什么 ownCloud是一个自由且开源的个人云存储解决方案(类似百度网盘或者Dropbox),包括两个部分:服务器和客户端. ownCloud在客户端可通过网页界面,或者安装专用的客 ...

  3. C#开发者准备的通用性代码审查清单

    这是为C#开发者准备的通用性代码审查清单,可以当做开发过程中的参考.这是为了确保在编码过程中,大部分通用编码指导原则都能注意到.对于新手和缺乏经验(0到3年工作经验)的开发者,参考这份清单编码会很帮助 ...

  4. Uboot与Linux之间的参数传递

    U-boot会给Linux Kernel传递很多参数,如:串口,RAM,videofb等.而Linux kernel也会读取和处理这些参数.两者之间通过struct tag来传递参数. U-boot把 ...

  5. Linux usb子系统(一):子系统架构

    一.USB协议基础知识   前序:USB概念概述 USB1.0版本速度1.5Mbps(低速USB) USB1.1版本速度12Mbps(全速USB)  USB2.0版本速度480Mbps(高速USB). ...

  6. js jquery 验证写法

    <?php header("Content-type: text/html; charset=utf-8"); ?> <script src="jque ...

  7. wpf纯前台绑定

    <Window x:Class="Example1.MainWindow" ... xmlns:local="clr-namespace:Example1" ...

  8. 自定义一个searchBar

    #import "CZSearchBar.h" @implementation CZSearchBar - (instancetype)initWithFrame:(CGRect) ...

  9. Jpeg(模拟)

    Jpeg Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status  ...

  10. Function.prototype.call.apply结合用法

     昨天在网上看到一个很有意思的js面试题,就跟同事讨论了下,发现刚开始很绕最后豁然开朗,明白过来之后发现还是挺简单的,跟大家分享下!  题目如下: var a = Function.prototype ...