两个单片机之间的串口通信实例

来源:本站
导读:目前正在解读《两个单片机之间的串口通信实例》的相关信息,《两个单片机之间的串口通信实例》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《两个单片机之间的串口通信实例》的详细说明。
简介:本文主要为两个单片机之间的串口通信实例,希望对你的学习有所帮助。

两个单片机之间的串口通信实例

利用单片机a将一段流水灯控制程序发送到单片机b,来控制单片机b的P1口,点亮8位LED灯。

实例分析:

a完成发送,b完成接收。编写程序设置a,令SM0=0,SM1=1(串行口工作方式1)。设置b,令SM0=0,SM1=1,REN=1,使接收允许。

源程序

1)数据发送程序

#include<reg51.h>

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; //若发送完成,TI自动置1,这里把它清零

}

void delay(void) //延时函数

{

unsigned char m,n;

for(m=0;m<200;m++) //延时约50ms

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

}

void main(void)

{

unsigned char i;

TMOD=0x20; //定时器T1工作于方式2(可自动重装的8位定时器)

SCON=0x40; //串口工作方式1,不允许接收

PCON=0x00; //波特率不倍增

TH1=0xf4; //波特率为2400b/s

TL1=0xf4;

TR1=1; //启动定时器T1(T1作波特率的发生器)

while(1)

{

for(i=0;i<8;i++) //一共8位的流水灯控制码

{

send(tab[i]); //发送数据

delay(); //每50ms发送一次数据

}

}

}

2)数据接收程序

#include<reg51.h>

unsigned char receive(void) //数据接收函数

{

unsigned char dat;

while(RI==0); //数据没有接收完毕时等待接收

RI=0; //接收完毕时清零

dat=SBUF; //将接收缓冲器中的数据存入dat

return dat; //将接收到的数据返回

}

void main(void)

{

TMOD=0x20; //设置定时器T1工作于方式2

SCON=0x50; //串口工作方式1,允许接收数据

PCON=0x00; //波特率不倍增

TH1=0xf4; //波特率为2400b/s

TL1=0xf4;

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

REN=1; //允许接收数据

while(1)

{

P1=receive(); //将接收到的数据送到P1口显示

}

}把这两个程序分别烧写到两块板子上,然后用连接线分别连接两个板子的发送引脚和接收引脚,然后效果就出来了。这只是一个发送一个接受的情况。

提醒:《两个单片机之间的串口通信实例》最后刷新时间 2024-03-14 00:53:08,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《两个单片机之间的串口通信实例》该内容的真实性请自行鉴别。