51单片机特殊寄存器

来源:百度知道 编辑:UC知道 时间:2024/06/17 07:22:00
请问51特殊功能寄存器的字节地址和位地址是怎么定义的?我最不能理解的是为什么会有重复的,比如TCON寄存器的第二位地址是89H,而TMOD的字节地址也是89H,重复了啊,用定时器时,这两个寄存器都是要赋值的,那不就覆盖了吗?到底是怎么回事?哪位高手能帮解释一下,多谢!

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中已经内定义好了。