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

標題: 51單片機學習:串口接收和發送數據 [打印本頁]

作者: 51黑電子迷    時間: 2017-2-9 22:18
標題: 51單片機學習:串口接收和發送數據
芯片STC89C52RC

在PC端向單片機發送任意數據后, 單片機向PC端發送4行文本,
由于在windos下,回車換行用





C代碼
  1.     #include <reg52.h>  
  2.     #include "MY51.h"  
  3.       
  4.     void    initSer();          //串口初始化  
  5.     uchar  sendFlag = 0;     //未發送數據時  
  6.     uchar  receFlag =0;     //未接受到數據時  
  7.       
  8.     code  uchar  TEXT0[] = "****************************\r\n";  //\r\n是回車換行  
  9.     code  uchar  TEXT1[] = "單片機串口通訊測試\r\n";  
  10.     code  uchar  TEXT2[] = "http://xouou.iteye.com\r\n";  
  11.     code  uchar  TEXT3[] = "****************************\r\n\r\n";//回車換行并空1行  
  12.       
  13.     void sendChar(uchar sendValue);  //發送一字節數據  
  14.     void sendAll(uchar *pValue);       //發送一組數據  
  15.       
  16.     void main(void)  
  17.     {  
  18.         initSer();  
  19.         while(1)  
  20.         {  
  21.           while(receFlag)               //單片機串口收到任意數據后,開始向PC發送數據  
  22.           {  
  23.                sendAll(TEXT0);         //發送數據  
  24.                sendAll(TEXT1);  
  25.                sendAll(TEXT2);  
  26.                sendAll(TEXT3);  
  27.                 receFlag=0;             //發完了清標志      
  28.           }  
  29.         }  
  30.     }  
  31.       
  32.     void serInt() interrupt 4   //中斷函數  
  33.     {  
  34.         if(RI)                  //如果收到任意數據  
  35.         {  
  36.             RI = 0;  
  37.             P1=SBUF;        //數據的變化讓led燈直觀反應出來  
  38.             receFlag=1;   //修改接受標志,便于主函數進入while中發數據  
  39.         }  
  40.          
  41.         if(TI)  
  42.         {  
  43.             TI = 0;                //發送完一個數據  
  44.             sendFlag = 0;        //清標志位  
  45.         }  
  46.     }  
  47.       
  48.       
  49.     void sendChar(uchar Value)  //發送一個字節數據  
  50.     {  
  51.          SBUF = Value;      
  52.          sendFlag = 1;       //設置發送標志位,發一字節就置位  
  53.          while(sendFlag);    //直到發完數據,將sendFlag清零后,才退出sendChar函數  
  54.     }  
  55.       
  56.     void sendAll(uchar *pValue) //發送一組數據  
  57.     {  
  58.         while((*pValue) != '\0')   //如果沒有發送完畢就繼續發  
  59.         {  
  60.             sendChar(*pValue);      //發送1字節數據  
  61.             pValue++;                 //指向下1個字節  
  62.         }  
  63.     }  
  64.       
  65.     void initSer()      //初始化  
  66.     {  
  67.         //注意:剛上電時,SCON是為0的  
  68.         TMOD=TMOD|0x20; //T1定時器模式,工作方式2  
  69.         TH1=0Xfd;        // 256-(11059200/(32*12*9600))  
  70.         TL1=0xfd;  
  71.         SM0=0;           //屬于SCON寄存器  
  72.         SM1=1;           //串口工作方式1,10位異步,波特率可改  
  73.         REN=yes;             //允許串口接收  
  74.         ES=open;             //開串口中斷  
  75.         EA=open;             //開總中斷  
  76.         TR1=start;       //啟動定時器  
  77.     }  
復制代碼







作者: xiaosong12306    時間: 2017-2-10 09:20
不錯啊,真是好東西啊




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1