En el 68HC12A4, por ejemplo, hay dos áreas disponibles para banca de datos, la primera de 0x7000 a 0x7fff (4KB) con el registro DPAGE, y 0x0000 a 0x03ff o 0x0400 a 0x07ff (1K) con el registro EPAGE. Al parecer, las dos áreas de EPAGE se superponen (el bit 10 de la dirección es un no importa).
Con el Cosmic C Cross Compiler para el HC12 / HCS12, se puede especificar una variable en el área DPAGE usando el modificador @far en la declaración. Una variable en el área de EPAGE se puede especificar usando @epage y @far. Por ejemplo,
@far int i; // DPAGE area
@epage @far int j; // EPAGE area
No creo que el compilador comience a usar RAM almacenada automáticamente después de llenar la RAM no almacenada, debes usar estas palabras clave.
Una variable puede ubicarse en el banco de códigos usando @far con la palabra clave const:
@far const int k; // PPAGE area
A esta variable solo se puede acceder en una función ubicada en un área no bancarizada.
De manera similar, las funciones se ubican en un área almacenada mediante la palabra clave @far.
@far int func(void)
{
...
}
La sintaxis de otros compiladores (como CodeWarrior) puede variar, pero tendrían que usar un mecanismo similar. Consulta el manual de tu compilador.