两个80c51单片机之间怎样进行串行通信

来源:本站
导读:目前正在解读《两个80c51单片机之间怎样进行串行通信》的相关信息,《两个80c51单片机之间怎样进行串行通信》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《两个80c51单片机之间怎样进行串行通信》的详细说明。
简介:以前以为串行通信只能是单片机和PC机之间进行通信,昨天无意之中看到一个程序,是单片机和单片机之间进行通信。。这小东西真是神奇啊!昨天弄了很长时间没弄出来,今天在大神的帮助下终于拨开云雾见天日了。

案例介绍:

利用单片机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>unsignedcharcodetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//流水灯控制码voidsend(unsignedchardat)//数据发送程序{SBUF=dat;//将要发送的数据存入发送缓冲器中while(TI==0);//若发送中断标志位没有置1(正在发送数据),就等待TI=0;//若发送完成,TI自动置1,这里把它清零}voiddelay(void)//延时函数{unsignedcharm,n;for(m=0;m<200;m++)//延时约150msfor(n=0;n<250;n++);}voidmain(void){unsignedchari;TMOD=0x20;//定时器T1工作于方式2(可自动重装的8位定时器)SCON=0x40;//串口工作方式1,不允许接收PCON=0x00;//波特率不倍增TH1=0xf4;//波特率为2400b/sTL1=0xf4;TR1=1;//启动定时器T1(T1作波特率的发生器)while(1){for(i=0;i<8;i++)//一共8位的流水灯控制码{send(tab[i]);//发送数据delay();//每50ms发送一次数据}}}
2)数据接收程序
#include<reg51.h>unsignedcharreceive(void)//数据接收函数{unsignedchardat;while(RI==0);//数据没有接收完毕时等待接收RI=0;//接收完毕时清零dat=SBUF;//将接收缓冲器中的数据存入datreturndat;//将接收到的数据返回}voidmain(void){TMOD=0x20;//设置定时器T1工作于方式2SCON=0x50;//串口工作方式1,允许接收数据PCON=0x00;//波特率不倍增TH1=0xf4;//波特率为2400b/sTL1=0xf4;TR1=1;//启动定时器T1REN=1;//允许接收数据while(1){P1=receive();//将接收到的数据送到P1口显示}}

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

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