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

📄 cxc1.c

📁 单片机三机通信
💻 C
字号:
/*****************************************************************
   多机通信,以三机为例,从机地址0x01,0x02
   可以正确的发送命令和地址以及地址的返回,
   发送数据0xd1,0xd2,接收数据0xc1,0xc2.
   作者:杜国华   日期:2005/7/14
******************************************************************/
#include <reg51.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int

uchar address=0x01;
uchar command[2]={0x11,0x12};   //11--send,12--receive
uchar adr=0,flag_receive=0,flag_dat=0,com_choice,flag_com,com;

void delay()
{
	uint i;
	for(i=0;i<30000;i++)
		;
}

void string() interrupt 4
{
	if(RI==1)
	{
		RI=0;
		adr=SBUF;
		if (RB8==1)
		{
			if(adr==address)
			{
				flag_receive=1;
				SM2=0;
				TB8=1;
				SBUF=address;
				delay();
				delay();
				TB8=0;
				adr=0;
                                
			}
			else
			{
				flag_receive=0;
				SM2=1;
			}
		}

		else if(RB8==0)
		{
			if(adr==command[0])
			{
				com=0;
				flag_com=0;
			}
			else if(adr==command[1])
			{
				com=1;
				flag_com=1;
			}
			if(com==0)
			{
				if(adr==0xd1)
				{
					flag_dat=1;
				}
				else
				{
					flag_dat=0;
				}
			}
		}
	}
	else
		TI=0;
}

void jieshou()
{
        uchar i;
	if(flag_receive==1)
	{
		if(flag_dat==1)
		{
			for(i=0;i<6;i++)
			{
				P1=0xff;
				delay();
				P1=0x00;
				delay();
			}
			flag_dat=0;
		}

	}
}


void fasong()
{
	if(flag_receive==1)   //	按键值的改变 flag_receive=0
    {
		P1=0xff;
		delay();
		SBUF=0xc1;
		P1=0x00;
		delay();
	}

}



void main (void)
{
    SCON=0xf0;
    PCON&=0x7f;
    TMOD=0x20;
    TH1=0xe8;
    TL1=0xe8;
    ES=1;
    EA=1;
//	SM2=0;
    P1=0x00;
    //TB8=1;
    TR1=1;
	while (1)
	{
		if(flag_com==0)
		{
            jieshou();
		}
		else if(flag_com==1)
		{
            fasong();
		}
		P1=0xff;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -