Re: [問題] 單晶片使用Keil C ?

看板C_and_CPP (C/C++)作者 (小瑞)時間16年前 (2009/06/21 11:55), 編輯推噓4(4018)
留言22則, 5人參與, 最新討論串2/2 (看更多)
※ 引述《hotpot21 (小新)》之銘言: : 大學時期學C(螞蟻書) 只是在電腦上Run : 現在碰到單晶片使用Keil C,有看過相關程式、與51晶片的各接腳功能 : 有些地方一直搞不懂 : (程式主要是控制LCD的驅動IC) : 請問。。。 : 1.程式裡的哪些變數才是對應到晶片上的接腳? 一直連結不起來 @@ : 怎麼設定 ? 查閱 8051的datasheet,裡面有SFR 位址定義 然後對照 Keil 的 .H 檔案, 例如 sfr P0 = 0x80; 就是將P0 宣告對應SFR的0x80 所以在C code裡面,使用P0 時,compiler 就會知道要去存取 0x80 : 2.初學者如何吸收才會較有效率? : 又如果在"晶片控制LCD的驅動IC"方面來說 要如何學習與吸收? 多寫多看sample多debug : 3.看到程式裡有如下: : void WRITE(unsigned int cmd) : { : . : . : . : . : . : XBYTE[0X01] = cmd ; : } : 請問 XBYTE[0X01] 是什麼意思? 能用 XBYTE 是因為有include "ABSACC.H" 裡面對XBYTE有定義 #define XBYTE ((unsigned char volatile xdata *) 0) 應用到xdata資料型態,在keil manual 裡面有說明 簡單來說,是使用組語 MOVX 指令來存取 至於MOVX的動作,datasheet 有時序圖說明 : 4. 譬如 location = 0X0000 : 只知道 0X0000 是16進制 但為何要 = 0X0000 ? 而不是一般的數@@ 可以寫 location = 0 只是為了coding style 一致所以寫 0x0000 像 LCM = 0x8000 你也可以寫 LCM = 32768,compile 出來都一樣的 寫16進位對於製作外部decode 電路會比較清楚 。 : 麻煩各位前輩教導!! 原諒小弟的才疏學淺.. : 非常感謝各位 寫得沒有很詳細,建議你自己自己查書;會學得更多。 good luck -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.84.233.198

06/21 13:07, , 1F
非常感謝你的耐心指導 1.詳細 懂了 2.了解 有推薦的書?
06/21 13:07, 1F

06/21 13:12, , 2F
3.IC datasheet時序圖看不懂!! XBYTE定義 我再去研究一下
06/21 13:12, 2F

06/21 13:14, , 3F
4. 0是十進制? 為了coding style是何意?
06/21 13:14, 3F

06/21 13:21, , 4F
KeilC的官網有說明文件可以看 建議初學者先去看一下
06/21 13:21, 4F

06/21 13:24, , 5F
英文? 還是去看看!! 感謝
06/21 13:24, 5F


06/21 13:25, , 7F
是英文沒錯 不過不難讀 我英文很爛都看得懂了 XDDD
06/21 13:25, 7F

06/21 13:27, , 8F
說不定我比你更爛XD!! 整個看完?
06/21 13:27, 8F

06/21 13:30, , 9F
應急可先看相關部分,有空整個go through 一遍,以後查
06/21 13:30, 9F

06/21 13:30, , 10F
比較快 :)
06/21 13:30, 10F

06/21 13:33, , 11F
相關部分是? 總覺得都很關..連... XD
06/21 13:33, 11F

06/21 13:53, , 12F
用關鍵字去查吧
06/21 13:53, 12F

06/21 14:21, , 13F
thanks
06/21 14:21, 13F

06/21 14:25, , 14F
根據C/C++標準的規定,0就是0沒有幾進制,加上0x就是16進位,
06/21 14:25, 14F

06/21 14:26, , 15F
如0xA;加上0就是八進制,如010其實是0x8;其他當然就是10進制
06/21 14:26, 15F

06/21 14:28, , 16F
組合語言,記得好像是用10h中的h代表16進位,10b的b代表二進位
06/21 14:28, 16F

06/21 14:30, , 17F
了解 感謝
06/21 14:30, 17F

06/21 19:34, , 18F
其實應該是以 ?進制表示法 來表達一個數而已....
06/21 19:34, 18F

06/21 19:35, , 19F
那些constant不管用幾進制表示, 代表的數仍是相同的.
06/21 19:35, 19F

06/21 19:35, , 20F
所以才會說只是為了維護coding style一致而已:)
06/21 19:35, 20F

06/21 20:53, , 21F
?->什麼東東;coding style讓程式看起來易讀?
06/21 20:53, 21F

06/21 20:54, , 22F
感謝解說 很詳細!!
06/21 20:54, 22F
文章代碼(AID): #1AFQz5P5 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1AFQz5P5 (C_and_CPP)