您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机PIC单片机读写24LC02例程 正文
PIC单片机读写24LC02例程

PIC单片机读写24LC02例程

点击数:7974 次   录入时间:03-04 11:45:20   整理:http://www.55dianzi.com   PIC单片机
void stop_i2c() 

SDA=0; //发送结束条件的数据信号 
nop(); 
SCL=1; 
nop();nop();nop();nop();nop(); 
SDA=1; 
nop();nop();nop();nop(); 

/*================================================================= 
字节数据传送函数 
函数原型: void send_byte(uchar c); 
Function: 将数据C发送出去,可以是地址,也可以是数据,发完后等待回应,并对此状态 
位进行操作(不应答或非应答都使ack=0 ),发送数据正常,ack=1;ack=0 
表示被控器无应答或损坏。 
==================================================================*/ 
void send_byte(uchar c) 

uchar bit_count; 
for (bit_count=0;bit_count<8;bit_count++) 

if ((c<<bit_count)&0x80) {SDA=1;} 
else {SDA=0;} 
nop(); 
SCL=1; 
nop();nop();nop();nop();nop(); 
SCL=0; 

nop();nop(); 
SDA=1; 
nop();nop(); 
SCL=1; 
nop();nop();nop(); 
if (RC4==1) ack=0; 
else ack=1; //用ASK=1为有应答信号 
SCL=0; 
nop();nop(); 

/*================================================================== 
字节数据接收函数 
函数原型:uchar receive_byte(); 
FUNCTION: 用来接收从器件传来的数据,并判断总线错误(不发应答信号), 
发完后请用应答函数。 
===================================================================*/ 
uchar receive_byte() 

uchar retc,bit_count; 
retc=0; 
SDA=1; 
for (bit_count=0;bit_count<8;bit_count++) 

nop(); 
SCL=0; 
nop();nop();nop();nop();nop(); 
SCL=1; 
nop();nop(); 
retc=retc<<1; 
if (RC4==1) retc=retc+1; 
nop();nop(); 

SCL=0; 
nop();nop(); 
return (retc); 


/*================================================================ 
向有子地址器件发送多字节数据函数 
函数原型: bit I_send_str(uchar sla,uchar suba,uchar *s,uchar no); 
Function: 从启动总线到发送地址,数据,结束总线的全过程,从器件地址sla。如果 
返回1表示操作成功,否则操作有误。 
=================================================================*/ 
void I_send_str(uchar sla,uchar suba,uchar *s,uchar no) 

uchar i; 
start_i2c(); 
send_byte(sla); 
if (ack==0) i2c_error(); 
send_byte(suba); 
if (ack==0) i2c_error(); 
for (i=0;i<no;i++) 

send_byte(*s); 
if (ack==0) i2c_error(); 
s++; 

stop_i2c(); 
// return(1); 

/***************************************************************** 
延时函数 
函数原型: void delay_250ms(); 
FUNCTION: 延明250ms 
*****************************************************************/ 
void delay_250ms() 

unsigned int d=24999; 
while (--d); 

/***************************************************************** 
总线错误函数 
函数原型: void i2c_error(); 
Function: 通过RD7闪动8次表示总线操作失败一次报警。 
*****************************************************************/ 
void i2c_error () 

uchar i; 
for (i=0;i<8;i++) 

RD7=0; 
delay_250ms(); 
RD7=1; 
delay_250ms(); 


/**********END**************/

上一页  [1] [2] 


本文关键字:单片机  PIC单片机单片机-工控设备 - PIC单片机