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 ...
随机推荐
- 必须得是一万小时的 刻意训练(deliberate practice)
成功素质1:一万小时与格物致知 “格物致知14”的概念,我是从张银奎11老师那里了解到的.它的意思是“推究事物的原理,从而获得知识”,跟我在<透过现象看本质 - 写在观看WWDC 2016 Ke ...
- 【转】 i2c驱动调试经验
原文网址:http://blog.csdn.net/cmm20071020/article/details/7179958 把一个i2c驱动从2.6.21升级到2.6.39 上网查到一篇帖子,讲了驱动 ...
- Java异常的使用
1.exception的分类 java将异常分为两种,checked exception和unchecked exception(一般指runtimeException). checked excep ...
- JS帮你计算属相
背景:一个人出生在2014年的正月初一,他的生肖到底是属蛇还是属马呢?这就要确定那一天才是一年的开始.是春节还是立春?每年的春节是正月初一,但是生肖必须是从立春日开始计算.春节是1912年孙中 ...
- linux下添加中文输入法
一.安装环境 查看linux版本号 [ztteng@ztteng ~]$ lsb_release -aLSB Version: :core-4.0-ia32:core-4.0-noarch:gr ...
- ios 读取通讯录数据
#import <Foundation/Foundation.h> @interface LoadingContactData : NSObject // 读取通讯录 + (Loading ...
- OpenVPN莫名其妙断线的问题及其解决
1.问题 不得不说,这是一个OpenVPN的问题,该问题几乎每个使用OpenVPN的人都碰到过,也有很多人在网上发问,然而一直都没有人能给出解决办法,甚至很多帖子上表示因为这个问题而放弃了使用Open ...
- 关于c语言的一个小bug(c专家编程)
不多说,说了都是累赘!直接看代码吧! #include <stdio.h> int array[] = {23, 34, 12, 17, 204, 99, 16}; #define TOT ...
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——NAND 启动
我们知道 s5pv210启动方式有非常多种,sd卡和nand flash 启动就是当中的两种,前面我们实现的都是基于sd卡启动,这节我们開始实现从nand flash 启动: 从 NAND 启动 u- ...
- R6010 -abort() has been called错误分析及其解决方法
近期使用vs2010编程出现下面问题.在网上收集了大家的意见之后,整理了一下 导致出现这种原因有: 1.非法指针訪问和内存泄漏 2.大家再查查吧.一定是指针出现故障了.设置的指针范围跟你执行的不正确 ...