📄 cxc1.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 + -