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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51串口通信程序(帶詳細注釋)

作者:佚名   來源:本站原創   點擊數:  更新時間:2012年04月24日   【字體:

#include<reg51.h>
#include<string.h> //后面有一個比較函數
#define uchar unsigned char
#define uint unsigned int
bit  UART_Flag=0;  //定義串口接收標志位

uchar  str[50];   //定義一數組
uchar length=0;  //數組長度從0開始
void init() //初始化uart
{
 
 
   TMOD=0X20;  //定時器1定時器方式  工作模式2,可自動重載的8位計數器常把定時/計數器1以模式2作為串行口波特率發生器

 SCON=0X50; //選擇工作模式1使能接收,允許發送,允許接收

    EA=1; //開總中斷

 ES=1;  //打開串口中斷
 ET1=0;  //打開定時器中斷

        PCON=0X80; //8位自動重載,波特率加倍

 TH1=0XFF;  //用22.1184 mhz波特率

 TL1=0XFF;
  
 TR1=1; //打開中時器

    


}
void UART_Putch(uchar dat)  //輸出一個字符
{
 SBUF=dat; //把數據送給sbuf緩存器中

 while(TI!=1);//發送標志位 TI如果發送了為1,沒發送為0,沒發送等待,到了退出循環

 TI=0;  //到了,TI清為0

}
void init1() interrupt 4  //uart中斷 ,4為串口中斷
{
 
  if(RI==1)  //收到數據
  {
     uchar m=SBUF; //m為計算機發送給串口的數據,例,open //總體思想是,計算機通知串口,我要發數據了
  RI=0;   //收到清0
 
     if(m=='\r')   //判斷m這位數據有無\r
       {
       UART_Putch('\r');  //回車
       UART_Putch('\n');  // 換行
    str[length]='\0'; //數據最后位加0標志位表示發完了數據
    UART_Flag=1;  // 傳 完 標 志 位
        }
   else if(m=='\n')
  {
 
  }
     else if(m=='\b')//b表退格 //下面幾句表刪鋤
       {
         UART_Putch('\b');

    UART_Putch(' ');

    UART_Putch('\b');

    length=length-1; //刪鋤了后總長度減一
       }
 
   
     else
     {
     str[length++]=m; //比如m為open,先傳0后傳p,length加一
  UART_Putch(m);    //輸出 比如open
     }
 
 }
}
void check(char *str)  //計算機發一數據,我來檢查,
{
   if( strcmp("open",str)==0 ) //比較兩數是否相同,相同為0,不同為1 //要加string.h頭文件
   {
       UART_Putch('o'); //計算機中寫入open我回復ok
    UART_Putch('k');
       UART_Putch('\r'); //回車是跑到這一行的最前      UART_Putch('\n'); //換行是跳到下一行
  }
   else if( strcmp("close",str)==0 )
   {
       UART_Putch('o');
    UART_Putch('k');
       UART_Putch('\r');
       UART_Putch('\n');
 
 
   }
   else    //否則出錯
   {
       UART_Putch('e');
    UART_Putch('r');
       UART_Putch('r');
       UART_Putch('o');
       UART_Putch('r');
       UART_Putch('!');
    UART_Putch('\r');
    UART_Putch('\n');
   }


}
void main()
{
  init();
  while(1)
  {
    if(UART_Flag==1)  //接收標志位表示接收完成
     {
     check(str);//檢查
     length=0; //長度清0
     UART_Flag=0;//標志位清0
  }
 
  }


}

關閉窗口

相關文章

主站蜘蛛池模板: 手机看片福利视频 | 国产小视频在线观看 | 99re在线观看视频 | 免费av在线播放 | 国产精品三级在线 | av毛片在线播放 | 午夜美女福利视频 | 国产欧美视频在线观看 | 精品一区二区在线播放 | 久久久少妇 | 亚洲一区二区在线播放 | 成人在线精品 | 欧美激情国产精品 | 国产在线欧美 | 日韩欧美一区二区三区久久婷婷 | 可以看的毛片 | 欧美亚洲激情 | 精品国产91乱码一区二区三区 | 成人小视频在线观看 | 免费看色片 | 亚洲一区二区 | 日韩精品影院 | 欧美日韩视频 | 欧美一级片免费看 | 一道本在线观看 | 教室脔到她哭h粗话h好爽视频 | 中国极品少妇xxxx做受 | 日韩精品一区二区三区中文在线 | 免费黄色一级视频 | 日韩欧美国产一区二区三区 | 手机看片福利视频 | 免费看黄色aaaaaa 片 | 欧美精品网站 | 一区二区三区高清 | 欧美精品影院 | 国产精品久久久久久久久久辛辛 | a在线免费观看 | 日韩专区在线观看 | 夜夜嗨av一区二区三区网页 | 日韩av中文字幕在线播放 | 深夜福利网址 |