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() ...
随机推荐
- C语言在单片机开发中的应用
在单片机的开发应用中,已逐渐开始引入高级语言,C语言就是其中的一种.对用惯了汇编的人来说,总觉得高级语言’可控性’不好,不如汇编那样随心所欲.但是只要我们掌握了一定的C语言知识,有些东西还是容易做出来 ...
- [Powershell] 检查IIS设置
$script:OutMessage = "ok" function WriteLog([string] $content){ #Write-Host $content $scri ...
- Linux企业级项目实践之网络爬虫(1)——项目概述及准备工作
我们在学习了Linux系统编程之后,需要一些实战项目来提高自己的水平,本系列我们通过编写一个爬虫程序,将我们学习的知识进行综合应用,同时在实现项目的过程中逐渐养成一些有用的思维方式,并具有初步的软件开 ...
- 【No system images installed for this target】的解决方式
打开eclipse,新建安卓SDK模拟器时,选择完Target之后,再选择CPU/ABI时,默认为No system images installed for this target. 且无法编辑: ...
- (greedy)Best Time to Buy and Sell Stock II
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- hdu1521:排列组合---指数型母函数
题意: n种元素,每种有 ni个,选出 m 个的排列有多少种 题解: 指数型母函数的裸题 x^n 项的系数为 an/n!.... 代码如下: #include <iostream> #i ...
- 设置MATLAB中figure的背景为白色
matlab的图形窗口每次背景都是灰色的,而我希望每次都是白色的背景,方便用图: 每次总是需要添加figure('color','w');或者figure('color',[1 1 1])或者set( ...
- 【转】10分钟了解设计模式(C#)
10分钟了解设计模式(C#) 最近把<大话设计模式>重温了下(看完序才知道原来作者是也是博客园园友,这本书的最早博客版本在这里).体会最深的就是面向接口编程的重要性,如何在自己的项目中进行 ...
- EBS-PAC成本更新事务处理
PAC成本更新事务处理 DECLARE l_itfs_rec mtl_transactions_interface% ROWTYPE; BEGIN --插入接口表 SELECT mt ...
- Java第三周学习日记
Day01 1.线程 进程:进程就是正在运行的应用程序.进程负责了内存空间的划分. 线程:一个进程中的代码是由线程去执行的,线程也就是其中一个执行路径. 多线程:一个进程中有多个线程可以同时执行任务. ...