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 ,替换成易懂简短的字符标识,后面方便调用不易出错。
|