单片机普通IO口模拟IIC多机通信本人已测试通过Word格式文档下载.docx
- 文档编号:21592000
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:13
- 大小:16.67KB
单片机普通IO口模拟IIC多机通信本人已测试通过Word格式文档下载.docx
《单片机普通IO口模拟IIC多机通信本人已测试通过Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机普通IO口模拟IIC多机通信本人已测试通过Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
bitSTART_flag=0;
ucharDEV_address;
voiddelay()
{
uinti;
for(i=0;
i<
=100;
i++);
}
voidinit()
sda=1;
scl=1;
STROBE=1;
voidstart()//启动I2C总线
sda=1;
delay();
scl=1;
sda=0;
//此处scl不能拉低,否则两单片机通信时时序无法保持一致
/*
voidstart_scan()
bitPreState;
bitNowState;
charNN=10;
PreState=sda;
//记录当前SDA状态,用作比较
while(scl==1&
&
NN--)
{
NowState=sda;
if(PreState==1&
NowState==0)//如果为下降沿则为开始信号
{
START_flag=1;
}
}
*/
voidSend_Date(ucharj)
{
unsignedchari;
bittemp;
while(STROBE);
if(STROBE==0)
{delay();
delay();
for(i=0;
i<
8;
i++)
if((j<
<
i)&
0x80)temp=1;
elsetemp=0;
sda=temp;
、
scl=0;
scl=1;
scl=0;
sda=1;
//释放数据线
delay();
STROBE=1;
}
ucharReceive_Date()
uchari,j,k=0xff;
STROBE=0;
if((!
scl)&
(sda))
returnk;
if(STROBE==0)
{
while(scl);
for(i=0;
8;
while(!
scl);
if(sda==1)
j=1;
else
j=0;
k=(k<
1)|j;
delay();
while(scl);
}
P2=k;
returnk;
returnk;
voidChackRdd()
if(!
STROBE)
while(scl);
while(!
if(sda==1)
j=1;
else
j=0;
k=(k<
while(scl);
P0=k;
R_W=k&
0x01;
DEV_address=(k&
0xfe);
voidB_work()
if(STROBE)
ChackRdd();
if(DEV_address==LOC_address)
{
if(R_W)
STROBE=(~STROBE);
Send_Date(0x55);
elseif(!
R_W)
Receive_Date();
voidmain()
{
init();
while
(1)//以下为测试代码。
while(STROBE)
start();
while(!
STROBE);
/*while(STROBE)
Send_Date(0xaa);
//发送地址和写指令
}
Send_Date(0x99);
//发送数据0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
Send_Date(0xab);
//发送地址和读指令
{
Receive_Date();
//单片机B的代码
#defineLOC_address0xaa
P2=k;
returnk;
//置低信号告诉单片机A、单片机B已做好准备接收
//等待A响应
start_scan();
if(START_flag)
START_flag=0;
STROBE=0;
ChackRdd();
if(DEV_address==LOC_address)
{
if(R_W)
{
STROBE=(~STROBE);
STROBE=1;
//必须再次置高,使得两单片机在发送和接收数据时时序保持一致
Send_Date(0x80);
}
elseif(!
Receive_Date();
while
(1)
B_work();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 普通 IO 模拟 IIC 通信 本人 测试 通过