📄 mastergetsi2c1.c
字号:
#if defined(__PIC24F__)
#include <p24Fxxxx.h>
#endif
#include <i2c.h>
/************************************************************************
* Function Name: MastergetsI2C1
* Description: This routine reads predetermined data string length
* from the I2C bus.
* Parameters: unsigned int : length
* unsigned char * : rdptr
* unsigned int : i2c1_data_wait
* Return Value: unsigned int
*************************************************************************/
#ifdef _I2C_V2_1
unsigned int MastergetsI2C1(unsigned int length, unsigned char * rdptr, unsigned int i2c1_data_wait)
{
int wait = 0;
while(length) /* Receive the number of bytes specified by length */
{
I2C1CONbits.RCEN = 1;
while(!DataRdyI2C1())
{
if(wait < i2c1_data_wait)
wait++ ;
else
return(length); /* Time out, return number of byte/word to be read */
}
wait = 0;
*rdptr = I2C1RCV; /* save byte received */
rdptr++;
length--;
if(length == 0) /* If last char, generate NACK sequence */
{
I2C1CONbits.ACKDT = 1;
I2C1CONbits.ACKEN = 1;
}
else /* For other chars,generate ACK sequence */
{
I2C1CONbits.ACKDT = 0;
I2C1CONbits.ACKEN = 1;
}
while(I2C1CONbits.ACKEN == 1); /* Wait till ACK/NACK sequence is over */
}
return 0; /* return status that number of bytes specified by length was received */
}
#else
#warning "Does not build on this target"
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -