會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





i2c問題
初級會員
註冊日期:
2015/07/18 15:05
所屬群組:
註冊會員
文章: 22
等級: 3; EXP: 41
HP : 0 / 60
MP : 7 / 387
離線
各位先進
小弟使用p16f1828 想讀取24c02 , 參考了w301的範例程式 .
但不知為何 , 程式總是一直卡在SSP1IF , 實在不知是什麼問題 .
想請各位幫我看一下 . 感謝 .

unsigned char WriteI2C( unsigned char data_out )
{
SSP1BUF = data_out; // write single byte to SSPBUF
if (WCOL) // test if write collision occurred
return ( -1 ); // if WCOL bit is set return negative #
else
{
while(BF); // wait until write cycle is complete
IdleI2C(); // ensure module is idle
if ( SSP1CON2bits.ACKSTAT ) // test for ACK condition received
return ( -2 );
else return ( 0 ); // if WCOL bit is not set return non-negative #
}
}

unsigned char ReadI2C( void )
{
RCEN = 1; // enable master for 1 byte reception
while ( !BF ); // wait until byte received
return ( SSP1BUF ); // return with read byte
}

void AckI2C( void )
{
ACKDT = 0; // set acknowledge bit state for ACK
ACKEN = 1; // initiate bus acknowledge sequence
}

void NotAckI2C( void )
{
ACKDT = 1; // set acknowledge bit for not ACK
ACKEN = 1; // initiate bus acknowledge sequence
}

void RestartI2C( void )
{
RSEN = 1; // initiate bus restart condition
}
void StopI2C( void )
{
PEN = 1; // initiate bus stop condition
}

void I2C_Done(void)
{
while (!SSP1IF); // Completed the action when the SSPIF is Hi.

SSP1IF=0; // Clear SSPIF
}

今天 12:28:03

6月27日 13:29:44
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
線上教學影片
網頁捷徑
2017 Summer Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project