2757|4

68

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于单片机的一段小程序,大家帮我看看,好吗? [复制链接]

//一个工程文件中
unsigned 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;       
}

我就是想看看UDR0里面返回的是不是"OK",这样写行吗?这句话char *s1=UDR0;对吗?
请大家帮我看看,谢谢!

最新回复

多谢两位,呵呵  详情 回复 发表于 2007-11-8 16:34
点赞 关注

回复
举报

58

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你是用串口来实现数据的收、发

1、从USART_Receive()可以知道,你的串口数据是一个
Byte一个Byte接收的,因此*s1=UDR0用法不对,如果真的
可以用s1指针映射到寄存器UDR0,那也只是映射一个Byte,
另外寄存器UDR0的数据也是不断变化的。
2、可以建立一个数据缓冲区,把收到的数据一个字节一个字节
存到缓冲区中,等接收到结束标志字符的时候,再进行比较。

 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
if ( (USART_Receive() == 'O') && (USART_Receive() == 'K') )
  a = 0;
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
前面的程序收到一个字节不是'O',不会收第二个字节
下面的程序总是收两个字节,在判断

char buff[2];

buff[0] = USART_Receive();
buff[1] = USART_Receive();

if ( (buff[0] == 'O ') && (buff[1] == 'K ') )
  a = 0;

 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

5
 
多谢两位,呵呵
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表