📄 i2c.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 + -