i2c_demo.c

来自「pic 单片机i2c源码」· C语言 代码 · 共 67 行

C
67
字号
/* I2C test program that writes & reads data to an I2C EEPROM device. */

#include <pic.h>
#include "delay.h"
#include "i2c.h"

#define ROM 0xA0        /* I2C EEPROM */

void flashled(void) {           /* flash a led on RB0 */
	while(1) {
            RB0 = 1;
            DelayMs(200);
            RB0 = 0;
            DelayMs(200);
	}
}


void WriteByte(unsigned char addr, unsigned char byte) {
	i2c_WriteTo(ROM);
	if (i2c_PutByte(addr)==I2C_ERROR)
            flashled();
	if (i2c_PutByte(byte)==I2C_ERROR)
            flashled();
}

int ReadByte(unsigned char addr) {
	i2c_WriteTo(ROM);
	if (i2c_PutByte(addr)==I2C_ERROR)
            flashled();
        i2c_ReadFrom(ROM);
	return i2c_GetByte(I2C_LAST);
}

void main(void) {
unsigned char count,val;

TRISB=0;        /* use a led on RB0 - set as output */
PORTB=0;
RB0=0;

/* initialize i2c */
#ifdef I2C_MODULE
    SSPMode(MASTER_MODE);
    SSPEN = 1;
    CKP = 1;
#else
    SCL_DIR = I2C_OUTPUT;
    SDA_DIR = I2C_OUTPUT;
    SDA = 0;
    SCL = 0;
#endif


while(1) {
    for(count=0; count < 10; ++count) {
        WriteByte(count,count);           /* write to I2C EEPROM */
        val = ReadByte(count);            /* read back value */
        if (val != count)                 /* verify */
            flashled();
    }
    DelayMs(200);
}
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?