#include <STC15F2K60S2.H>
#include "intrins.h"
#include "sys.h"
/* # I2C代码片段说明
1. 本文件夹中提供的驱动代码供参赛选手完成程序设计参考。
2. 参赛选手可以自行编写相关代码或以该代码为基础,根据所选单片机类型、运行速度和试题
中对单片机时钟频率的要求,进行代码调试和修改。
*/
sbit scl = P2^0;
sbit sda = P2^1;
#define DELAY_TIME 5
//
static void I2C_Delay(unsigned char n)
{
do
{
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
}
while(n--);
}
//
void I2CStart(void)
{
sda = 1;
scl = 1;
I2C_Delay(DELAY_TIME);
sda = 0;
I2C_Delay(DELAY_TIME);
scl = 0;
}
//
void I2CStop(void)
{
sda = 0;
scl = 1;
I2C_Delay(DELAY_TIME);
sda = 1;
I2C_Delay(DELAY_TIME);
}
//
void I2CSendByte(unsigned char byt)
{
unsigned char i;
for(i=0; i<8; i++){
scl = 0;
I2C_Delay(DELAY_TIME);
if(byt & 0x80){
sda = 1;
}
else{
sda = 0;
}
I2C_Delay(DELAY_TIME);
scl = 1;
byt <<= 1;
I2C_Delay(DELAY_TIME);
}
scl = 0;
}
//
unsigned char I2CReceiveByte(void)
{
unsigned char da;
unsigned char i;
for(i=0;i<8;i++){
scl = 1;
I2C_Delay(DELAY_TIME);
da <<= 1;
if(sda)
da |= 0x01;
scl = 0;
I2C_Delay(DELAY_TIME);
}
return da;
}
//
unsigned char I2CWaitAck(void)
{
unsigned char ackbit;
scl = 1;
I2C_Delay(DELAY_TIME);
ackbit = sda;
scl = 0;
I2C_Delay(DELAY_TIME);
return ackbit;
}
//
void I2CSendAck(unsigned char ackbit)
{
scl = 0;
sda = ackbit;
I2C_Delay(DELAY_TIME);
scl = 1;
I2C_Delay(DELAY_TIME);
scl = 0;
sda = 1;
I2C_Delay(DELAY_TIME);
}
//unsigned char Read_AIN1()
//{
// unsigned int dat;
//
// I2CStart();
// I2CSendByte(0x91);
// I2CWaitAck();
// dat = I2CReceiveByte();
// I2CSendAck(1);
// I2CStop();
//
// return dat;
//}
//void AIN1_Init()
//{
// I2CStart();
// I2CSendByte(0x90);
// I2CWaitAck();
// I2CSendByte(0x01);
// I2CWaitAck();
// I2CStop();
//
// I2C_Delay(DELAY_TIME);
//}
//unsigned char Read_AIN3()
//{
// unsigned int dat;
//
// I2CStart();
// I2CSendByte(0x91);
// I2CWaitAck();
// dat = I2CReceiveByte();
// I2CSendAck(1);
// I2CStop();
//
// return dat;
//}
//void AIN3_Init()
//{
// I2CStart();
// I2CSendByte(0x90);
// I2CWaitAck();
// I2CSendByte(0x03);
// I2CWaitAck();
// I2CStop();
//
// I2C_Delay(DELAY_TIME);
//}
void Write_24C02(uch addr,uch dat)
{
I2CStart();
I2CSendByte(0xa0);
I2CWaitAck();
I2CSendByte(addr);
I2CWaitAck();
I2CSendByte(dat);
I2CWaitAck();
I2CStop();
I2C_Delay(DELAY_TIME);
}
uch Read_24C02(uch addr)
{
unsigned int dat;
I2CStart();
I2CSendByte(0xa0);
I2CWaitAck();
I2CSendByte(addr);
I2CWaitAck();
I2CStart();
I2CSendByte(0xa1);
I2CWaitAck();
dat = I2CReceiveByte();
I2CSendAck(1);
I2CStop();
I2C_Delay(DELAY_TIME);
return dat;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
蓝桥杯省赛常用基本模块(模块化编程) (593个子文件)
project.uvgui.31629 172KB
project.uvgui.31629 171KB
project.uvgui.31629 170KB
project.uvgui.31629 90KB
project.uvgui.31629 90KB
project.uvgui.31629 90KB
project.uvgui.31629 90KB
project.uvgui.31629 90KB
project.uvgui.31629 89KB
project.uvgui.31629 89KB
project.uvgui.31629 89KB
project.uvgui.31629 89KB
project.uvgui.31629 89KB
project.uvgui.31629 88KB
project.uvgui.31629 88KB
project.uvgui.31629 88KB
project.uvgui.31629 87KB
LED.__i 146B
main.__i 138B
LED.__i 114B
STARTUP.A51 6KB
iic.c 3KB
iic.c 3KB
iic.c 3KB
SMG.c 2KB
SMG.c 2KB
SMG.c 2KB
SMG.c 2KB
iic.c 2KB
SMG.c 2KB
main.c 1KB
SMG.c 1KB
Key.c 1KB
delay.c 1KB
delay.c 1KB
LED.c 1KB
LED.c 1KB
onewire.c 1KB
mian.c 1KB
onewire.c 1KB
ds1302.c 1KB
main.c 1KB
SMG.c 1KB
SMG.c 1KB
delay.c 1018B
delay.c 1018B
delay.c 1018B
delay.c 1018B
delay.c 1018B
delay.c 1018B
delay.c 1018B
delay.c 1018B
delay.c 1018B
delay.c 1018B
mian.c 953B
main.c 842B
delay.c 824B
delay.c 824B
delay.c 824B
delay.c 819B
delay.c 819B
main.c 771B
LED.c 769B
main.c 758B
Temp_Init.c 711B
main.c 669B
ultrasonic.c 625B
mian.c 619B
main.c 616B
mian.c 559B
main.c 543B
LED.c 510B
LED.c 510B
LED.c 510B
LED.c 510B
LED.c 505B
LED.c 505B
LED.c 462B
InitEX.c 449B
Sys_Init.c 440B
Key.c 434B
Key.c 434B
Key.c 434B
Key.c 432B
Key.c 432B
Key.c 432B
SMG.c 380B
SMG.c 376B
USART_Init.c 372B
main.c 363B
Sys_Init.c 346B
Sys_Init.c 346B
Sys_Init.c 346B
Sys_Init.c 346B
Sys_Init.c 346B
Sys_Init.c 346B
Sys_Init.c 346B
main.c 280B
USART_Init.c 272B
Sys_Init.c 263B
共 593 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
洛煌
- 粉丝: 14
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功