C51中 P1M1不是特殊功能寄存器,怎么可以赋值?应该怎么理解?

我看到一些程序代码,他们自己定义了一些其它的寄存器。这是怎么回事?

sfr CLK_DIV = 0x97; //为STC单片机定义,系统时钟分频
//为STC单片机的IO口设置地址定义
sfr P0M1 = 0X93;
sfr P0M0 = 0X94;
sfr P1M1 = 0X91;
sfr P1M0 = 0X92;
sfr P2M1 = 0X95;
sfr P2M0 = 0X96;
//************************

这是在别人程序里面的,超声波测距的

这些都是特殊功能寄存器,是可以赋值的,上面程序是STC的12C5A系列单片机的特殊功能寄存器的地址声明,如果用了STC提供的头文件就不用再在程序里声明了。
温馨提示:答案为网友推荐,仅供参考