微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机 基于方式1的单工通信

51单片机 基于方式1的单工通信

时间:11-23 来源:互联网 点击:
本实验主要是U1通过串口线TXD端将流水灯控制码以方式1发送到单片机U2的RXD,U2再利用接受的控制码控制流水灯点亮其P1口的8个发光二极管

单片机U1发送端

首先建立建立一个文件夹send,之后建立工作send,再添加一个send.c源文件,代码如下

#include

unsigned char code Tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void Send(unsigned char dat)

{

SBUF=dat;

while(TI==0) //若发送中断标志位没有置"1",就等待

{

;

}

TI=0;

}

void delay(void)

{

unsigned char m,n;

for(m=0;m<200;m++)

for(n=0;n<250;n++)

;

}

void main()

{

unsigned char i;

TMOD=0x20; //定时器工作在方式2

SCON=0x40; //串口工作方式1

PCON=0x00; //设置波特率为9600b/s

TH1=0xfd;

TL1=0xfd;

TR1=1;

while(1)

{

for(i=0;i<8;i++)

{

Send(Tab[i]);

delay();

}

}

}

单片机U2接收端

首先建立建立一个文件夹receid,之后建立工作receive,再添加一个receid.c源文件,代码如下

#include

unsigned char Receive(void)

{

unsigned char dat;

while(RI==0) //只要接受中断标志位RI没有被置"1"就等待,直至接受完毕

;

RI=0;

dat=SBUF;

return dat;

}

void main(void)

{

TMOD=0x20; //定时器T1工作在方式2

SCON=0x50; //串口工作在方式1,允许接受(REN=1)

PCON=0x00; //主要设置波特率为9600b/s

TH1=0xfd;

TL1=0xfd;

TR1=1; //启动定时器T1

while(1)

{

P1=Receive();

}

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top