#include <REG_MA86L104.H>
#include <intrins.h>
sbit SDA= P3^1;
sbit SCL= P3^0;
#define uchar unsigned char
#define uint unsigned int
/***************for 24c02************************************************************/
#define WriteDeviceAddress 0xa0
#define ReadDviceAddress 0xa1
#define NOP5() _nop_();_nop_();_nop_();_nop_();_nop_()
/***************************************************************************/
void Start()
{
SDA=1;
NOP5();
SCL=1;
NOP5();
SDA=0;
NOP5();
SCL=0;
NOP5();
}
/***************************************************************************/
void Stop()
{
SDA=0;
NOP5();
SCL=1;
NOP5();
SDA=1;
NOP5();
SCL=0;
NOP5();
}
/***************************************************************************/
void Ack()
{
SDA=0;
NOP5();
SCL=1;
NOP5();
SCL=0;
NOP5();
SDA=1;
}
/***************************************************************************/
void NoAck()
{
SDA=1;
NOP5();
SCL=1;
NOP5();
SCL=0;
NOP5();
}
/***************************************************************************/
bit TestAck(void)
{
bit ErrorBit;
SDA=1;
NOP5();
SCL=1;
NOP5();
ErrorBit=SDA;
NOP5();
SCL=0;
return(ErrorBit);
}
/***************************************************************************/
void Write8Bit(unsigned char input)
{
unsigned char temp;
for(temp=8;temp!=0;temp--)
{
SDA=(bit)(input&0x80);
NOP5();
SCL=1;
NOP5();
SCL=0;
NOP5();
input=input<<1;
}
}
/***************************************************************************/
void write24c02(unsigned char *Wdata,unsigned char RomAddress,unsigned char number) {
Start();
Write8Bit(WriteDeviceAddress);
TestAck();
Write8Bit(RomAddress);
TestAck();
for(;number!=0;number--) {
Write8Bit(*Wdata);
TestAck();
Wdata++;
}
Stop();
}
/***************************************************************************/
unsigned char Read8Bit()
{
unsigned char temp,rbyte=0;
for(temp=8;temp!=0;temp--)
{
SCL=1;
rbyte=rbyte<<1;
rbyte=rbyte|((unsigned char)(SDA));
SCL=0;
}
return(rbyte);
}
/***************************************************************************/
void read24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes)
{
Start();
Write8Bit(WriteDeviceAddress);
TestAck();
Write8Bit(RomAddress);
TestAck();
Start();
Write8Bit(ReadDviceAddress);
TestAck();
while(bytes!=1)
{
*RamAddress=Read8Bit();
Ack();
RamAddress++;
bytes--;
}
*RamAddress=Read8Bit();
NoAck();
Stop();
}
main()
{
uchar date[10];
read24c02 (&date,0x0,10);
write24c02(&date,0x0,10);
while(1);
}
iic.rar_I2C多主通信_IIC多主_io 模拟 i2c
版权申诉
191 浏览量
2022-09-14
19:33:34
上传
评论
收藏 704B RAR 举报
小波思基
- 粉丝: 70
- 资源: 1万+
最新资源
- 111111111111111111
- Screenshot_2024-04-30-21-47-24-26.jpg
- Cpp1.cpp1111111111
- 利用ERP流程操作的整个订单流程.ppt
- 最新二开版本源码博客论坛源码,UI很漂亮,可切换皮肤界面.rar
- ModStartBlog现代化个人博客系统 v5.2.0源码.rar
- 带posix库的mingw编译器
- SoraAI是一款功能强大的AI助手,由OpenAI开发,以其出色的语音识别技术、广泛的知识库和高度的人工智能特性而备受瞩目
- Thinkphp开发大气响应式个人博客青春博客网站源码.rar
- 最新PHP博客网站程序源码 ThinkPHP.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0