欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2909|回復: 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 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:691909 發表于 2020-9-1 12:40 來自觸屏版 | 顯示全部樓層
有人試過嗎?為什么我的控制一會有效一會無效。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表