📄 12_2.c
字号:
//并口多机通信主要程序代码:
//主机:
#include<REGX52.h>
……
sbit hand1=P2^1; //与U1单片机的握手信号
sbit hand2=P2^2; //与U2单片机的握手信号
unsigned char idata group1[10];
unsigned char idata group2[10];
unsigned int t;
unsigned char i;
//……
main()
{
for (t=0;t<=2000;t++) //延时,等待从机可靠复位
;
P0=0x01; //发送U1单片机地址
for(i=0;i<10;i++)
{
while(hand1!=0); //等待U1单片机的握手信号
group1[i]=P0; //接收U1单片机上的数据
while(hand1==0); //等待U1单片机的下一个握手信号
}
P0=0x02; //发送U2单片机地址
for(i=0;i<10;i++)
{
while(hand2!=0); //等待U2单片机的握手信号
group2[i]=P0; //接收U2单片机上的数据
while(hand2==0); //等待U2单片机的下一个握手信号
}
//……
}
//从机1(U1)主要程序为:
#include < AT892051. h >
//……
sbit dir=P3^2; //74LS245的定向信号
sbit en=P3^3; //74LS245的赋能信号
sbit hand=P3^4; //与主机的握手信号
unsigned char data1[10];
unsigned char i,j;
……
main()
{
loop:
while(i!=10);
dir=0;
en=0; //允许接收主机的数据
P1=0xff; //准备读
for(i=0;i<10;i++)
{
if(P1==0x01) //主机发出从机1的地址信号
goto send;
}
en=1; //禁止接收主机的数据
goto loop;
send:
for(i=0;i<10;i++)
{
dir=1; //准备发数据给主机
P1=data1[i];
hand=0; //发出握手信号
for(j=0;j<5;j++) //延时
{
;
}
hand=1; //停止握手信号
}
en=1; //禁止发送数据
dir=0;
goto loop;
……
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -