[英]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 % 10
为0
),则该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.