[問題] 晶片address計算錯誤

看板ASM作者 (高毛毛)時間10年前 (2013/12/21 00:53), 編輯推噓2(2010)
留言12則, 2人參與, 最新討論串1/1
小弟之前上篇問過SPI晶片使用方式, 在英文方面已經可以正確獲得SPI傳回的資料。 參考GT21L16T1W 的說明要實做big5漢字的點陣, 傳址的正確位置算不出來,主要看不懂部分在程倒數第二行如下 Index = Big5Table[Big5Index*2] * 256 + Big5Table[Big5Index*2+1]; 請有經驗的板友提供意見,謝謝 以下為datasheet提供的計算方式 參數說明: FontCode表示漢字內碼。 MSB 表示漢字內碼FontCode的高8bits。 LSB 表示漢字內碼FontCode的低8bits。 Address 表示汉字点阵在芯片中的字节地址。 BaseAdd:说明点阵数据在字库芯片中的起始地址。 Big5Table:表示BIG5 索引表。表的起始地址为 0x62410 Big5Index:表示该内码汉字在BIG5 索引表中的序号。由该序号可查BIG5 索引表得出汉 字在字库中的序 号 Index:表示该字符在字库中的序号。 計算方法:BaseAdd=0x00; if(MSB >=0xA1 && MSB <= 0XC6) { if(LSB >=0x40 && LSB <= 0X7E) Big5Index =(MSB - 0xA1) * 157 + (LSB - 0x40); else if(LSB >=0XA1 && LSB <= 0XFE) Big5Index =(MSB - 0xA1) * 157 + 63 + (LSB - 0xA1)); } Index = Big5Table[Big5Index*2] * 256 + Big5Table[Big5Index*2+1]; Address =Index * 32 + BaseAdd; 而小弟照著參考資料用以下方式實做 long BaseAdd=0x00; long Address=0x00; long big5table=0x062410; long Big5Index=0x00; long index=0x00; if(MSB >= 0xA1 && MSB <= 0xC6) { if(LSB >= 0x40 && LSB <= 0x7E){ Big5Index=( MSB -0xA1 )*157+(LSB-0x40); }else if(LSB >= 0xA1 && LSB <= 0xFE){ Big5Index=( MSB -0xA1 )*157+63+(LSB-0xA1); } }; index=(big5table+Big5Index*2)*256+big5table+(Big5Index*2+1); Address=index*32+BaseAdd; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.254.96.92

12/21 22:44, , 1F
hint: a * 256 跟 a << 8 等效
12/21 22:44, 1F

12/22 21:08, , 2F
板友謝謝,這hint我還是沒辦法體會。
12/22 21:08, 2F

12/22 21:09, , 3F
index=(big5table+Big5Index*2)<<8+big5table....無效
12/22 21:09, 3F

12/22 21:10, , 4F
我的問題點在於我並不知道陣列的資料大小,所以不會計算
12/22 21:10, 4F

12/23 10:17, , 5F
我是提示你,你看不懂的那行程式是在做把兩個1byte的資料
12/23 10:17, 5F

12/23 10:18, , 6F
湊成一個2byte的index值,例如0x12跟0x34變成0x1234這樣
12/23 10:18, 6F

12/23 10:19, , 7F
另外我概略看了一下爛爛大五碼的編碼規則後發現,
12/23 10:19, 7F

12/23 10:20, , 8F
datasheet中給的範例程式應該有誤。建議你補充一下Big5編
12/23 10:20, 8F

12/23 10:20, , 9F
碼規則的相關知識。EX: http://goo.gl/cImj5F
12/23 10:20, 9F

12/23 10:32, , 10F
查了一下這顆字庫IC的出品公司GENITOP,中文叫「高通」XD
12/23 10:32, 10F

12/23 10:32, , 11F
成立時間(1983)還比Qualcomm(1985)早...WTF... XDDDD
12/23 10:32, 11F

12/23 14:01, , 12F
了解,感謝,寫給這家公司也沒回覆。
12/23 14:01, 12F
文章代碼(AID): #1Ij7O6eA (ASM)