Re: [問題] UART收到的字元(ASCII)如何轉為Bin或Hex?
個人獻醜 .. 希望沒有會錯意
-------------------------------------------------------
我的觀念
* C語言裡面的"字元"是以單引號來辨識.所以建議用 '0'-'F'
* 所謂的 "字元"與 "字串"差別. 是"字串"為數個"字元"並加上"字串結尾"
* 文中的 bin與hex是進制的意思. 但是純"值" 0-15 是沒有禁制的問題
當 sbuf 是 dec-12 時 也同時代表 hex-C 與 bin-1100
* 所以您的轉換應該是 希望將傳入的 '0'-'F' 字元轉為 bin 0000-1111 值
* 我習慣的寫法會是
b=SBUF;
rec(pointer++) = ( b < 'A') ? ( b-'0') : ( b-'A'+10 ) ;
ps..我知道可讀性不高.只是我習慣了
--------------------------------------------
※ 引述《deo2000 (800IM)》之銘言:
: 目前用PC -> rs232 -> 8051 控制兩顆直流馬達的運動平台
: 每顆馬達 正 逆 停 煞 四個狀態 2bit,兩顆就有4bit,接在 P2^0,P2^1 和 P2^2,P2^3
: 也就是這個運動平台共有 16 種狀態,
: 在VS2010中編碼成 "0"~"F"傳送給8051 (因為我只會一次傳一個字元)
: 因為我不會直接把字元轉成對應的Bin或Hex,所以解碼的相當沒效率
: (聽說分支指令在單晶片中,比PC要來得沒效率很多,真的嗎?)
: 8051端:
: if(RI)
: {
: RI=0;
: if(SBUF==0x30) //0,1111純停止
: P2=0x00;
: else if(SBUF==0x31) //1
: P2=0x01;
: else if(SBUF==0x32) //2
: P2=0x02;
: :
: :
: else if(SBUF==0x46) //F,1111 煞車
: P2=0x0F;
: }
: 請問ASCII可以直接解碼嗎? 或者其他更有效率的寫法?
: 目前速度還不錯,但是還有其他功能想加入,而且是real time,怕這裡中斷太久
: PC大約每 30ms 會中斷一次8051
--
Only You.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.187.13
推
08/03 17:04, , 1F
08/03 17:04, 1F
推
08/07 01:59, , 2F
08/07 01:59, 2F
→
08/07 01:59, , 3F
08/07 01:59, 3F
推
08/07 10:07, , 4F
08/07 10:07, 4F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章
19
166