51单片机串口通信例子

来源:本站
导读:目前正在解读《51单片机串口通信例子》的相关信息,《51单片机串口通信例子》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《51单片机串口通信例子》的详细说明。
简介:本例子是在别人的版本修改而来的,因本人没有11.0592MHz的晶振,进而采用12MHz的,经过波特率的调整发现在波特率为1200时,定时器工作在方式二,穿口工作在模式二,且SMOD=1.此时定时器的TH1=TL1=0xCC,此时调试串口没有错误。

发送例子:

#include<reg52.h>

#include<stdio.h>

void delay(unsigned int i);

char code message[]="welcome";

unsigned char a;

void main(void)

{

SCON=0x50; //REN=1 ,串口工作模式2;

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

PCON=0x80;

TH1=0xCC;

TL1=0xCC;

TR1=1;//启动定时器

ES=1; //串行中断允许

EA=1;//开总终端

while(1)

{

a=0;

while(message[a]!='')

{

SBUF=message[a];

while(!TI)//等待一帧数据(一个字符)发完,TI置1,

TI=0;//让TI为0就继续接收,直至跳出while。

a++;//接收下一字符

delay(1000);

}

}

}

void delay(unsigned int i)

{

unsigned char j;

for(i;i>0;i--)

for(j=200;j>200;j--);

}

接收例子:

#include<reg52.h>

#include<stdio.h>

sbit BEEP=P1^4;

unsigned char b;

void main(void)

{

.................

BEEP=1;

while(1)

{

if(RI==1) //如果一帧数据接收完毕

{

RI=0;//RI清零;继续接收下一帧数据

P1=SBUF;//数据送P1口

}

} //如果P1^4为0或1,可驱动蜂鸣器发声

} //即发送的数据bit4为0或1

发送加接收例子:

#include<reg52.h>

bit flag;

unsigned int redata,sendata;

void main(void)

{

..................

while(1)

{

if(flag==1)

{

SBUF=sendata;//发送数据

while(TI==0);//等待发送完毕

TI=0;//发送完毕,TI=0

flag=0;//flag清零

}

}

}

void ser_int(void) interrupt 4 using 1

{

if(RI==1) //数据接收完毕

{

RI=0;//等待接收下一帧数据

redata=SBUF;

sendata=redata;//将接收的数据发回

flag=1; //flag置1,发回接收数据

}

}

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