1. 用單片機匯編比較兩個ASCII字元串是否相等的程序
比較兩個ASCII 碼字元串是否相等。字元串長度在內部RAM 3FH 單元,兩字元串的首地址分別為40H、50H。如果
兩個字元串相等,置CY=1,否則,置CY=0。
MOV R0,#40H
MOV R1,#50H
MOV R2,#3FH
LOOP1:MOV A,@R0
CLR C
__XRL A__,@R1
JNZ LOOP2
INC R0
INC R1
__DJNZ R2__,LOOP1
SETB C
RET
LOOP2:CLR C
RET
2. 單片機C語言字元串對比問題
C語言字元串對比可以調用標准庫函數strcmp。
該函數聲明在string.h中,形賣脊式為
int strcmp(char *a, char *b);
返回值有三種情況,1,0或-1.
其比較原則為:陵仔
1 從第一個字元開始按照ascii碼值比較,如果a的比b的大,返回1;如果a的比b的小,返回-1;如果相等,繼續比較下尺配汪一個字元。
2 當遇到任意一個字元串達到尾部(值為\0),退出比較過程。
3 如果長度相等,即二者均達到\0,返回0,此時表示二者相等。
4 如果a的長度大,返回1,否則返回-1。
3. 用串口工具發送了一個字元串,單片機端怎麼把它與設定好的一個字元串作比較判斷是否相等
首先單片機要知道什麼時候開始接收的字元串,在什麼時候結束。只有結束後才能開始字元串的比較。因此計算機發給單片機的字元串最好有「開始」和「結束」的標示,讓單片機判斷完全接收字元串後才開始比較。
字元串比較的函數就簡單了。比如這樣的函數:
int strcmp(char *S,char *D,char LEN)
{
int n;
for(n=0;n<LEN;n++)
if(S[n]!=D[n]) return 1;
return 0;
}
上面的函數至比較字元串S和D的前LEN個字元,如果遇到不同的字元就不需要比較了,立即返回1,如果被比較的部分相同就返回0.
4. 51單片機 串口通信 檢查接收的字元串
首先SBUF只有8位 即一位元組,而"adcd"有4位元組+『 』個,你這把temp和「abcd」比較永遠只能為假。所以LED1=!LED1;這條語句不能執行。正確的做法是建立一個變數,將SBUF接受到的字元存入變數,然後再比較
5. 51單片機串口接收字元串
51單片機串口接收字元串,接收的字元串長度不定,無結束符,要判斷這個字元串結束,確實比較難。如果每個字元串還是連續發送,幾乎是無法判斷的。如果每個字元串之前有一定的空閑時間,可以根據最短的空閑時間來判斷結束。即接收每一個字元都開始計時,接收下一個字元結束計時,如果計時的時間超過最短的空閑時間,則前一個字元為結束,且新字元串開始。並再重新計時。
6. C語言單片機怎字元串比較
你好!!
發現三個問題,都在if 語句內!
1、第一個 / 應該是 &&
2、字元應該用單引號不是雙引號
3、最後一渣山差個字元是RXDdata[3]
修改後的代碼是:
if((RXDdata[0]=='G'唯橋)&&(RXDdata[1]=='N')&&(RXDdata[2]=='R')&&(RXDdata[3]=='I'))
代碼沒有經過實際如皮編譯,有問題再問