Re: [問題] RS232與8051
※ 引述《aegishow (clover)》之銘言:
: 我想問一些關於編碼的問題,以下是部分程式碼
: unsigned char code seg7[]={0xc0,0xf9,0xa4
: ,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
: code char mes[]="$LGIN,275,34,5" ; //自己設的字串資料
: 我想要顯示自己設的字串資料中的34,也就是第二個逗號跟第三個逗號中間的數字
: 我是利用電腦送出這個字串
: L=第三個逗號的位置(13)
: SBUF=mes[L-1]; //我用SBUF讀到的是4也就是34H
: 我用7段顯示器接P0
: P0=seg7[mes[L-1]+1] //為什麼顯示出來不是數字4呢?? 結果不是數字
mes[L-1] = '4'
mes[L-1]+1 = '4' + 1 = '5' = 35H
P0 = seg7[mes[L-1]+1] = seg7[35H] = ???
正確的做法應該是:
P0 = seg7[ mes[L-1] - 30H ];
這樣就好了……沒事再加一是做啥呢?
請記住一個很重要的觀念:4 和 '4' 和 "4" 是完全不同的東西
: 我直接放數字上去,也就是
: P0=seg7[5] //卻可以顯示出數字4
因為那個數字就是4
: SBUF讀到的數字4是經過轉碼了嗎? 所以我看到的數字並不是原始的資料嗎?
你看到的數字就是 UART 所讀到的數字
: 要怎麼把SBUF讀到的資料轉成數字呢?
不用轉,因為你在傳送字串時,已經轉成 ASCII 了
: 該不會要自己建一個對照表吧?
某個程度上會需要建立 ASCII -> 數字 的表格
不過因為你只想顯示數字 0~9,所以SBUF讀進來的資料只要 -30H 就可以了
所以其實也不用建對照表
再想想吧……有很多事情你把它搞混了
這個已經離組語很遠了……
--
只要覺得有生命危險,就馬上四散逃走……
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.156.98
推
08/05 09:04, , 1F
08/05 09:04, 1F
→
08/05 09:19, , 2F
08/05 09:19, 2F
討論串 (同標題文章)
ASM 近期熱門文章
PTT數位生活區 即時熱門文章