void Data_TxD()
{
P10=1; //485控制端
SBUF=0x97; //帧头字节
while(TI==0);
TI=0;
SBUF=0x0f;
while(TI==0);
TI=0;
for(sign=0;sign<5;sign++)
{
SBUF=Data_Buffer[sign];
while(TI==0);
TI=0;
}
SBUF=0x99; //帧尾字节
while(TI==0);
TI=0;
P10=0;
}
void serial (void) interrupt 4 using 1 //中断服务函数
{
unsigned char Buffer;
if(RI)
{
RI=0;
ES=0;
P10=0;
Buffer=SBUF;
if(Buffer==0x97)
{
port=0;
}
if(port<8)
{
DATA[port]=Buffer;
port++;
}
if(Buffer==0x99)
{
sign=0;
}
//P10=1;
}
ES=1;
}
void UART_Initialization(void) //UART配置
{
TMOD=0x20;
TL1=0xfd;
TH1=0xfd;
PCON=0x00;
TR1=1;
SCON=0x50;
ES=1;
EA=1;
}
/*****************主程序******************/
/**/
void main(void)
{
P10=0;
UART_Initialization(); //UART初始化
while(1)
{
Rec_Data(); 数据采集函数
if(DATA[0]==0x97&&DATA[7]==0x99&&DATA[2]==0x01)
{
Data_Buffer[0]=0x01; //地址字节
Data_Buffer[1]=Adata[0]; //数据转存
Data_Buffer[2]=Adata[1];
Data_TxD(); // 数据返回
}
}
} |