24C01的IIC 讀寫的c51程式
/*------------------------------------------------------------------------------
為了安全起見,程式中很多NOP是冗餘的,希望讀者能進一步精簡,但必須經過驗證。
Atmel 24C01 比較特殊,為簡約型.
51晶振為11.0592MHz
------------------------------------------------------------------------------*/
#include "reg51.h"
#include "intrins.h"
sbit SCL= P1^;
sbit SDA= P1^;
delay()
{
unsigned ;
while(i--);
}
/*------------------------------------------------------------------------------
調用方式:write_8bit(unsigned char ch)
函數說明:內函數,私有,用戶不直接調用。
------------------------------------------------------------------------------*/
void write_8bit(unsigned char ch)
{
unsigned ;
SCL=;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
while (i--)
{
SDA=(bit)(ch&0x80);
_nop_();_nop_();_nop_();_nop_();_nop_();
ch<<=;
SCL=;
_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=;
_nop_();_nop_();_nop_();_nop_();_nop_();
}
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
}
/*------------------------------------------------------------------------------
調用方式:void ACK(void)
函數說明:內函數,私有,用戶不直接調用。
------------------------------------------------------------------------------*/
void ACK(void)
{
unsigned char time_1;
SDA=;
SCL=;
_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=;
time_1=;
while(SDA) {if (!time_1) break;} //ACK
SCL=;
_nop_();_nop_();_nop_();_nop_();_nop_();
}
unsigned char ReadIIC_24C01(unsigned char address)
{
unsigned ;
unsigned ;
SCL=;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //Tsu:STA
SDA=;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //Thd:STA
SCL=; //START
write_8bit( (address<<) | 0x01); //寫頁位址和操作方式
ACK();
while (i--)
{
SDA=;
ddata<<=;
SCL=;
_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=;
if (SDA)
ddata|=0x01;
}
SCL=;
_nop_();
SCL=;
_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
SDA=;
_nop_();
SCL=;
_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
SDA=; //STOP
delay();
return ddata;
}
void WriteIIC_24C01(unsigned char address,unsigned char ddata)
{
SCL=;
_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_(); //Tsu:STA
SDA=;
_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_(); //Thd:STA
SCL=; //START
write_8bit( (address<<) & 0xfe); //寫頁位址和操作方式,對於24C32-24C256,page不起作用
ACK();
write_8bit(ddata); //發送資料
ACK();
SDA=;
_nop_();
SCL=;
_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
SDA=; //STOP
delay();
}
24C01的IIC 讀寫的c51程式的更多相关文章
- mysql proxy讀寫分流(二)-加入RW splitting
上一篇中提到 安裝LUA及MySQL Proxy後,接下來就是RW splitting(讀寫分流)的部份了 整體的概念圖跟上一篇MySQL Proxy安裝方式相同,丫忠再補上一個對應port的圖表: ...
- 使用Device IO Control 讀寫 USB Mass Storage
http://www.ezblog.idv.tw/Download/USBStorage.rar 這是一個不透過檔案系統,去讀寫USB Mass Storage 任何位置(包含FAT)的方式 首先需安 ...
- (C/C++) FILE 讀寫檔案操作
在C/C++ 讀寫檔案操作比較常見應該是利用 FILE.ifstream.ofstream 在這篇筆記裡頭記錄 FILE.fstream 使用方法及操作 #include <iostream&g ...
- 安卓初級教程(2):SD創建file,儲存與讀寫的方法(1)
package com.sdmadik; import java.io.*; import android.app.Activity; import android.os.Bundle; import ...
- [ASP.NET] 檔案讀寫權限問題
今天遇到一個問題,環境如下: IIS Server: Server 2008 R2 沒加域 File Server: Server 2003 加域 當我的Web程序需要把位於File Server的一 ...
- IIS ApplicationPoolIdentity(配置IIS讀寫網站文件)
原创地址:http://www.cnblogs.com/jfzhu/p/4067297.html 转载请注明出处 从IIS 7.5开始,Application Pool Identity的Built- ...
- Caffe 源碼閱讀(一) Blob.hpp
Blob 四維度(N K H W) N : SGD 一次 mini-batch 個數 K : 如果是圖片表示圖片通道數 如果是中間結果 則理解爲 feature map 個數 H.W : 如果是圖片理 ...
- 無法使用 system/bin/r 讀取 pmic pm8937 hardware regitster 的原因
Platform Qualcomm MSM8917 + PM8937 + PMI8940 起因 同事問我 PM8937 的 VREG_L17 如何設定成 3.3V, 從 PM8937 hardware ...
- Python 基礎 - 文件操作_v2
嗯,那如何要把游標的位置給打印來? #!/usr/bin/env python3 # -*- coding:utf-8 -*- f = open('test', 'r') print(f.tell() ...
随机推荐
- JavaScript对象基础知识
1.对象所包含的元素一组包含数据的属性.如人的名字.书的价格和手机型号等.允许对属性中所包含的数据进行操作的方法. 2.引用对象的途径一个对象真正地被使用,可以采用以下几种方式.引用Javascrip ...
- 单线程Singleton模式的几个要点
1.Singleton模式中的实例构造器可以设置为protected以允许子类派生.2.Singleton模式一般不要支持ICIoneable接口,因为这可能会导致多个对象实例,与Singleton模 ...
- 自制单片机之九……写给对制做并口ISP下载线有疑惑的朋友
一.器件的选用 制做并口ISP下载在网上有很多的电路和对应的PC端下载软件.很多人疑惑,不知该用哪张图,用哪个下载软件.我看了一下,采用的器件主要是74HC373.74HC541和74HC244.其实 ...
- android开发论坛
http://www.hiapk.com/ http://bbs.hiapk.com/ http://bbs.gfan.com/ http://bbs.anzhi.com/ http://www.ap ...
- 【转】Android 之 下拉框(Spinner)的使用
原文网址:http://imshare.iteye.com/blog/770950 下拉列表 Spinner. Spinner的使用,可以极大提高用户的体验性.当需要用户选择的时候,可以提供一个下拉列 ...
- 【转】Ubuntu 10.04 LTS 的窗口控制按钮从左上角调整到右上角
原文网址:http://www.linuxidc.com/Linux/2010-05/26111.htm 升级到Ubuntu 10.04后最大的问题,是最小最大和关闭按钮,放到了左边.这叫Ubuntu ...
- 使IE6支持:hover效果
:hover是在CSS中用来制作效果最常用到的一个伪类,比如:标签或div上的鼠标悬停效果 li:hover,div:hover等. 但这种效果是css2及以上版本才添加的,对于只支持css1的浏览器 ...
- hadoop执行hdfs文件到hbase表插入操作(xjl456852原创)
本例中需要将hdfs上的文本文件,解析后插入到hbase的表中. 本例用到的hadoop版本2.7.2 hbase版本1.2.2 hbase的表如下: create 'ns2:user', 'info ...
- tomcat动态映射路径
写了一个工具类,将上传文件功能保存文件的目录移到webapps目录外面,通过动态生成xml映射文件到tomcat\conf\Catalina\localhost目录下从而实现目录映射.可以被http直 ...
- 我所理解的设计模式(C++实现)——中介者模式(Mediator Pattern)
概述: 假设我们开发一个图片处理软件,里面肯定包括很多相关功能,比如说剪切,旋转,滤镜,美化等等,而我们这些功能所要处理的对象是固定的,就是我们所显示的那张图片.但是我们不能把所有的功能罗列到一个ta ...