Contenido>Indice>Intro CursoC51

USO DE LOS 128 bytes SUPERIORES DE LA RAM DEL 8052


El µC 8051 dispone exclusivamente de 128 bytes de RAM interna, de acceso directo e indirecto. Los accesos directos a direcciones por encima de la 0x7f se refieren a los SFRs, y los accesos indirectos (MOV A,@R0) en esta región no funcionan.

Sin embargo, el µC 8052 y otros muchos derivados, disponen de 128 bytes por encima de la dirección 0x7f, que permiten el acceso indirecto. Para informar al linker de que se está utilizando un µC con 256 bytes de RAM interna se utiliza el comando RAMSIZE(256). La principal aplicación de este espacio adicional es para la pila. El 8051 cuando empila un dato incrementa el registro apuntador SP (El 8086 lo decremeta),  por esa razón el linker ubica la pila por encima del área utilizada por las variables. Si una aplicación no necesita una pila muy grande, se puede sacar partido a este espacio declarando algunas variables de tipo idata.

Muchos programadores no declaran variables de tipo idata hasta que otras variables han ocupado los 128 bytes inferiores. Sin embargo, es buena idea declarar de tipo idata algunos arrays y las variables a las que se accede mediante punteros, ya que en ambos casos el acceso indirecto (MOV A,@Ri) resulta ser el más apropiado. En estos casos, la pila se sitúa por encima de los objetos de tipo idata. 


   Contenido>Indice>Intro CursoC51