FM24C04驱动程序.doc_第1页
FM24C04驱动程序.doc_第2页
FM24C04驱动程序.doc_第3页
FM24C04驱动程序.doc_第4页
FM24C04驱动程序.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

评:驱动程序对于所有的铁电系列I2C FRAM都是适用的,只是容量、电平(3V和5V)的不同,驱动程序是针对51MCU的,但对其他MCU只要稍微修改就可使用。 在存贮数据量不大,而且读写次数频繁时,可选择I2C FRAM。/THIS CODE WAS DESIGNED TO DEMONSTRATE HOW THE FM24C04/FM24C04A SERIAL FRAM COULD /BE INTERFACED TO THE 8051 MICROCONTROLLER. THE INTERFACE USES 2 LINES /FROM PORT 2 (P2.7 AND P2.6) TO COMMUNICATE. /THE CODE SHOWN DEMONSTRATES A RANDOM READ AND BYTE WRITE. THE OTHER */MODES OF OPERATION CAN BE CREATED BY EXPANDING UPON THESE ROUTINES./深圳市华胄科技有限公司/the first date writed:2003-11-20/email:/by:tiger/=i ncludei nclude#define uchar unsigned char#define uint unsigned int#define IIC_READ 0XA1 /定义读指令#define IIC_WRITE 0XA0 /定义写指令#define NOP _nop_()/#define SDA INT0/#define SCL T0/=uchar idata buff32;/save the byte read out form iic device in test operationuchar idata readbuff32;/测试数组,暂存写入读出数据/uchar writebuff32;/=sbit SDA=P14;/P27;/THE SDA BIT IS PORT 2 BIT 7sbit SCL=P17;/P26;/THE SCL BIT IS PORT 2 BIT 6/sbit WP=P25;/sbit test=P10;/=/define a bit_operation byte to use in shift operation/use this mode can achieve high operation speed uchar bdata bbyte;/定义位操作用数组,采用此方法可提高位操作速度sbit a0=bbyte0;sbit a1=bbyte1;sbit a2=bbyte2;sbit a3=bbyte3;sbit a4=bbyte4;sbit a5=bbyte5;sbit a6=bbyte6;sbit a7=bbyte7;/=bit IFACK;/record the SDA state to confirn if ACK has happened bit NO_ACK;/no ack flagbit BUS_FAULT;/bus fault flag/=/FUNCTION:ROUTES TO PROVIDE A START SIGNALvoid start(void)SCL=0;SDA=1;SCL=1;SDA=0;SCL=0;/=/FUNCTION:ROUTES TO PROVIDE A STOP SIGNALvoid stop(void)SCL=0;SDA=0;SCL=1;SDA=1;SCL=0;/=/FUNCTION:ROUTES TO PROVIDE ACK SINGALvoid ack(void)SCL=0;SDA=0;SCL=1;SCL=0;/=/FUNCTION:ROUTES TO RELEASE THE SDA TO RECEIVE A ACK SIGNAL / OR TO PROVIDE A NO_ACK SIGNAL/type=1等待应答信号/type=0 产生无应答信号void nack(uchar type)SCL=0;SDA=1;SCL=1;IFACK=SDA; SCL=0;if(type)if(IFACK)/如果无应答信号,则置标志位NO_ACK,程序中止NO_ACK=1;/用户可以加入自己的异常处理程序/while(1);else NO_ACK=0;/=/FUNCTION:THE IIC DEVICE SHIFT OUT A BYTE TO THE MASTERuchar inbyte(void) /从IIC器件中读出数据SDA=1;SCL=1;a7=SDA;SCL=0;SCL=1;a6=SDA;SCL=0;SCL=1;a5=SDA;SCL=0;SCL=1;a4=SDA;SCL=0;SCL=1;a3=SDA;SCL=0;SCL=1;a2=SDA;SCL=0;SCL=1;a1=SDA;SCL=0;SCL=1;a0=SDA;SCL=0;return(bbyte);/=/FUNCTION:THE IIC DEVICE SHIFT IN A BYTE FROM THE MASTER void outbyte(uchar outdata) /将数据写放IIC器件bbyte=outdata;SDA=a7;SCL=1;SCL=0;SDA=a6;SCL=1;SCL=0;SDA=a5;SCL=1;SCL=0;SDA=a4;SCL=1;SCL=0;SDA=a3;SCL=1;SCL=0;SDA=a2;SCL=1;SCL=0;SDA=a1;SCL=1;SCL=0;SDA=a0;SCL=1;SCL=0;/=/FUNCTION:BYTE WRITE. add THE WRITE ADDRESS, wbyte THE DATA WANT TO WRITEvoid writebyte(uint add,uchar wbyte)/add为写入地址,wbyte为写入数据uchar temph,templ;temph=(uchar)(add/256);templ=(uchar)(add%256);start(); /开始信号outbyte(IIC_WRITE);/写命令nack(1);/等待应答outbyte(temph);/写地址nack(1);/等待应答outbyte(templ);/写地址nack(1);outbyte(wbyte);/写数据nack(1);/等待应答stop();/停止信号/=/FUNCTION:RANDOM READ.add IS THE ADDRESS WANT TO READuchar readbyte (uint add)/add为读地址uchar temp,temph,templ;temph=(uchar)(add/256);templ=(uchar)(add%256);start();/开始信号outbyte(IIC_WRITE);/写命令nack(1);/等待应答outbyte(temph);/写地址nack(1);/等待应答outbyte(templ);/写地址nack(1);start();/开始信号outbyte(IIC_READ);/读命令nack(1);/等待应答temp=inbyte();/读数据nack(0);/无应答stop();/停止信号return(temp);/=/连写函数/add为读起始地址,ptr数据保存指针,writelen为写入数据长度void writebyteseq(uint add,uchar *ptr,uint writelen)/uchar temp;uchar temph,templ;uint i;temph=(uchar)(add/256);templ=(uchar)(add%256);start(); outbyte(IIC_WRITE);nack(1);outbyte(temph);nack(1);outbyte(templ);nack(1);for(i=0;iwritelen;i+)outbyte(*(ptr+i);nack(1);stop();/=/连读函数/add为读起始地址,ptr数据保存指针,writelen为读出数据长度void readbyteseq(uint add,uchar *ptr,uint readlen)uchar temph,templ;uint i;temph=(uchar)(add/256);templ=(uchar)(add%256);start();outbyte(IIC_WRITE);nack(1);outbyte(temph);nack(1);outbyte(templ);nack(1);start();outbyte(IIC_READ);nack(1);for(i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论