簡體   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