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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1686|回復: 0
收起左側

單片機串行口通信程序

[復制鏈接]
ID:247795 發表于 2017-11-20 21:02 | 顯示全部樓層 |閱讀模式
#include#include //后面有一個比較函數
#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==' ')   //判斷m這位數據有無
       {
       UART_Putch(' ');  //回車
       UART_Putch(' ');  // 換行
    str[length]=''; //數據最后位加0標志位表示發完了數據
    UART_Flag=1;  // 傳 完 標 志 位
        }
   else if(m==' ')
  {

  }
     else if(m=='')//b表退格 //下面幾句表刪鋤
       {
         UART_Putch('');
    UART_Putch(' ');
    UART_Putch('');
    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(' '); //回車是跑到這一行的最前      UART_Putch(' '); //換行是跳到下一行
  }
   else if( strcmp("close",str)==0 )
   {
       UART_Putch('o');
    UART_Putch('k');
       UART_Putch(' ');
       UART_Putch(' ');
  
  
   }
   else    //否則出錯
   {
       UART_Putch('e');
    UART_Putch('r');
       UART_Putch('r');
       UART_Putch('o');
       UART_Putch('r');
       UART_Putch('!');
    UART_Putch(' ');
    UART_Putch(' ');
   }

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

  }

}

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产91视频免费 | 中文字幕日韩一区 | 偷派自拍 | 毛片高清 | 久久午夜影院 | 国产亚洲精品精品国产亚洲综合 | 国产一级一级毛片 | 欧美亚洲视频在线观看 | 久久精品黄色 | 男女网站在线观看 | 国产高清精品在线 | 国产精品久久久久久中文字 | 91成人在线视频 | 在线观看av免费 | www.国产91 | 99在线资源| 国产成人网 | 亚洲顶级毛片 | 欧美视频二区 | 最新国产精品精品视频 | 2021天天干夜夜爽 | 成人欧美一区二区三区在线观看 | 久久夜视频| 精品亚洲永久免费精品 | 国产成人福利在线观看 | 日日日色 | 日韩精品欧美精品 | 成人精品一区二区 | 国产午夜精品一区二区三区嫩草 | 国产免费福利在线 | 天天草夜夜骑 | 欧美一级网站 | 一区二区中文字幕 | 国产高清视频 | 日日综合 | 午夜精品一区二区三区在线视 | 欧美亚洲一区二区三区 | 成人做爰999| 亚洲精品久久久久久宅男 | 欧美操操操 | 亚洲另类春色偷拍在线观看 |