繁体   English   中英

如何将字符更改为 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 ),则该char值将为'0' ...

当您考虑如何更改这行代码(以及我们看不到的代码部分)时,您可能还想仔细考虑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]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM