iic总线读写eeprom(深度诠释)

iic总线读写eeprom(深度诠释)

ID:8920375

大小:19.28 KB

页数:6页

时间:2018-04-12

iic总线读写eeprom(深度诠释)_第1页
iic总线读写eeprom(深度诠释)_第2页
iic总线读写eeprom(深度诠释)_第3页
iic总线读写eeprom(深度诠释)_第4页
iic总线读写eeprom(深度诠释)_第5页
资源描述:

《iic总线读写eeprom(深度诠释)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、/*----------------------------------------------------------------------------------------------------------IIC总线读写EEPROM(串行扩展eeprom,24c02)(STC12C系列单片机自带eeprom,且有另外的eeprom操作方式)作者:Allen.H(帮同学修改的一个程序)时间:2010.11.5-------------------------------------------------------------------------

2、---------------------------------*/#include#include//是用括号还是双引号看情况,本地头文件用双引号,系统头文件用括号//这里使用了_nop_()函数,所以调用此头文件#defineTRUE1/*define宏定义一般用大写,宏定义并不会减少最终代码空间define多行语句时,每一行末尾写上,最后一行可以不写,有时比较短的语句写成一个子函数会牺牲更多的时间,因为函数调用耗时比较多,这个时候用一个define语句更好*/#defineFALSE0typedefunsign

3、edcharuchar;//良好的程序风格,不应该用#define//#defineucharunsignedcharsbitsda=P2^0;//---------你把sda和scl引脚可能定反了,我换过来了-------------------------------sbitscl=P2^1;//等号对其,变量名长短不一时,注意,且测试等于号"=="或者其他双目关系运算符两边都空一格//-----------------------------------------------------------------voiddelay(ucharz)//带参

4、数很好{//大括号所在行不要写代码uchari,j;//局部变量中用来自加自减可以用i,j之类的定义,计数建议不要用i,j//局部变量不占内存,函数调用时生成堆栈,不应该定义局部变量时作初始化//----局部变量命名后空一格,写正式代码for(i=z;i>0;i--)for(j=100;j>0;j--);//注明多少时间,在调试模式下,看窗口左边的SEC值}//函数与函数之间空一格voiddelay_7nop()//子程序命名最好顾名思义,比如delay_1ms(),这里考虑都是使用7nop,不带参数{/*程序代码每进一层逻辑就缩进一格TAB键,TAB设置为3

5、,4格,在keil的view->options里面设置,不要使用几个空格来缩进,统一使用TAB键*/_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//这里0-1000多个_nop_都可以}//delay函数都放在一起,函数顺序不要乱放,相关的放一起,//--------------------------------------------------------------------voidinit(){sda=1;delay_7nop();scl=1;delay_7nop();}//---

6、SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;//SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。//但更具体还是得看时序图,下面就没有都先把scl先拉高再去变sdavoidstart(){sda=1;delay_7nop();//这里sda和第三行的scl信号哪个放上没什么区别,主要起始和停止信号风格保持一致就行了scl=1;delay_7nop();sda=0;delay_7nop();//scl=0;//允许数据变化,传数据的时候拉低才允许数据变化,//但是在开始信号和停止信号scl都为高,这里看时序图就知道了}vo

7、idstop(){sda=0;delay_7nop();scl=1;delay_7nop();sda=1;delay_7nop();}bitask()//应答信号,return是什么类型这里函数就是什么类型,{//每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)//如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据bitflag;//真假判断,或只有0/1取值的标志位设置为bitsda=1;scl=1;delay_7nop();flag=sda;delay_7nop();scl=0;delay_7nop();if(flag==1)

8、returnFALSE;//非应答el

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。