哪位大神帮我看一下下面这段c语言编程,详细解释一下谢谢! 50
voidYI_UART0_SendString(unsignedchar*str,intnum){inti;for(i=0;i<num;i++){while(!(UCSR...
void YI_UART0_SendString(unsigned char *str , int num)
{
int i;
for(i=0;i<num;i++)
{
while(!(UCSR0A & 0X20));
UDR0=*str;
str++;
}
}
最好能详细解释下
while(!(UCSR0A & 0X20));
UDR0=*str;
str++;
谢谢 展开
{
int i;
for(i=0;i<num;i++)
{
while(!(UCSR0A & 0X20));
UDR0=*str;
str++;
}
}
最好能详细解释下
while(!(UCSR0A & 0X20));
UDR0=*str;
str++;
谢谢 展开
2个回答
展开全部
你给的这段程序有个错: UCSR0A 和 UDR0 应该是一个变量,也就是后者少写了一个A,或者前者多写了一个A
while(!(UCSR0A & 0X20))//; // 注意这里多了一个分号,要删掉,否则就可能死循环
{
UCSR0A = (*str);
str++;
} // 要加上花括号,否则,str指针不变,循环没有意义
这段代码的意思是找到str所指向的字符串中的空格开始的地方:
0x20即32,是空格' ' 的ASC码。每次循环UCSR0A(一个char型变量)取str的一个字符,如果
!(UCSR0A & 0X20) (即UCSR0A != 32 )则取下一个字符,当UCSR0A 是空格时,跳出循环
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询