找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4123|回復(fù): 0
收起左側(cè)

單片機串口通信程序(串口發(fā)送和接受一個數(shù)組)

[復(fù)制鏈接]
ID:764098 發(fā)表于 2020-6-12 20:17 | 顯示全部樓層 |閱讀模式
  1. #include<reg51.h>
  2. #define uchar flag1,flag2,flag3
  3. sbit key1=P1^0;
  4. sbit key2=P2^1;
  5. sbit key3=P2^2;
  6. flag1=1,flag2=1,flag3=1;
  7. unsigned char i;
  8. unsigned char n;
  9. unsigned char code Tab[ ]={0xA5,0X20}; //開始掃描命令
  10. unsigned char a[4];    //接收數(shù)據(jù)數(shù)組
  11. float b[1];     //提取后的數(shù)據(jù)數(shù)組
  12. void delay(unsigned int time);
  13. void Send(unsigned char dat)   //發(fā)送命令
  14. {
  15.     SBUF=dat;
  16. while(TI==0);
  17. TI=0;
  18. }
  19. void UsartInit()
  20. {TMOD=0x20;    //定時器T1工作方式2
  21. SCON=0x50;   //串口工作方式1允許接收(REN=1)
  22. PCON=0x00;   //正常波特率9600
  23. TH1=0xfd;   //初值設(shè)定,波特率9600
  24. TL1=0xfd;
  25. TR1=1;    //打開計數(shù)器
  26. EA=1;    //打開總中斷
  27. ES=1;}    //打開中斷允許中的串口中斷允許
  28. void key_scan()    //按鍵掃描
  29. {if(!key1){delay(10);if(!key1)flag1=0;}
  30. if(!key2){delay(10);if(!key2)flag2=0;}
  31. if(!key3){delay(10);if(!key3)flag3=0;}
  32. }
  33. void delay(unsigned int time)   //延時
  34. { unsigned int j = 0;
  35. for(;time>0;time--)
  36.   for(j=0;j<110;j++);}
  37. void main()
  38. {
  39. UsartInit();    //串口初始化
  40. key_scan();                     //按鍵掃描
  41. if(flag1==0&flag2==1&flag3==1) //判斷是否開始掃描
  42. { flag1=1;                   //清零按鍵標(biāo)志
  43. for (i=0;i<2;i++)                                      //串口發(fā)送
  44.     {
  45.       Send(Tab[i]);
  46.    delay(20);
  47.   }
  48.   delay(300);
  49. n=0;
  50. while(n<5)                                               //串口接收  
  51. while(RI==0);
  52. {a[n]=SBUF;
  53. RI=0;
  54. n++;}}

  55.   
  56. }
復(fù)制代碼

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表