📄 serils.c
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar array[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x08,0x49,0x49,0x7F,0x08,0x49,0x49,0x7F,
0x00,0x02,0x04,0x08,0x18,0x24,0x42,0x81,
0xFF,0x4A,0x2A,0x1C,0xFF,0x08,0x08,0x08,
0x08,0xFF,0x89,0x04,0x7F,0x14,0x1C,0x63,
0x24,0x24,0x7E,0x24,0x7E,0x24,0x24,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
//将主机的波特率设为4800bit,并将串行口设为方式3,TB8设为1,作为发送地址帧
void init_scon()
{
TMOD=0x20;
TH1=0xf3;
TL1=0xf3;
SCON=0xd8;
PCON=0x80;
TR1=1;
}
//串行口接收程序
uchar receive()
{
uchar temp;
while(RI==0);
RI=0;
temp=SBUF;
return temp;
}
void delay(uint n)
{
uint i;
while(n--)
for(i=0;i<125;i++);
}
//串行口发送程序
void send(uchar x)
{
SBUF=x;
while(TI==0);
TI=0;
}
int main(void)
{
uchar send_adr;//从机地址
uchar back_adr;//由从机发送主机的返回地址
uint i;
init_scon();
while(1)
{
send_adr=0x01;//设从机的地址为0X01
send(send_adr);//发送从机地址
back_adr=receive();//接收从机发回主机的发回地址
if(back_adr==send_adr) //如果返回地址与主机发送的地址相同
{
TB8=0; //则将发送地址标志1改为发送数据标志0
for(i=0;i<56;i++) //然后连续发送5个数据
send(array[i]);
}
//delay(5000);//延时5秒后,发送数据到第二块单片机
TB8=1; //把发送数据标志0改为发送地址标志1,向第二快从机发送地址
send_adr=0x02;//设第二块从机的地址为0X02
send(send_adr); //发送第二快的单片机地址
back_adr=receive(); //接收从机发回来的地址(及确认信号)
if(back_adr==send_adr)
{
TB8=0;
for(i=0;i<56;i++)
send(array[i]);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -