简单单片机串口通信程序

来源:本站
导读:目前正在解读《简单单片机串口通信程序》的相关信息,《简单单片机串口通信程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《简单单片机串口通信程序》的详细说明。
简介:单片机串口通信是单片机非常好用的一项功能,可以和电脑和其他的单片机进行通信和交换数据从而达到某种效果。近期我们做了个程序:利用单片机串口通信编译一个程序在打开时向电脑发送问候语“hello”,然后电脑输入一个“start”,之后单片机将电脑输入任何字符都显示出来,除非是电脑输入为“end”。

起初我们是想用字符串和数组来做这个题目的,但是在开始做的时候才发现,单片机的传输使用八位的一个一个的传输数据的,然后在传输之前还得将端口软件置零、这时候我们就选用了嵌套语句一个一个字符串的来判断,但是因为嵌套的对于单片机通信说不是很适合。如:在用五个if语句检测start是,如果其中少了一个(只有四个字符),这个程序就会卡住,不执行下一条:

#include<reg52.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

uchar tang[20]="woshitangqun";

uint i,j;uint count=0;

uchar temp,qun,bao,m,n;

void t();void a();

void main()

{j=0;

TMOD=0x20;

TH1=0xfd;

TL1=0xfd;

SM0=0;SM1=1;

ET0=1;

TR1=1;ES=1;

REN=1;

while(1)

{

if(j==0) //单片机问候,向电脑发送一个字符串,表示单片机已经准备好工作了

{

for(i=0;i<20;)

{

SBUF=tang[i];

while(TI==0);

i++;

TI=0;

j++;

}

}

t();

}

}

void t()

{ while(RI==0);

RI=0;

if(SBUF==’s’)

{ /* SBUF=’s’;

while(TI==0);

TI=0;*/

while(RI==0);RI=0;

if(SBUF==’s’)a(); //调用a(),是为了解决ssstart和sstart的问题

if(SBUF==’t’)

{

/*SBUF=’t’; //发送到屏幕

while(TI==0);TI=0;*/

while(RI==0);RI=0;

if(SBUF==’a’)

{

/*SBUF=’a’; //发送到屏幕

while(TI==0);

TI=0;*/

while(RI==0);RI=0; //接收字符,并用下面的if语句判断

if(SBUF==’r’)

{

/*SBUF=’r’; //发送到屏幕,如果想要讲命令显示在屏幕上的话,就可以将这一句用上

while(TI==0);TI=0;*/

while(RI==0);RI=0;

if(SBUF==’t’)

{

/*SBUF=’t’; //发送到屏幕

while(TI==0);TI=0;*/

while(1)

{n=0;

while(RI==0);RI=0;temp=SBUF; //接收一个字符,赋值给temp;

if(SBUF==’e’) //判断是否是e,若否则用else输出,是则近入if语句

{

while(RI==0)

{for(m=0;m<100;m++);count++;}

RI=0; //若传输完毕,则给RI赋值,

bao=SBUF; //把传入的值赋给bao

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