51单片机,通过串口助手向单片机发送字符串,单片机将字符串逆序发送回计算机,用C语言编程 5

51单片机,通过串口助手向单片机发送字符串,单片机将字符串逆序发送回计算机,比如输入的是“abcdefg",单片机返回字符串“gfedcba",求求大佬编一个... 51单片机,通过串口助手向单片机发送字符串,单片机将字符串逆序发送回计算机,比如输入的是“abcdefg",单片机返回字符串“gfedcba ",求求大佬编一个 展开
 我来答
大维
2019-08-22 · 郑州西亚斯学院副教授
大维
郑州西亚斯学院副教授
采纳数:111 获赞数:365
发表论文14篇。编写教材5部。擅长微控制器应用技术和网络技术

向TA提问 私信TA
展开全部

像这种发送字符串的,需要有一个字符串结束标志,不能用0作为字符串结束标志了!这里以回车作0xd为结束标志!

#include <reg51.h>

typedef unsigned char uint8; 

bit flag = 0;

uint8 idata buf[30];

uint8 ct;



void InitUART(void) //串口初始化 9600bps

{

    TMOD = 0x20;

    SCON = 0x50;

    TH1 = 0xFD;

    TL1 = TH1;

    PCON = 0x00;

    EA = 1;

    ES = 1;

    TR1 = 1;

}


void Send(uint8 c)

{

    SBUF = c;

    while(!TI);

    TI = 0;

}


void main(void)

{

  char j;  

InitUART();

  while(1)

{

if(flag)   //是否接收到回车  字符串发送完

{

flag = 0;

for(j = ct ; j > 0 ; j--)

{

  Send(buf[j-1]);       

}

      }

    }

}


void UARTInterrupt(void) interrupt 4

{

  static uint8 i = 0; 

if(RI)

    {

        RI = 0;       

  buf[i++] = SBUF;

  if(SBUF == 0x0d) //接受到回车

{

ct = i-1 ;

flag = 1;

i = 0;


        }

    }

    else

        TI = 0;

}

仿真结果

程序作为参考 希望  你自己能理解程序!只有自己掌握了才能很好地用!

lycdl
高粉答主

2019-08-20 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4716万
展开全部

电脑通过串口助手向单片机发送字符串,单片机定义一个可以保存7个字符的数组,依次保存接收的字符串,当接收到7个字符串后,就可以从数组的最后一个字符向前发送每一个字符给电脑就可以了。剩下的就是串口初始化,串口接收和发送程序了,就比较好写了。其实,电脑发送任意的7个字符的字符串都可以,单片机收到后就可以逆序返回给电脑的。

用proteus 仿真测试,可以用虚接终端代替电脑发送和接收字符串,仿真结果如下图。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式