STC8頭文件中#define CKSEL (*(unsigned char volatile xdata *)0xfe00) /* 主時鐘源選擇 */
0xfe00 是整型數字,在這里一個是地址門牌號數字; (unsigned char volatile xdata *) 是強制類型轉換,轉換成指針類型,該指針指向unsigned char型數據(1字節8bit);
(unsigned char volatile xdata *)0xfe00 ////// 是指xdata外部可尋址擴存儲區的房間門牌號首地址是0xfe00的指針,存的數據類型是unsigned char(只占一個字節存儲單元房間8bit) 類型,volatile 是指這是個隨時變化量,每次需不厭其煩從此地址門牌號0xfe00內讀取新鮮數據再傳送,若傳輸過程被打斷了,再傳需重新讀取數值,后再傳送,不許接著傳送中斷前保留的那個暫存值。
*(unsigned char volatile xdata *)0xfe00 ///// 前 加 * 是讀取地址門牌號0xfe00內的數據,由于該數據長度是一個字節的char型,只讀取0xfe00一個房間內數據值(若是int16位數據,需讀取0xfe00和0xfe01兩房間2個字節數據,每個房間放一個字節8bit數據 )。
#define CKSEL (*(unsigned char volatile xdata *)0xfe00) /////// 將 *(unsigned char volatile xdata *)0xfe00 加括號整包裹起來,宏定義 為 CKSEL ,替換成易懂簡短的字符標識,后面方便調用不易出錯。
|