日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]首先是自己遇到了問題,然后在同事的幫助下解決了,然后上網(wǎng)一查有這樣的注意文章,就轉(zhuǎn)過來了一、深入了解字符串的問題char str11[]="a";P1=strlen(str11);上面的一個是一個測試字符個數(shù)的實例,用仿真就可以看到結(jié)

首先是自己遇到了問題,然后在同事的幫助下解決了,然后上網(wǎng)一查有這樣的注意文章,就轉(zhuǎn)過來了

一、深入了解字符串的問題

char str11[]="a";

P1=strlen(str11);

上面的一個是一個測試字符個數(shù)的實例,用仿真就可以看到結(jié)果。結(jié)果是1。也就是說字符’’是不會被計入的。那么我們就可以通過此函數(shù)來分辯是否是字符和字符串。當(dāng)然如果字符串是一個字符的話,那么就是我們上面的那個情況了,會直接被當(dāng)做一個數(shù)看待。

注:上位機發(fā)過來的數(shù)據(jù)全部是字符串格式的。

二、串口中斷問題

先看下面的程序。

void UART_SendByte(unsigned char dat)

{

SBUF=dat;

while(!TI) ;//等待發(fā)送完畢

TI=0;

}

這個程序就是一個簡單的串口發(fā)送字符的程序,為了能夠?qū)崿F(xiàn)自動發(fā)送和接收,我們分析一下它。我們要同時實現(xiàn)接收,有接收那么就要有串口中斷,通過串口中斷達(dá)到接收數(shù)據(jù)的目的。可是當(dāng)ES=1,程序并不會像我們想的那樣運行,當(dāng)執(zhí)行完SBUF=dat后,程序開始等待,大概是5個時鐘周期后,程序并沒有直接運行TI=0這句,而是,因為緩沖區(qū)中的字符而直接跳轉(zhuǎn)到串口中斷函數(shù)中,甚至出現(xiàn)死循環(huán)這樣的情況。

為了避開這種情況,我們引入了下面的程序:

void UART_SendByte(unsigned char dat)

{

SBUF=dat;

ES=0;

while(!TI) ;

TI=0;

ES=1;

}

或者寫做一個中斷處理函數(shù),空的函數(shù)也可以:

void Com_INT() interrupt 4//串口中斷
{
}


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉