?? iicok.c
字號:
0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xbd,0xdd,0xdd,0xdd,0xdd,0xdd,0xbb,0xbb,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x9b,0xdd,
0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xbb,0xbd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xdd,
0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xab,0xbb,0xbb,0xbd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,
0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xbd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,
0xaa,0xaa,0xaa,0xaa,0xaa,0xab,0xbd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,
0xaa,0xaa,0xaa,0xaa,0xab,0xbd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,
0xaa,0xaa,0xaa,0xab,0xbd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,
0xaa,0xaa,0xaa,0xbd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,
0xaa,0xaa,0xab,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,
0xaa,0xaa,0xbb,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,
0xaa,0xab,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,
0xab,0xbd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,
};
void start(void)
{
SCL=0;
SDA=1;
SCL=1;
SDA=0;
SCL=0;
}
//=======================================
//FUNCTION:ROUTES TO PROVIDE A STOP SIGNAL
void stop(void)
{
SCL=0;
SDA=0;
SCL=1;
SDA=1;
SCL=0;
}
//=====================================
//FUNCTION:ROUTES TO PROVIDE ACK SINGAL
void 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 MASTER
uchar 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 WRITE
void writebyte(uint add,uchar wbyte)//add為寫入地址,wbyte為寫入數據
{
uchar temph,templ;
temph=(uchar)(add/256);
templ=(uchar)(add%256);
if(!STE)
return;
SEN=0;
if(!STE)
{
SEN=1;
SCL=1;
SDA=1;
return;
}
start(); //開始信號
outbyte(IIC_WRITE|(temph<<1)); //寫命令
nack(1); //等待應答
outbyte(templ); //寫地址
nack(1);
outbyte(wbyte); //寫數據
nack(1); //等待應答
stop(); //停止信號
SCL=1;
SDA=1;
SEN=1;
}
//=====================================================
//FUNCTION:RANDOM READ.'add' IS THE ADDRESS WANT TO READ
uchar readbyte (uint add)//add為讀地址
{
uchar temp,temph,templ;
temph=(uchar)(add/256);
templ=(uchar)(add%256);
if(!STE)
return 0XFF;
SEN=0;
if(!STE)
{
SCL=1;
SDA=1;
SEN=1;
return 0XFF;
}
start(); //開始信號
outbyte(IIC_WRITE|(temph<<1)); //寫命令
nack(1); //等待應答
outbyte(templ); //寫地址
nack(1);
start(); //開始信號
outbyte(IIC_READ|(temph<<1)); //讀命令
nack(1); //等待應答
temp=inbyte(); //讀數據
nack(0); //無應答
stop(); //停止信號
SEN=1;
SCL=1;
SDA=1;
return(temp);
}
//=================================================
//連寫函數
//add為讀起始地址,ptr數據保存指針,writelen為寫入數據長度
uchar writebyteseq(uint add,uchar *ptr,uint writelen)
{
//uchar temp;
uchar temph,templ;
uint i;
temph=(uchar)(add/256);
templ=(uchar)(add%256);
if(!STE)
return 0XFF;
SEN=0;
if(!STE)
{
SCL=1;
SDA=1;
SEN=1;
return 0XFF;
}
start();
outbyte(IIC_WRITE|(temph<<1));
nack(1);
outbyte(templ);
nack(1);
for(i=0;i<writelen;i++)
{
outbyte(*(ptr+i));
nack(1);
}
stop();
SCL=1;
SDA=1;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -