看“stc32.h”这个头文件时,就感觉比较奇怪,里面定义的扩展SFR都是(*(unsigned char volatile far *))类型的,就是单字节的。像STC8A8K64U的头文件还有一些(*(unsigned int volatile far *))类型的呢。当时只是在想是不是忘记写了,或是自己加上是不是就可以了。然而,使用自己添加的16位SFR地址时,程序运行结果异常了。通过反编译看到汇编指令都是正常的,为什么会异常呢,比较疑惑?再仔细看了下首次,在数据存储器章节开头,有写“将来新增的特殊功能寄存器32-BIT SFR32,..........”、“将来新增的特殊功能寄存器16-BIT SFR16,..........”。现在有点明白了,大概是现阶段的这颗芯片还不支持扩展SFR的16位读取方式。建议尽快支持哦,因为在有些和速度相关的操作,16位直接读取还是可以省不少时间的。