找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2563|回复: 1
收起左侧

51单片机串口收发字符串源程序

[复制链接]
ID:662089 发表于 2020-8-8 04:14 | 显示全部楼层 |阅读模式
想要通过串口控制led,但是串口每次中断只能发送一个字符,这样在控制的时候不太容易清楚各个命令是控制哪一部分,所以参考网上的资料,写了个简单的字符串收发函数。本程序的功能是:电脑串口助手发送数据给单片机,单片机接收后返回给电脑,在发送的时候,需要空两格再输入想要传送的内容,不然的话传输的数据会丢失,因为这个情况不影响串口控制LED,所以就没管了。

单片机源程序如下:
  1. #include<reg52.h>
  2. typedef unsigned char uchar;
  3. typedef unsigned int uint;
  4. sbit led=P2^0;
  5. void Usart_Init()
  6. {
  7. TMOD=0X20;
  8. PCON=0X80;
  9. SCON=0X50;
  10. TH1=0XF3;
  11. TL1=0XF3;
  12. TR1=1;
  13. ES=1;
  14. EA=1;
  15. }


  16. uchar strk[50];

  17. void delay(unsigned int i){unsigned int j;for(i;i>0;i--)for(j=0;j<120;j++);}//延时函数
  18. void sendbyte(unsigned char byt){SBUF=byt;while(!TI);TI=0;}        //串口字符发送函数

  19. void  receivebyte()        /*串口接收函数*/
  20. {
  21. uchar shiftdata;//转移数据变量,将SBUF接收到的数据线存储到这个地方,再转存到数组当中
  22. static uint i=0;
  23.                                
  24. if(RI){
  25. RI=0;shiftdata=SBUF;strk[i]=shiftdata; i++;
  26. if(shiftdata=='\0'||shiftdata=='\n'){i=0;}
  27.       }                   
  28. }

  29. /*以下是串口字符串发送函数*/
  30. void sendstring(unsigned char *string){       
  31. uint k;
  32. while(*string!='\0')
  33. {
  34. sendbyte(*string);delay(100);string++;
  35. }for(k=0;k<50;k++)strk[k]=0;
  36. }
  37.                                                                                                                                                                                     

  38. void main()
  39. {
  40. Usart_Init();
  41. while(1)
  42. {
  43. if(strk[2]=='o'&&strk[3]=='n')led=0;
  44. if(strk[2]=='o'&&strk[3]=='f'&&strk[4]=='f')led=1;
  45. if(RI){sendstring(strk);}

  46. }
  47. }


  48. void Usart_o() interrupt 4
  49. {

  50.   receivebyte();

  51.        
  52. }
复制代码

1111.png

51串口收发字符串.rar

27.9 KB, 下载次数: 36, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表