|
unsigned char PCF8591_Conv(unsigned char addr,unsigned char channel)
{
unsigned char ad_result=0;
I2CStart();
if(!I2CWriteByte(addr<<1)) //器件尋址 方向上是寫 寫命令 7位地址進(jìn)行移位看最低位是0還是1決定是讀還是寫0是寫操作
{
I2CStop();
return 0;
}
I2CWriteByte(channel); //寫命令字節(jié) 選擇哪個(gè)通道 是采用單端還是差分 是裝換
I2CStart(); //重啟總線
I2CWriteByte((addr<<1)|0x01); //最后一位是1 進(jìn)行讀操作
I2CReadByte(); //空讀一次,這一次是上一次的轉(zhuǎn)換結(jié)果
SendAck(0);
ad_result=I2CReadByte();
SendAck(1);
I2CStop();
return ad_result;
}
程序一直卡死在
if(!I2CWriteByte(addr<<1)) //器件尋址 方向上是寫 寫命令 7位地址進(jìn)行移位看最低位是0還是1決定是讀還是寫0是寫操作
{
I2CStop();
return 0;
}
這段為I2C的代碼
#include "I2C.h"
//bit ack;
void I2CStart() //I2C起始信號(hào)函數(shù)
{
I2C_SCL=1; //總線空閑時(shí) SCL SDA都為高電平
I2C_SDA=1;
I2CDelay(); // SCL保持4.7us之后,拉低SDA,產(chǎn)生起始信號(hào)
I2C_SDA=0; //SDA先拉低
I2CDelay();
I2C_SCL=0; //延時(shí)4.7us再拉低
}
bit I2CWriteByte(unsigned char dat) // I2C寫一個(gè)字節(jié)(8個(gè)位)函數(shù) 一個(gè)字節(jié)8個(gè)bit
{
unsigned char temp;
bit ack;
for(temp=0x80;temp!=0;temp>>=1)
{
if((temp&dat)==0) //當(dāng)前位為0總線寫0,
I2C_SDA=0;
else //當(dāng)前位為1寫1
I2C_SDA=1;
I2CDelay(); //延時(shí)至少4us,SCL保持低
I2C_SCL=1;
I2CDelay(); //延時(shí)至少4us,SCL保持高
I2C_SCL=0; //SCL拉低
}
ack=I2CRecAck();
return (~ack);
}
bit I2CRecAck() //接受ACK函數(shù)
{
bit ack;
I2C_SDA=1; //主機(jī)再主動(dòng)釋放SDA,為ACK讀取做準(zhǔn)備
I2CDelay(); //SCL保持4.7us低電平
I2C_SCL=1; //拉高
ack=I2C_SDA; //讀取SDA
I2CDelay(); //SCL保持4.7us高電平
I2C_SCL=0; //SCL拉低
return(ack);
}
unsigned char I2CReadByte()
{
unsigned char dat=0;
unsigned char temp;
I2C_SDA=1;
for(temp=0x80;temp!=0;temp>>1)
{
I2CDelay();
I2C_SCL=1;
if(I2C_SDA==1)
{
dat|=temp;
}
else
{
dat&=~temp;
}
I2CDelay();
I2C_SCL=0;
}
return dat;
}
void SendAck(bit ack)
{
I2C_SDA=ack;
I2CDelay();
I2C_SCL=1;
I2CDelay();
I2C_SCL=0;
}
void I2CStop() //I2C結(jié)束信號(hào)函數(shù)
{
I2C_SCL=0; // SCL SDA都為低電平
I2C_SDA=0;
I2CDelay(); //延時(shí)4.7us
I2C_SCL=1; //拉高
I2CDelay(); //SCL保持4.7us高電平
I2C_SDA=1; //SDA拉高。產(chǎn)生停止信號(hào)
I2CDelay(); // 維持延時(shí)4.7us
}
|
-
-
archive.zip
2024-8-29 11:06 上傳
點(diǎn)擊文件名下載附件
58.16 KB, 下載次數(shù): 0
-
-
PCF8591.zip
2024-8-29 11:10 上傳
點(diǎn)擊文件名下載附件
24.95 KB, 下載次數(shù): 0
|