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'))
代码没有经过实际如皮编译,有问题再问