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

標題: 51單片機串口數據,咋能判斷這單詞有幾個字母,每個字母是什么啊? [打印本頁]

作者: 小璽    時間: 2020-4-5 15:12
標題: 51單片機串口數據,咋能判斷這單詞有幾個字母,每個字母是什么啊?
大神大哥大姐美女請問用串口發過去一個英語單詞,咋能判斷這單詞有幾個字母,每個字母是什么啊。



#include "reg52.h"    //此文件中定義了單片機的一些特殊功能寄存器
sbit led=P2^0;   
typedef unsigned int u16;   //對數據類型進行聲明定義
typedef unsigned char u8;
/*******************************************************************************
* 函數名         :UsartInit()
* 函數功能     :設置串口
* 輸入           : 無
* 輸出           : 無
*******************************************************************************/
void UsartInit()
{
SCON=0X50;   //設置為工作方式1
TMOD=0X20;   //設置計數器工作方式2
PCON=0X80;   //波特率加倍
TH1=0XF3;    //計數器初始值設置,注意波特率是4800的
TL1=0XF3;
ES=1;      //打開接收中斷
EA=1;      //打開總中斷
TR1=1;     //打開計數器
}
/*******************************************************************************
* 函 數 名       : main
* 函數功能   : 主函數
* 輸    入       : 無
* 輸    出      : 無
*******************************************************************************/
void main()
{
UsartInit();  // 串口初始化

while(1);  
}
/*******************************************************************************
* 函數名         : Usart() interrupt 4
* 函數功能    : 串口通信中斷函數
* 輸入           : 無
* 輸出           : 無
*******************************************************************************/
void Usart() interrupt 4
{
u8 receiveData;
receiveData=SBUF;//出去接收到的數據
RI = 0;//清除接收中斷標志位
SBUF=receiveData;//將接收到的數據放入到發送寄存器
while(!TI);    //等待發送數據完成
TI=0;       //清除發送完成標志位
  if(receiveData=='A'||receiveData=='a')
        led=0;
     if(receiveData=='B'||receiveData=='b')
        led=1;
}

作者: wulin    時間: 2020-4-5 16:54
你這程序只能判斷單個字符,要改成接收字符串才能解析單詞。
作者: ktoto2011    時間: 2020-4-5 19:19
定義一個接收buf,rx_buf[max],接收長度LEN,其中max = 255;在中斷函數void Usart() interrupt 4   ,LEN++;rx_buf[LEN] = SBUF;定時接收數據,然后仿真就可以知道rx_buf接收到了什么字符串
作者: 小璽    時間: 2020-4-5 23:44
wulin 發表于 2020-4-5 16:54
你這程序只能判斷單個字符,要改成接收字符串才能解析單詞。

謝謝解答
作者: 小璽    時間: 2020-4-5 23:44
ktoto2011 發表于 2020-4-5 19:19
定義一個接收buf,rx_buf[max],接收長度LEN,其中max = 255;在中斷函數void Usart() interrupt 4   ,LEN++; ...

謝謝解答




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