?? cxc2.c
字號:
/*****************************************************************
多機通信,以三機為例,從機地址0x01,0x02
可以正確的發(fā)送命令和地址以及地址的返回,
發(fā)送數(shù)據(jù)0xd1,0xd2,接收數(shù)據(jù)0xc1,0xc2.
作者:杜國華 日期:2005/7/14
******************************************************************/
#include <reg51.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
uchar address=0x02;
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==0xd2)
{
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=0xc2;
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 + -