如何将字符转换为 ASCII 形式?

How to change a char to ASCII form?

我需要更改我的程序,如何使用某些函数将字符更改为 ASCII? 我的手机从8051接收数据,总是显示'0',这不是真的。

字符转 ASCII 码。

void Data_TX(unsigned char Y)
{
    unsigned char Buff_Y[3];

    Buff_Y[2] = (Y / 100) + 0x30;
    Buff_Y[1] = (Y / 10) % 10+0x30;
    Buff_Y[0] = (Y % 10) + 0x30;

    SBUF = *Buff_Y;
    while (TI == 0);
    TI = 0;
} 

这是我的电路原代码,LCD与8051接口。

bit Sensor_read(unsigned char read[5]);

使用我的函数。

Data_TX(read[2]); //read data.
Data_TX((int)read[2]); //read data, this program can't to run. 
Buff_Y[2] = (Y / 100) + 0x30;
Buff_Y[1] = (Y / 10) % 10+0x30;
Buff_Y[0] = (Y % 10) + 0x30;

这一切都很好。如果您打印这三个字节,您将看到它们包含正确的值。


SBUF = *Buff_Y;

然而,这表示混乱。 *Buff_Y 等同于 Buff_Y[0]。那是单个 char 值...如果您只能将单个 char 值存储到 SBUF 中,那么您将无法存储您想要的三个 char 值存入其中。

如果我们使用逻辑,我们可以做出这样的推论:如果您提供的输入可以被 10 整除(即,当 Y % 100)...

在考虑如何更改这行代码(以及我们看不到的代码部分)的同时,您可能还需要仔细考虑 while (TI == 0);。对于试图解决的任何问题,都应该有更好的解决方案。

我正在更改此代码,可以是 运行,但刚收到个位数字。

void Data_TX(unsigned char Y)

{ 无符号字符 Buff_Y[3];

Buff_Y[3] = (Y / 100) + 0x30;
Buff_Y[2] = (Y%100)/10+0x30;
Buff_Y[1] = (Y / 10) % 10+0x30;
Buff_Y[0] = (Y % 10) + 0x30;

SBUF = *Buff_Y;
while (TI == 0);
TI = 0;

}

Data_TX((int)read[2]);