[求助] 求助

zzbaizhi   2011-12-29 08:42 楼主
利用5438单片机向PC发送一串字符,并以列的形式显示出来。于是在每个字符发送完后设置一个换行符UCA1TXBUF ='\n',但没有换行,于是又改为UCA1TXBUF ='‘\r\n'’,说是有错误,不知道该怎么办了,请高手指教

回复评论 (9)

"\r"和“\n"是两个字符,分开发
点赞  2011-12-29 08:49

回复 沙发 woody_chen 的帖子

应该是'\r'和'\n'分开发,是单引号,双引号的话还是有错误
点赞  2011-12-29 09:06

回复 沙发 woody_chen 的帖子

有的人用MSP430 14系列的单片机做这个实验,就是设置的TXBUF0='\n'就没问题,这是为什么呢?
点赞  2011-12-29 09:14

引用: 原帖由 zzbaizhi 于 2011-12-29 09:14 发表 有的人用MSP430 14系列的单片机做这个实验,就是设置的TXBUF0='\n'就没问题,这是为什么呢?

 

\作为转义字符。

'\n'表示的是一个回车符,你可以用以下方式表示:

TXBUF0 = '\n';

TXBUF0 = 0x0d;

TXBUF0 = 13;

当然,还有二进制00001101b和八进制015。

 

如果你要发送\r\n,那么,你发送的时候,是两个字符,一个\r和一个\n。

单引号只能表示一个字符,'\r'和'\n'都没有问题。

两个或两个以上字符合一起,就成了字符串,需要用双引号表示"\r\n",如果你用单引号'\r\n'编译器会报错的。

事实上,"\r\n"表示的字符串,默认还包含一个停止符'\0',即它表示'\r'、'\n'和'\0'。

'\0'也是一个转义字符,不是数字0,其ASCII码值为0。

数字0(表示方法:'0')的ACSII码值为0x30。

 

说多了,你可能反而更晕了。嘿嘿。

记住一个单引号''只能表示一个字符,是一个单字节的数据。

双引号""表示一个字符串,长度不定,可以包含n个字符,长度为n个字节。

反斜杠\用于转义字符,表示的字符查阅ASCII码表。

 

如果,你要把\r\n发送出去,需要分开发送,因为TXBUF0是单字节的,不能一次发送一个字符串。

先把TXBUF0 = '\r';发送出去,再发送一个TXBUF0 = '\n';。

 

 

提出这个问题,楼主应当回顾一下进制的转换问题。二进制、八进制、十进制、十六进制、ASCII码、BCD码……那些知识。

然后弄懂单引号''只能表示一个字符,双引号""表示一个字符串。

最后是TXBUF0的位长问题。

点赞  2011-12-29 10:39

引用: 原帖由 David_Lee 于 2011-12-29 10:39 发表   \作为转义字符。 '\n'表示的是一个回车符,你可以用以下方式表示: TXBUF0 = '\n'; TXBUF0 = 0x0d; TXBUF0 = 13; 当然,还有二进制00001101b和八进制015。   如果你要发送\r\n,那么,你发送的 ...

 

另外,编程的时候,中英文标点符号的区别也得注意一下。

这些小问题小错误,不容易察觉,但查错耗费的时间可能比其它的错误还多。

‘’不等同于'',“”不等同于"",……

点赞  2011-12-29 10:42

回复 5楼 David_Lee 的帖子

非常感谢你的耐心解答,不过我还是想问一下,我用5438,为了换行就设置了UCA1TXBUF ='\r'和UCA1TXBUF ='\n',但别人用的14系列的就只设置了一句TXBUF0 = '\n',这是为什么?
点赞  2011-12-29 11:47
我用5438,为了换行就设置了UCA1TXBUF ='\r'和UCA1TXBUF ='\n',但别人用的14系列的就只设置了一句TXBUF0 = '\n',这是为什么?
这个就是串口调试软件的问题了。不用纠结这些东西,关键是看看传上来的数据是不是正确的
点赞  2011-12-29 17:43
另外记住UCA1TXBUF是八位的,意思是每次只能发送一个char型的数据,如果一起发,只能取低八位
点赞  2011-12-29 17:44

引用: 原帖由 鸵鸟蝈蝈 于 2011-12-29 17:43 发表 我用5438,为了换行就设置了UCA1TXBUF ='\r'和UCA1TXBUF ='\n',但别人用的14系列的就只设置了一句TXBUF0 = '\n',这是为什么?这个就是串口调试软件的问题了。不用纠结这些东西,关键是看看传上来的数据是不是正确 ...

 

正解,串口调试工具决定的。

你可以用串口调试工具看看接收到的hex值,数据对就行了。

至于换不换行,看你的上位机软件是怎么编写的。

上位机软件的编写,可以参考一下下面的帖子,视频来的,浅显易懂。

C#上位机学习资料

https://bbs.eeworld.com.cn/viewthread.php?tid=308129

点赞  2011-12-29 19:07
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复