ACC、PSW、PC、特殊功能寄存器是在CPU中还是RAM中??
按说从寄存器的定义里就明确说了存在于CPU中的高速缓存。如果翻看MSP430的手册就明确R0--R15是CPU的一部分。但是到了51单片机里,除了PC的特殊功能寄存器的地址是属于RAM的最高128字节,这样就好像RAM里也存在寄存器一样。特别是特殊功能寄存器,比如P1、P2这些sfr一般是不存在于CPU里的,但是也叫“寄存器”,并且还与ACC,PSW的地址在同一块RAM区域。
这样我就纳闷了,到底ACC、PSW、PC、SMOD等一些寄存器的物理空间到底在哪
此帖出自
小平头技术问答
首先,楼主应该分清CPU寄存器和外设寄存器。CPU寄存器存储的是CPU的状态信息,而外设寄存器存储的是外设资源的状态信息。按理说,外设寄存器才被分配地址进行访问,而CPU寄存器直接访问,不能用地址访问。51出来得很早,寄存器设置得并不是很合理,它对于CPU寄存器和外设寄存器的分配并不是很清晰,所以导致有些其实是CPU寄存器的,但是被分配一个地址空间。 另外,纠结于这种事情着实没有必要。它们那么做,并不代表它们是科学的,而是跟芯片设计工程师的思维方法有关。一样新东西出来的时候,谁都对它不熟悉,包括设计工程师本身,所以一些设计看起来会很奇怪,令人费解。比如51的高地址空间即是特殊寄存器的,又是RAM的,访问的时候并不冲突,芯片内部会解决这种冲突,但是这会让有些使用者疑惑,比如楼主就是其中之一。后来MCU技术越来越成熟,于是现在的MCU在这些方面做得很好。这很像软件设计技术,软件技术刚出现的时候,很多人编写出来的代码用现代人看都是一团糟。 等楼主真的明白MCU简单来说其实就是由一系列的逻辑门组成的一个时序电路,在时钟的驱动下用于取出、翻译并执行指令(0和1)时,你就不再会纠结于这些东西了。
51已经很多年不使用了,上面表述的时候全凭着有限的记忆,如果有说错的地方,不要拍砖。
一周热门 更多>