⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12_2.c

📁 51事例原代码 事例多多 应该对初学者很有用
💻 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 + -