国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

51單片機UART串口通信實現(xiàn)接收PC的字符串

這篇具有很好參考價值的文章主要介紹了51單片機UART串口通信實現(xiàn)接收PC的字符串。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

????????基本思路是觸發(fā)串口接收中斷之后,在串口中斷服務函數(shù)中處理接收到的字節(jié)并將其連接成字符串存入全局變量中。

隱含的額外工作有:

1.區(qū)分是發(fā)送中斷還是接收中斷,兩者都會進入同一個中斷服務子函數(shù);

2.判斷已接收到了句末,暫停接收,并通過標志位告知其他函數(shù)。

串口初始化省略,網(wǎng)上到處都是,但基本都是做到串口回聲為止,教接收數(shù)據(jù)的少,所以著重講如何接收字符串。

uart.h中需要添加的用于存放相關(guān)數(shù)據(jù)的全局結(jié)構(gòu)體:

typedef struct
{
	u8 buff[65];    //用于存放接收到的字符串
	u8 flag;        //接收完成中斷標志位
	u8 len;         //用于偏移字符串指針,可以理解為長度,如果buff設(shè)得很長,對應這里需要改成u16
}REC;

extern REC UART_rec;//設(shè)為全局

uart.c中中斷服務子函數(shù):


REC UART_rec={0};              //初始化結(jié)構(gòu)體

void UART(void) interrupt 4
{
	u8 temp=0;
	RI=0;//清除接收中斷標志
	temp=SBUF;
	if(temp==0||temp=='\r'||temp=='\n'||UART_rec.len>=65||temp=='{')
	{
	  UART_rec.buff[UART_rec.len]='\0';
	  UART_rec.flag=1;	//數(shù)據(jù)包接收完成標志
	  UART_rec.len=0; 	//為下一個數(shù)據(jù)包做準備
	}
	else
	{
	 UART_rec.buff[UART_rec.len++]=temp;
	} 

?其中:

if(temp==0||temp=='\r'||temp=='\n'||UART_rec.len>=65||temp=='{')

可以自定義各自接收完畢的標準,包括常規(guī)的回車以外還有到達指定長度結(jié)束以及MQTT數(shù)據(jù)包的封裝'{',可以用來丟棄封裝的開頭節(jié)省一些字節(jié)之類的;

main.c測試:

void main (void)
{
    UART_Config();        //串口初始化,本文不涉及
    printf("Hello!\r\n");

    while(1)
    {
       if(UART_rec.flag)//若接收完成
        {
         printf("接收到了:%s\r\n",UART_rec.buff);
	     UART_rec.flag=0;     //接收標志位清零,準備接收下一字符串  
        }
    }

}

串口助手現(xiàn)象:

接收ASCII:

51單片機UART串口通信實現(xiàn)接收PC的字符串

?接收中文:

51單片機UART串口通信實現(xiàn)接收PC的字符串

接收帶空格的句子(順便測試了超出長度的情況):

51單片機UART串口通信實現(xiàn)接收PC的字符串

不足:

1.必須要有句末的標志,若不發(fā)送\r、\n、\r\n結(jié)尾將不會結(jié)束接收;

2.某些情況下句末標志為\r\n時將會吞掉下一句的開頭第一個字節(jié),比如通過串口發(fā)送數(shù)據(jù)到PC之后的下一次接收不能接收以\r\n結(jié)尾的數(shù)據(jù)。評論區(qū)可以討論一下解決方法,也教教我。

如果是STM32可以通過串口空閑中斷來判斷接收完畢,更穩(wěn)妥,不會出現(xiàn)這兩個問題

51單片機UART串口通信實現(xiàn)接收PC的字符串文章來源地址http://www.zghlxwxcb.cn/news/detail-419635.html

到了這里,關(guān)于51單片機UART串口通信實現(xiàn)接收PC的字符串的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 【單片機】基于STM32的UART串口通信

    【單片機】基于STM32的UART串口通信

    簡單講解一下UART通信協(xié)議,以及UART能夠?qū)崿F(xiàn)的一些功能,還有有關(guān)使用STM32CubeMX來配置芯片的一些操作。實驗內(nèi)容基于 正點原子精英板 開發(fā)板,單片機芯片為 STM32F103ZET6 。 在后面我會以我使用的STM32F429開發(fā)板來舉例講解(其他STM32系列芯片大多數(shù)都可以按照這些步驟來操作

    2024年01月17日
    瀏覽(96)
  • 51單片機串口通信

    51單片機串口通信

    串口通信(serial communication)是指外設(shè)和計算機間通過數(shù)據(jù)信號線、地線等按位進行傳輸數(shù)據(jù)的一種通信方式,屬于串行通信方式。 接口標準:常用RS-232和RS-485 RS-232C有一種9針的非標準連接器口,簡稱DB9。串口通信使用的大多都是DB9接口。在串口通信中,通常我們只使用2、

    2024年02月05日
    瀏覽(26)
  • 51單片機-串口通信

    51單片機-串口通信

    目錄 1.什么是通信 1.1.通信的概念 1.2.傳送方式 1.3.同步方式 1.4.傳送方向 1.5.校驗方式 2.單片機串口介紹 2.1.硬件電路 2.2.電平標準 2.3.常見接口 2.4.內(nèi)部結(jié)構(gòu) 2.5.相關(guān)寄存器 2.6.工作模式(模式1) 2.7.如何配置串口中斷 3.實際應用 3.1.單片機向電腦發(fā)送數(shù)據(jù) 3.2.電腦向單片機發(fā)送

    2024年02月01日
    瀏覽(24)
  • 51單片機學習--串口通信

    51單片機學習--串口通信

    首先需要配置寄存器: 下面這里SCON配0x40和0x50都可以,因為暫時還不需要接受信息,所以REN置1置0都可 在main中調(diào)用SendByte函數(shù),每按下一次復位鍵,接收緩沖區(qū)就會收到一個11 這就是單向發(fā)送的一個簡單實例,接下來實現(xiàn)每隔一秒發(fā)送一個遞增的數(shù)據(jù),只需要添加一個全局變

    2024年02月14日
    瀏覽(25)
  • 51單片機(串口通信、藍牙)

    51單片機(串口通信、藍牙)

    串行接口簡稱串口,也稱 串行通信接口 或串行通訊接口(通常指COM接口),是采用串行通信方 式的擴展接口。串行接口(Serial Interface)是指 數(shù)據(jù)一位一位地順序傳送。 其特點是通信線路簡 單,只要一對傳輸線就可以實現(xiàn) 雙向通信( 可以直接利用電話線作為傳輸線),從

    2024年02月15日
    瀏覽(24)
  • 51單片機 | 串口通信實驗

    51單片機 | 串口通信實驗

    ??這一節(jié)我們就來學習 51 單片機的串口通信。開發(fā)板上集成了 1 個串口通信電路,是 USB 轉(zhuǎn)串口模塊,它既可下載程序也可實現(xiàn)串口通信功能。本節(jié)要實現(xiàn)的功能是: 51 單片機通過串口( UART )實現(xiàn)與 PC 機對話, 51 單片機的串口收到 PC 機發(fā)來的數(shù)據(jù)后原封不動的返回給

    2024年02月04日
    瀏覽(27)
  • 51單片機(八)串口通信

    51單片機(八)串口通信

    ?? 專欄簡介:本專欄記錄了從零學習單片機的過程,其中包括51單片機和STM32單片機兩部分;建議先學習51單片機,其是STM32等高級單片機的基礎(chǔ);這樣再學習STM32時才能融會貫通。 ?? 專欄適用人群 :適用于想要從零基礎(chǔ)開始學習入門單片機,且有一定C語言基礎(chǔ)的的童鞋

    2024年02月05日
    瀏覽(28)
  • 【51單片機】串口通信&&使用串口通信控制LED燈

    【51單片機】串口通信&&使用串口通信控制LED燈

    ??專欄【51單片機】 ??喜歡的詩句:更喜岷山千里雪 三軍過后盡開顏。 ??音樂分享【Promise】 ??大一同學小吉,歡迎并且感謝大家指出我的問題?? 目錄 ??串口通信 ??代碼? ???串口初始化 ?分析? ??????確定T1的工作方式 ??TMOD=0X20;? ??????確定T1的初值 ??

    2024年02月17日
    瀏覽(58)
  • 【51單片機系列】proteus仿真單片機的串口通信

    【51單片機系列】proteus仿真單片機的串口通信

    本文參考:https://zhuanlan.zhihu.com/p/425809292。 在proteus之外使用串口軟件和單片機通信。通過在proteus設(shè)計一個單片機接收PC發(fā)送的數(shù)據(jù),并將接收的數(shù)據(jù)發(fā)送出去,利用軟件【Configure Virtual Serial Port Driver】創(chuàng)建一對虛擬串口,利用軟件【串口助手】向單片機發(fā)送數(shù)據(jù)。 proteus仿真

    2024年01月17日
    瀏覽(29)
  • 【PROTEUS-51單片機串口通信仿真】

    【PROTEUS-51單片機串口通信仿真】

    本次實驗對51單片機的串口進行了雙機通信的仿真,實現(xiàn)了51單片機的簡單雙機通信;現(xiàn)對本次仿真的結(jié)構(gòu)及實現(xiàn)的功能做簡要的介紹, 本次仿真主要構(gòu)成:主機U1-MASTER、從機U2-SLAVE、以及LED顯示部分(第一部分顯示主機接收到的信息、第二部分顯示從機接收到的信號); 實

    2024年01月15日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包