?? 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 + -