//这个发送端代码
#include "reg51.h"
#include "myheader.h"
#define uchar unsigned char
long int sleep_i=0;
long int main_i=0;
void main()
{
uchar sendx[6]={2,0,2,3,8,1};
sleep(2000);
TMOD=0x20;
TH1=0XF4;//根据波特率计算公式这里需要设置为这么多才能够在串行数据传输模式1的状况下实现波特率2400B/S
TL1=0XF4;
TR1=1;
SCON=0X40;
while(1)
{
for(main_i=0;main_i<6;main_i++)
{
SBUF=sendx[main_i];
while(TI==0);//这个是清除发送的中断,不是清除闹钟中断
TI=0;
}
}
}
void sleep(long int a)
{
for(sleep_i=0;sleep_i<a;sleep_i++)
{
;
}
}
后面这个是接收端代码文章来源:https://www.toymoban.com/news/detail-641850.html
#include "reg51.h"
#include "myheader.h"
#define uchar unsigned char
int szc[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int bufferc[6]={0};
int sza[6]={0x01,0x02,0x04,0x08,0x10,0x20};
void display()
{
uchar i=0;
uchar num=0;
for(i=0;i<6;i++)
{
num=bufferc[i];
P2=szc[num];
P1=sza[i];
sleep(50);
P2=0xff;
}
}
void main()
{
uchar i=0;
TMOD=0x20;
TH1=0XF4;//根据波特率计算公式这里需要设置为这么多才能够在串行数据传输模式1的状况下实现波特率2400B/S
TL1=0XF4;
TR1=1;
SCON=0x40;//串口工作与方式1,定义了传送数据的格式
REN=1;
for(i=0;i<6;i++)
{
while(RI==0)
{
;
}
bufferc[i]=SBUF;
RI=0;
}
while(1)
{
display();
}
}
void sleep(long int a)
{
uchar i=0;
for(i=0;i<a;i++)
{
;
}
}
另外发现一个奇怪的现象:如果把T1口改为T0口没有办法正常模拟文章来源地址https://www.toymoban.com/news/detail-641850.html
到了这里,关于c51单片机串行通信示例代码(单片机--单片机通信)(附带proteus线路图)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!