51的RAM为00-7FH,80-FFH为特殊功能寄存器
其中20H-2FH可位寻址,在这16B中有128个位,分别又叫00H-7FH的位地址。00H的位地址等于20H.0 01H=20H.1 7FH=2FH.7,主要通过不同的指令的寻址方式来区分不同的地址,就是51的RAM为128B,52的RAM为256B,52的高128B跟特殊功能寄存器是重叠的,就是通过指令来区分的。就像你说的定义TMOD时是字节89H,而定义TCON的第二位时是位寻址。
TCON第二位地址是位地址,TMOD的是字节地址,你要明白,位地址是从20H-2FH字节的:128位+可位寻址的特殊寄存器,一起排列.TCON寄存器也是可位寻址,所以第二位就89h了!第一位就是88H
寻址差异造成的。其实这两个地址并不是映射到了同一个物理地址,而是一个位寻址(指向一位),另一个是寄存器地址的寻址(指向一个字节的存储空间)。你可以在reg51.h里清楚地看到两者的区别。
其实就是寻址方式不同才会出现的,在实现应用的时候不需要过多的注意。在51中已经内定义好了。