為什麼這篇Keil C鄉民發文收入到精華區:因為在Keil C這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者Aquatics (小瑞)看板C_and_CPP標題Re: [問題] 單晶片使用Keil C ?...
Keil C 在 Ashley Ying Wu Instagram 的精選貼文
2021-07-11 10:56:27
從一直下雪又陰天的荷蘭到丹麥 總算有陽光了🌞 但真的好冷好冷好冷 冷到耳朵手指都沒感覺 現在真的好想在很熱的地方 曬著很熱的太陽🌞🌴 #ashley🌿travels...
※ 引述《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