//一个工程文件中
* char USART_Receive(void)
{
while (!(UCSR0A&(1 <
;
return UDR0;/*从缓冲器中获取并返回数据*/
}
......
//另外一个工程文件
USART_Receive();
char *s1=UDR0;
char *s2= "OK ";
int a=1;
if(strcmp(s1,s2)==0)//int strcmp(const char *s1,const char *s2);
{
a=0;
}
不合理
1 char * USART_Receive(void)
2,如果非正常调用这个函数,在无数据时,会一直等待,就走不出去了
从合理角度来说,这是属于阻塞式事件触发方式
对于严格的流程控制,它是必须的....
呵呵,它是合理的...
strcmp(const char *s1,const char *s2);
你的问题在于这个
STRCMP这个串比较函数,它要求输入的是C风格的串,以'\0'结束
这样的话你传入的S1那它仅仅就只是一个字符并不是一个串
所以就出问题...
你的问题在于
USART_Receive();
这个函数仅仅接收一个字符,你在没有按规则组织协议取到串的情况下,
你就用串比较,所以,出错了
只要你组织了串,那你的逻辑就能继续....
呵呵
还差一点,继续