久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于普中科技51單片機(jī)的簡單串口通信例程

[復(fù)制鏈接]
ID:432757 發(fā)表于 2019-1-21 20:31 | 顯示全部樓層 |閱讀模式
實(shí)現(xiàn)功能:當(dāng)PC一次發(fā)送帶有“123”的字符串,或者依次輸入有“1”“2”“3”的字符時,點(diǎn)亮單片機(jī)的一個LED小燈,同時PC收到“Hello.x”的字符串,隨后LED小燈熄滅。


注意:51單片機(jī)的時鐘頻率若不為11.052MHz,如本例使用的單片機(jī)時鐘頻率為11.938995MHz,只在波特率為4800,波特率加倍的情況下實(shí)現(xiàn)通信,其它波特率下無法收到51發(fā)送的數(shù)據(jù)。
  1. /**************************************************************************************
  2. *                              串口通信實(shí)驗(yàn)                                                                                                  *
  3. 實(shí)現(xiàn)現(xiàn)象:下載程序后打開串口調(diào)試助手,將波特率設(shè)置為4800,選擇發(fā)送的數(shù)據(jù)就可以顯示
  4.                         在串口助手上。
  5. 注意事項(xiàng):無。                                                                                                                                                                  
  6. ***************************************************************************************/

  7. #include "reg52.h"                         //此文件中定義了單片機(jī)的一些特殊功能寄存器

  8. typedef unsigned int u16;          //對數(shù)據(jù)類型進(jìn)行聲明定義
  9. typedef unsigned char u8;

  10. sbit LED=P2^2;
  11. u8 i=0;
  12. u8 m[8]="Hello.x";
  13. u8 k=0;
  14. u8 a;
  15. /*******************************************************************************
  16. * 函數(shù)名         :UsartInit()
  17. * 函數(shù)功能                   :設(shè)置串口
  18. * 輸入           : 無
  19. * 輸出                  : 無
  20. *******************************************************************************/
  21. void UsartInit()
  22. {
  23.         SCON=0X50;                        //設(shè)置為工作方式1
  24.         TMOD=0X20;                        //設(shè)置計(jì)數(shù)器工作方式2
  25.         PCON=0X80;                        //波特率加倍
  26.         TH1=0xf3;                                //計(jì)數(shù)器初始值設(shè)置,注意波特率是4800的
  27.         TL1=0xf3;
  28.         ES=1;                                                //打開接收中斷
  29.         EA=1;                                                //打開總中斷
  30.         TR1=1;                                        //打開計(jì)數(shù)器
  31. }

  32. /*******************************************************************************
  33. * 函 數(shù) 名       : main
  34. * 函數(shù)功能                 : 主函數(shù)
  35. * 輸    入       : 無
  36. * 輸    出             : 無
  37. *******************************************************************************/

  38. void main()
  39. {       
  40.         UsartInit();  //        串口初始化
  41.         while(1);               
  42. }
  43. void Usart_receive()
  44. {
  45. a=SBUF;
  46. RI=0;
  47. }
  48. void Usart_judge()
  49. {
  50. if(i==0)         //判斷輸入字符是不是‘1’,若為‘1’,令i=1,變?yōu)闋顟B(tài)1
  51. {
  52.         if(a=='1')
  53.                 {
  54.                 i=1;
  55.                 }
  56.         else
  57.                 {
  58.                 i=0;
  59.                 }
  60. }
  61. else if(i==1)  //判斷在上一個字符為‘1’的情況下,輸入字符是否為‘2’
  62. {
  63.         if(a=='2')          //若為‘2’,令i=2,變?yōu)闋顟B(tài)2
  64.                 {
  65.                 i=2;
  66.                 }
  67.         else if(a=='1')        //若為‘1’,回到狀態(tài)‘1’
  68.                 {
  69.                  i=1;
  70.                 }
  71.         else                        //其它情況,回到狀態(tài)0
  72.                 {
  73.                 i=0;
  74.                 }
  75. }
  76. else if(i==2)                //判斷在上兩個字符為‘1’‘2’的情況下,輸入字符是否為‘3’
  77. {
  78.         if(a=='3')                        //若為‘3‘,LED點(diǎn)亮,輸出“Hello.x”,LED熄滅,隨后回到狀態(tài)0
  79.                 {
  80.                 LED=0;
  81.                 for(k=0;k<8;k++)
  82.                         {
  83.                         SBUF=m[k];
  84.                         while(!TI);
  85.                         TI=0;
  86.                         }
  87.                 LED=1;
  88.                 i=0;
  89.                 }
  90.         else if(a=='1')          //若為’1‘,回到狀態(tài)1
  91.                 {
  92.                 i=1;
  93.                 }
  94.         else                         //其它情況,回到狀態(tài)0
  95.                 {
  96.                 i=0;
  97.                 }
  98. }
  99. }
  100. /*******************************************************************************
  101. * 函數(shù)名         : Usart() interrupt 4
  102. * 函數(shù)功能                  : 串口通信中斷函數(shù)
  103. * 輸入           : 無
  104. * 輸出                  : 無
  105. *******************************************************************************/
  106. void Usart() interrupt 4
  107. {
  108.         Usart_receive();
  109.         Usart_judge();
  110. }
復(fù)制代碼



評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:498471 發(fā)表于 2019-4-18 10:28 | 顯示全部樓層
不好使
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99精品一区二区三区 | 国产综合在线视频 | 久久久免费观看视频 | 亚洲精品第一国产综合野 | 91免费看片| 国产精品久久久久久吹潮 | 91黄色片免费看 | 亚洲一区二区在线免费观看 | 一区二区三区免费 | 一区视频在线 | 久久精品亚洲欧美日韩精品中文字幕 | 久久久xxx| 北条麻妃99精品青青久久 | 日韩一区二区在线播放 | 午夜精品久久久久久久久久久久 | 黄色小视频入口 | 国产精品视频一 | 中文字幕成人av | 国产男女猛烈无遮掩视频免费网站 | 91久久久久 | 久久机热 | 中文字幕亚洲视频 | 天天射天天操天天干 | 亚洲精品一区二区在线观看 | 狠狠干av | 国产成人一区二区 | 国产精品久久一区二区三区 | 亚洲性人人天天夜夜摸 | 美女视频一区 | 亚洲第一在线 | 久久精品国产一区二区电影 | 亚洲精品一区中文字幕乱码 | 亚洲国产精品一区二区三区 | 久久se精品一区精品二区 | 国产精品日韩欧美一区二区三区 | 亚洲色图50p| 91视频网址 | 久久久综合色 | 精品久久亚洲 | 亚洲福利在线视频 | 国产精品久久久久久久久污网站 |