📄 pcf8563.c
字号:
#include "P89C60X2.h"
#include "hicj6.h"
BYTE idata rom_sed[9];
BYTE idata rom_rec[7];
BYTE idata j,k;
bit flag,flag1;
void delay(void) //延时子程序
{BYTE i;
for(i=0;i<6;i++);
}
void I_start(void) //发送I2C总线起始条件子程序
{sda=1;
;
scl=1;
delay();
sda=0;
delay();
scl=0;
;
}
void I_stop(void) //I2C总线停止条件子程序
{sda=0;
;
scl=1;
delay();
sda=1;
delay();
}
bit I_send(BYTE I_data) //字节数据传送子程序
{ BYTE i;
for(i=0;i<8;i++)
{//sda-(bit)(I_data&0x80);
I_data=I_data<<1;
scl=1;
delay();
scl=0;
}
;;
sda=1; ;; //ready for receiving ACK bit
scl=1; ;; //start receiving ack bit
flag=0;
if(sda==0)flag=0;
else flag=1; //return(~I_clock());
scl=0;
return(flag);
}
BYTE I_receive(void) //字节数据接收子程序
{ data BYTE i;
BYTE I_data=0;
sda=1;
for(i=0;i<8;i++)
{ I_data*=2;
;
scl=0;
delay();
scl=1; ;;
if(sda==1)I_data++;
;;
}
scl=0; ;;;
sda=0;
if(flag1==0){;;scl=1;delay();scl=0;} //not last receic_BYTE ACK
else{sda=1; ;;scl=1;delay();scl=0;flag1=0;} //the last receive_BYTE ~ACK
return(I_data);
}
/*
main() //主程序
{data BYTE i;
rom_sed[0]=0x00; rom_sed[1]=0x00;
rom_sed[2]=0x00; rom_sed[3]=0x55;
rom_sed[4]=0x23; rom_sed[5]=0x31;
rom_sed[6]=0x06; rom_sed[7]=0x92;
rom_sed[8]=0x99;
for(i=0;i<255;i++)delay();
I_start();
if(~I_send(rom_sed[i]));
else;
}
I_stop();
}
else;
}
else;
start: I_start();
if(~I_send(0xa2)) //pcf_write address
{if(~I_send(0x02)) //pcf_status register address
{I_start();
if(~I_send(0xa3)) //write status register
{for(i=0;i<7;i++)
{if(i= =6)flag1=1;
else flag1=0;
rom_rec[i]=I_receive();
switch(i)
{case 1:rom_rec[i]=rom_rec[i]&0x7f;break;
ease2:
case3:rom_rec[i]=rom_rec[i]&0x3f;break;
case4:rom_rec[i]=rom_rec[i]&0x07;break;
case5:rom_rec[i]=rom_rec[i]&0x9f;brealk;default:break;
}
}
I_stop()
}
}
}
goto start;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -