压缩包中包括多个驱动程序的原代码
源代码在线查看: 24c01的iic 读写的c51程序.txt
24C01的IIC 读写的c51程序
发表时间:2005-12-13 8:40:53 浏览人数:19
/*------------------------------------------------------------------------------
为了安全起见,程序中很多NOP是冗余的,希望读者能进一步精简,但必须经过验证。
Atmel 24C01 比较特殊,为简约型.
51晶振为11.0592MHz
〖参考〗http://www.c51bbs.com
〖版本〗V1.00A Build 0918
-----------------------------------------------------------------------------*/
#include "reg51.h"
#include "intrins.h"
sbit SCL= P1^5;
sbit SDA= P1^4;
delay()
{
unsigned int i=1200;
while(i--);
}
/*----------------------------------------------------------------------------
调用方式:write_8bit(unsigned char ch) ﹫2001/03/23
函数说明:内函数,私有,用户不直接调用。
-------------------------------------------------------------------------------
*/
void write_8bit(unsigned char ch)
{
unsigned char i=8;
SCL=0;
_nop_();_nop_();_nop_();_nop_();_nop_();
while (i--)
{
SDA=(bit)(ch&0x80);
_nop_();_nop_();_nop_();_nop_();_nop_();
ch SCL=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=0;
_nop_();_nop_();_nop_();_nop_();_nop_();
}
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
}
/*------------------------------------------------------------------------------
调用方式:void ACK(void) ﹫2001/03/23
函数说明:内函数,私有,用户不直接调用。
-------------------------------------------------------------------------------
*/
void ACK(void)
{
unsigned char time_1;
SDA=1;
SCL=0;
_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=1;
time_1=5;
while(SDA) {if (!time_1) break;} //ACK
SCL=0;
_nop_();_nop_();_nop_();_nop_();_nop_();
}
unsigned char ReadIIC_24C01(unsigned char address)
{
unsigned char ddata=0;
unsigned char i=8;
SCL=1;
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); //Tsu:STA
SDA=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //Thd:STA
SCL=0; //START
write_8bit( (address ACK();
while (i--)
{
SDA=1;
ddata SCL=0;_nop_();_nop_();_nop_();_nop_();_nop_();SCL=1;
if (SDA) ddata|=0x01;
}
SCL=0;_nop_();SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
SDA=0;_nop_();SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
SDA=1; //STOP
delay();
return ddata;
}
void WriteIIC_24C01(unsigned char address,unsigned char ddata)
{
SCL=1;
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); //Tsu:STA
SDA=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //Thd:STA
SCL=0; //START
write_8bit( (address 24C256,page不起作用
ACK();
write_8bit(ddata); //发送数据
ACK();
SDA=0;
_nop_();SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
SDA=1; //STOP
delay();
}
|
相关资源 |
|
-
压缩包中包括多个驱动程序的原代码
-
压缩包中包括多个常用的汇编
-
英文原版的讲uC/OSII 的好书 压缩包中包括PDF和DOC格式的文件
-
模拟退火是进化算法类中非常重要的一种很实用的算法,该压缩包中包括了其MatLab实现的工具包
-
RT73芯片无线网卡驱动程序的原代码。需要修改其中的makefile才可以挂载到开发板上
-
基于ARM的44B0开发板的嵌入式LINUX驱动程序的原代码
-
遗传算法中二十个非常经典的原代码
-
此压缩包中共有32个MATLAB图形应用程序示例,内容如下:三角函数曲线,图形的叠加,双y轴图形的绘制,单个轴窗口显示多个图形,图形标注,条形图形,区域图形,饼图的绘制,阶梯图
|