[英]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.