pca9554.c

来自「i2c总线的程序设计」· C语言 代码 · 共 101 行

C
101
字号
#include "i2c.h"
#include <reg51.h>
#include <intrins.h>
#include "common.h"

#define WriteDeviceAddress_9554 0x40
#define ReadDeviceAddress_9554 0x41
sbit PCA9554_SCL=P3^0;
sbit PCA9554_SDA=P3^1;

void start_9554(void)
{
	PCA9554_SCL=0;
	PCA9554_SDA=1;
	nop();
	nop();
	nop();
	nop();
	nop();
	nop();

	PCA9554_SCL=1;
	nop();
	nop();
	nop();
	nop();
	nop();

	PCA9554_SDA=0;
	nop();
	nop();
	nop();
	nop();
	nop();
}

void stop_9554()
{
	PCA9554_SCL=0;
	PCA9554_SDA=0;
		nop();
	nop();
	nop();
	nop();
	nop();

	PCA9554_SCL=1;
	nop();
	nop();
	nop();
	nop();
	nop();
	//nop();
	//nop();
	//nop();
	//nop();
	
	PCA9554_SDA=1;
	nop();
	nop();
	nop();	
	nop();
	nop();
}	


void writeoutput(uchar input)
{
	start_9554();
	write8bit(WriteDeviceAddress_9554);
	write8bit(0x1);
	write8bit(input);
	stop_9554();
}

void writeconfig(uchar input)
{
	start_9554();
	write8bit(WriteDeviceAddress_9554);
	write8bit(0x3);
	write8bit(input);
	stop_9554();
}

uchar readregister(void)
{
	uchar readdata;
	start_9554();
	write8bit(WriteDeviceAddress_9554);
	write8bit(0x1);
	start_9554();
	write8bit(ReadDeviceAddress_9554);
	readdata=read8bit();
	no_ack();
	stop_9554();
	return readdata;
}



⌨️ 快捷键说明

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