PUNTEROS A DIRECCIONES ABSOLUTAS
En muchas aplicaciones con el 8051, la ROM, la RAM y los periféricos se encuentran en direcciones fijas. En consecuencia, se plantea la necesidad de hacer que un puntero apunte a una dirección absoluta, en lugar de apuntar a variables cuya dirección de memoria es desconocida y la mayoría de las veces irrelevante.
El método más sencillo es asignar la dirección durante la compilación:
char *abs_ptr = 0x8000 ; // Define un puntero a char que apunta // a la dirección 0x8000
Sin embargo si la dirección a donde debe apuntar el puntero no es conocida durante la compilación, pero si durante la ejecución del programa, el procedimiento anterior no sirve. En este caso se declara un puntero, y más tarde se le asigna una dirección:
char *abs_ptr ; // Declara un puntero abs_ptr = (char *) 0x8000 ; // Apunta a la dirección 0x8000 *abs_ptr = 0xff ; // Escribe 0xff en dirección 0x8000 *abs_ptr++ ; // Apunta a la dirección 0x8001