⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c.c

📁 ADI公司ADuC841单片机源程序。 I2C.c: ADuC841单片机I2C接口函数。 kei841.h: ADuC841单片机内部寄存器定义。 delay.c:精确延时资函数。 main
💻 C
字号:
#include<kei841.h>
#include<delay.h>


void I2C_MasterMode(void){
    I2CM=1;   //mode
	MDO=1;    //Master Data Out
	MCO=1;    //Master Clock Out
	MDE=1;	  //Master Data Out Enable
	MDI=0;	  //Master Data In
}

void I2C_SlaveMode(void){
	I2CM=0;   //mode
	I2CCON=0;
}


void I2C_STRAT(void){
	MDE=1;
	delay1(0x0F);
	MDO=0;
	delay1(0x0F);
	MCO=0;	
	delay1(0x0F);	
}

void I2C_STOP(void){
	MDE=1;
	MDO=0;
	delay1(0x0F);
	MCO=1;
	delay1(0x0F);
	MDO=1;
	delay1(0x1F);
}





char I2C_SendData(char DATA){
	char flag=0;
	char counter=8;
	ACC=DATA;
    MCO=0;
	MDE=1;
	do{	
		DATA=DATA<<1;
		MDO=CY;	
		delay1(0x0F);
		MCO=1;	
		delay1(0x1F);
		MCO=0;
		delay1(0x0F);
	}while(--counter);
	
	MDE=0;
	delay1(0x0F);
	MCO=1;
	delay1(0x0F);
	if(MDI==1)  flag=1;  //get NACK;
	delay1(0x0F);
	MCO=0;
	delay1(0x0F);
	return flag;
}


char I2C_GetData(void){

	char counter=8;
	char DATA=0;
	MCO=0;
	MDE=0;
	do{	
		MCO=1;
		delay1(0x1f);
		CY=MDI;
		MCO=0;
		delay1(0x1f);		
		DATA=((DATA+(char)CY)<<1);		
	}while(--counter);
	
	MDO=1;  //send NACK
	MDE=1;
	delay1(0x0f);	
	MCO=1;
	delay1(0x1f);
	MCO=0;
	delay1(0x0f);
	MDO=0;
	return DATA;
}

⌨️ 快捷键说明

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