我是嵌入式编程的一员,这里有个问题,我使用通用异步收发器通信,想通过串行line.each发送整数,整数在ascii.What中必须显示为字符,所有我应该注意的事情?来自控制器端的数据将是整数/字符/浮点型format.What,在串行监视器s/w上显示这些来自控制器的数据时,我是否需要注意这些数据?我正在用c语言编写代码。
问候
发布于 2014-07-04 01:57:40
如果你要找的是将整数转换成ascii,有一种符合标准的方法可以做到。
sprintf(str, "%d", your_integer);发布于 2014-07-04 04:17:34
我假设您希望使用微控制器(如8051 )通过UART通信发送/接收数据。所以这里有一些你应该注意的东西。
1)您希望发送的波特率是多少?波特率是每秒发送/接收的符号数
2)每个符号希望接收多少比特?取决于您使用多少位微控制器
以下是用于UART通信的代码示例,用于发送波特率为9600的堆栈溢出和8051的8位数据。出自“8051微控制器与嵌入式系统”一书
#include <reg51.h>
void SerTx(unsigned char);
void main(void){
TMOD=0x20; //use Timer 1, mode 2
TH1=0xFD; //9600 baud rate
SCON=0x50;
TR1=1; //start timer
while (1) {
SerTx(‘S’);SerTx(‘T’);SerTx(‘A’);SerTx(‘C’);SerTx(‘K’);
SerTx(‘’);SerTx(‘O’);SerTx(‘V’);SerTx(‘E’);SerTx(‘R’);
SerTx(‘F’);SerTx(‘L’);SerTx(‘O’);SerTx(‘W’);
}}
void SerTx(unsigned char x){
SBUF=x; //place value in buffer
while (TI==0); //wait until transmitted
TI=0;}发布于 2014-07-04 11:56:15
当您声明:
unsigned char array[10] = {'F','E','E','D','B','A','B','E','C','A',};
编译器根据ASCII表将其放入适当的数字表示中(见下文)。所以在你的设备端,它就像'F'的0x46,'E'的0x45等等。当你通过将这个数组传递给TX函数来通过串行发送它时,它会用相同的代码到达另一端,同样就像'F'的0x46,'E'的0x45等等。
当您将其直接放入数字中时,就像这里一样,它将保持原样。
unsigned char array2[10] = {0xFE,0xED,0xBA,0xBE,0xDE,0xAD,0xBE,0xEF,0xCA,0xFE};
你可以将任何数据转换为二进制形式,有时这是一个在特定位置的表示问题。

https://stackoverflow.com/questions/24560301
复制相似问题