PC在单片机名词解释是程序计数器!DPTR表数据指针!第一条执行后它所指向的是程序运行步数加上累加器的地址!一般不用这种方法查表!第二条是可以给数据指针定义值!使用方便!简而言之是说一个不用付值一个要付值。最好用第二种不容易出错
51的存储器从功能上来说可以分为程序存储器和数据存储器,至于到底能扩展多少存储空间,要看你扩展的是哪一类存储器。
访问存储空间时,需要用到两个指针变量,为DPTR何PC。其中pc为程序计数器,指向下一条需要执行的指令的地址,DPTR为数据指针寄存器,这两个变量的长度都为16位,这是51单片机内部结构决定的,无法改变。所以这两个指针的寻址能力都为64K。这样看来,两类存储器的扩展能力都为64K
。但是,如果你实际扩展过存储器,你就可以发现程序存储器的扩展能力并没有64K!!!
这是为什么呢????
这得从51单片机的存储空间的编址说起。这里仅作简单说明,具体可以看教科书。简单地说,内部程序存储器和外部程序存储器是一起编址的,它们分别占用64K地址的一部分,所以外部扩展时要减去内部的地址空间,当然小于64K啦。而数据存储器是内外部分别编址,内外部数据存储器用不同的指令进行访问,所以不用担心单片机会混淆内外部数据存储器,所以外部数据存储器扩展能力有64K
这两条都是查表指令,MOVC A,@A+PC,只能给累加器A赋值,所以只能查这条指令所在地址以后256字节范围内的代码或常数。
而MOVC A,@A+DPTR,可以给DPTR赋给任何一个16位的地址值,所以查表范围可达整个程序存储器64K字节空间的代码或常数。
MOVC A,@A+PC ;PC指向下一个地址,用这条指令的话很不方便
但它的优点是不改变PC的状态,缺点是查表指令只能在256之内。而且只能被一段程序所用
MOVC A,@A+DPTR ;指针PDTR及A的内容有关,与该指令存放的地址及常数表格存放的地址无关,所以位置可以在64KB、、、
打字真麻烦,不说了。反正记住以后在实际应用中这条指令才是主要的查表指令
MOVC A,@A+PC很少用到(几乎是没用)。你找下教科书说的肯定清楚我就不在说了,也说不清楚
PC时程序计数器,主要是记录单片机在ROM的执行位置,一般单片机可以访问64K的地址,也就是需要16位的字宽
SP是堆栈的指针,堆栈是建立在RAM的,内部的RAM是重0~255的所以只要8位就可以了
DPTR是一个16位的寄存器,对这个数据寄存器赋值时,对于寄存器寻址方式,我们是把它拆分为高八位,低八位来访问的
由于它是16位,所以我们可以用它来访问64K的ROM空间,也可以访问64K的外表RAM空间
DPTR是数据指针,指向片外存储器,当外扩数据存储器或程序存储器(最大为64K,因为DPTR是16位,2^16 = 64K),不外扩存储器时可作为两个单独寄存器DPL和DPH使用。
PC(program counter)程序计数器,指向将要执行的下一条指令,是下可寻址的,也就是你无法 *** 作该指针
以上就是关于单片机 简述MOVC A,@A+PC和MOVC A,@A+DPTR的不同全部的内容,包括:单片机 简述MOVC A,@A+PC和MOVC A,@A+DPTR的不同、图中程序存储器和数据存储器扩展的存储容量是多少、单片机中MOVC A,@A+DPTR和MOVC A,@A+PC有何区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)