Hola gente, soy nuevo en el foro mi nombre es Sebastian. Intenté usar el buscador y me dice que "hubo un error" y que no puedo usarlo...
Estoy tratando de hacer una muy pequeña cosita con un puntero y se me cuelga la compilación (la versión que estoy usando de HiTech es la 9.6)
----------
void main ()
{
unsigned char *Puntero;
Puntero = (unsigned char *)6;
}
-----------
Eso compila perfectamente, y revisando la variable puntero con el MPLAB veo que apunta a la direccion 06. Esa forma de asignar una dirección directamente al puntero la saqué de un libro de lenguaje C
---------esto es del libro--------------
No se puede asignar una dirección
absoluta directamente (habría que hacer un casting). Las siguientes sentencias son ilegales:
p = &34; // las constantes no tienen dirección
p = &(i+1); // las expresiones no tienen dirección
&i = p; // las direcciones no se pueden cambiar
p = 17654; // habría que escribir p = (int *)17654;
-----------------------------------------
El problema se presenta cuando quiero compilar lo siguiente
-----------------------------------------
void main ()
{
unsigned char *Puntero;
Puntero = (unsigned char *)6;
*Puntero = 255;
}
-----------------------------------------
Supuestamente, la única diferencia es que con la última línea lo que hago es poner el valor 255 en la dirección apuntada por el puntero, valga la redundancia.
Viéndolo así que es cortito no tiene sentido dar tantas vueltas, lo sé. Pero la idea es hacer una función a la cual pasarle un número (que sería una dirección de puerto válida, o sea; 05, 06...) para la función maneje el puerto.... Es para una rutina de LCD 2x16 que ya la había hecho en CCS y funcionaba bien. Pero ahora estoy tratando de trabajar con la versión Lite de HiTech