电路设计,软件开发,专业项目团队承接电子产品开发!


ISPRO下载型编程器
火爆销售中

RS232/TTL转换器
全IC串口窃电

RS232/TTL转换线
全IC串口窃电

ByteBlasterMV Cable
CPLD/FPGA并口下载线

ByteBlaster II Cable ISPRO下载型编程器
支持S51/AVR/PIC
超级51开发板套件
前卫实用超值

PC/MCU/CPLD
三合一学习套件

全新万年历方案
AVR单片机开发板
 

Min51单片机仿真机
迷你型

ARM7开发板
仅售260元!
 

RS-232/RS-485双向接口电平转换器  

51单片机升级STM32
火爆销售中
MPLAB-ICD2
火爆销售中
LED51开发板
玩具又名图文显示棒

面板模块/开发板
经济危机明智决择

       

GSM MODEM GSM猫

SMS短信模块 工业级/全自动
火爆销售中

大功率数传电台

高速数传电台

您当前位置:电子技术资料 -> 外围驱动 -> EEPROM ->

祝您阅读愉快!

ISPRO下载型编程器

RS232 TO TTL转换器
↑↑本文相关产品介绍↑↑

AT24C01驱动程序C语言


类别:技术文章
来源:未知
作者:未知
关键字:AT24C01
加入日期:2010-8-3

/*以下为AT24C01/02驱动程序,
时钟:22.1184MHz;通信速率:88.5Kb/S*/
/*使用时按照C语言的格式嵌入以下1--4代码*/
/* 作者:weiyi
时间:2002.6.17
中国电子网www.ec66.com
*/
/*读写操作范例过程如下: 使用时根据具体型号保留将其他不用的删除便是*/
/*Write:
/* unsigned char data i;
/* ……
/* StartIic;
/* i=SlaWr;
/* i|=A2A0; /*装入具体线路的A2-A0值*/
/* if(MemSize==16){ /*匹配地址AT24C16*/
/* i&=0xf1;
/* i|=cAddresH&0x0e; /*根据型号将高地址转如SLA*/
/* }
/* if(MemSize==08){ /*匹配地址AT24C08*/
/* i&=0xf9;
/* i=cAddresH&0x06; /*根据型号将高地址转如SLA*/
/* }
/* if(MemSize==04){ /*匹配地址AT24C04*/
/* i&=0xfd;
/* i=cAddresH&0x02; /*根据型号将高地址转如SLA*/
/* }
/* SendIic(i);/*1010 0010*/
/* if((MemSize==32)||(MemSize==64)) /*匹配地址AT24C32、64*/
/* SendIic(cAddresH); /*Send first addres*/
/* SendIic(cAddres); /*Send addres(L)如果不是以上所列型号就是
AT24C01、02*/
/* SendIic(cData0);/*写第一个字节数据*/
/* ……
/* SendIic(cDataN);/*写最后一个字节数据,不能超过页缓冲*/
/* EndIic;
/*Read: bScanErr=0;
/* StartIic;
/* i=SlaR;
/* i|=A2A0; /*装入具体线路的A2-A0值*/
/*
/* if(MemSize==16){ /*匹配地址AT24C16*/
/* i&=0xf1;
/* i|=cAddresH&0x0e;
/* }
/* if(MemSize==08){ /*匹配地址AT24C08*/
/* i&=0xf9;
/* i=cAddresH&0x06; /*根据型号将高地址转如SLA*/
/* }
/* if(MemSize==04){ /*匹配地址AT24C04*/
/* i&=0xfd;
/* i=cAddresH&0x02; /*根据型号将高地址转如SLA*/
/* }
/* SendIic(i);/*1010 0010*/
/* if((MemSize==64)||(MemSize==32) /*匹配地址AT24C32、64*/
/* SendIic(cAddresH); /*Send first addres*/
/* SendIic(cAddres); /*Send addres(L)如果不是以上所列型号就是
AT24C01、02*/
/* if(bScanErr==0){
/* cDataBuf[0]=ScanIic();/*读入第一个字节*/
/* SendAck();
/* ……
/* cDataBuf[n]=ScanIic();/*读入最后一个字节*/
/* SendNotAck();
/* }
/* EndIic;*/
/*在程序相应位置嵌入以下1-4代码*/
/* 1。 嵌入宏定义:*/
#include <reg51.h> /*#include <reg52.h>*/
#include <absacc.h>
#include <intrins.h>
#define Wait {_nop_();_nop_();_nop_();_nop_();}
#define StartIic {bSda=bScl=1;Wait;bSda=0;Wait;bScl=0;}
#define EndIic {bSda=0;bScl=1;Wait;bSda=1;}
#define SlaWr 0xa0 /*1010 0 0 0 0*/
#define SlaR 0xa1 /*1010 0 0 0 1*/
#define A2A0 0x0 /*按照实际线路设置:0x00-0x14*/
#define MemSize 01 /*EEPROM型号:01-64*/
/* 2。 嵌入变量申明:*/
sbit bSda =Px^x; /*使用具体线路的bSda*/
sbit bScl =Px^x; /*使用具体线路的bScl*/
unsigned char bdata cFlag;
sbit bScanErr =cFlag^0;
/* 3。 嵌入涵数申明:*/
unsigned char ScanIic();
void SendIic(unsigned char cData);
void SendAck(void);
void SendNotAck(void);
/* 4。 嵌入涵数代码段:*/
/****************************************************
Name:ScanIic
Function:From IIC Read data
Time:113us 88.5K
***************************************************/
unsigned char ScanIic(){
unsigned char data i,j;/*IIC data*/
bSda=1;
j=0;
for(i=0;i<8;i++){
bScl=1;
Wait; /*可以不用,但太危险了*/
j<<=1;/*这个指令已经有15个周期,所以无须再延时*/
j|=bSda;/*Scan 0*/ /*Scan 1*/
bScl=0;
Wait;
}
return j;
}
/***********************************************/
/****************************************************
Name:SendIic
Function:Send data to Iic
Time:116us(8位数据为:112us) 88.5k
*****************************************************/
void SendIic(unsigned char cData){
unsigned char data i;
for(i=0;i<8;i++){
bSda=(bit)(cData&0x80);
bScl=1;
cData<<=1;
Wait;/*都可以不用,但太危险了*/
bScl=0;
Wait;/*都可以不用,但太危险了*/
}
bSda=bScl=1; /*检测ACK*/
for(i=0;(bSda==1)&&(bScanErr==0);i++){
if(i==17)
bScanErr=1;/*如果101us没有响应就错误*/
}
bScl=0;
}
/*************************************************/
/**********************************************
Name:SendAck
Function:Send IIC Ack
********************************************/
void SendAck(void){
bSda=0;
bScl=1;
Wait;
bScl=0;
bSda=1;
}
/******************************************/
/******************************************
Name:SendNotAck
Function:Send IIC not Ack
******************************************/
void SendNotAck(void){
bScl=bSda=1;
Wait;
bScl=0;
}
/**********************************************/

您可能还会关注的相关技术资料:

中国电子网
www.EC66.com
QQ:34740080 EMAIL:iloveaoe@163.com
最佳浏览:1024*768
Copyright (C) 2001-2010 EC66.COM All Rights Reserved
Aoe/帝国 制作维护
粤ICP备18061901号