Hola Suky. Muchas gracias por contestar tan rápidamente. Excelente lo del CTRL+D en Proteus! Respecto del #org aparentemente no lo estoy utilizando bien...
Generé una función con la directiva de la sgte. manera:
#ORG 0X800,0X805
void nada(void){
#ASM
NOP
NOP
NOP
#ENDASM
}
con el solo fin de hacer un debug del soft. Defino el prototipo en el archivo de cabecera, y llamo a nada() al comienzo del main() (como primera instrucción). Cuando intento compilar me aparece un "error 166: Invalid overload function nada" y luego un error43: expecting definition por cada una de las líneas de codigo siguientes.
Tomo el programa que corría en el 16f628, le agrego un poco de procesamientos adicionales con el fin de que el tamaño del programa exceda los 2KB y me voy a simular en el Proteus. El comienzo del programa (en la dirección cero aparece el siguiente fragmento:
0000: MOVLW 08
0001: MOVWF 0A
0002: GOTO 094
0003: NOP
.................
y en la dirección 0x894 (dirección del main), el siguiente:
.................... void main()
.................... {
*
0894: CLRF 04
0895: BCF 03.7
0896: MOVLW 1F
..........
Cuando el Proteus ejecuta el goto 094, con el PCLATCH = 8, hace un salto a la posición 0x894, pero no encuentra código!!!
Aparece la pantalla vacía con el siguiente mensaje en el medio:
"No source line at PC address [PC=0894]"
lo que se condice con el hecho de no tener dirección de memoria asignado main en la imágen consulta1 del primer post...
Toda sugerencia es bienvenida. Nuevamente gracias por tomarte la molestia de leer y contestar.
Saludos.
Gustavo.
Antes que nada quiero comentarles de que estaba equivocado en las conclusiones a las que llegué anteriormente. Si bien no entiendo que es lo que está fallando con mi código en particular, lo cierto es que cree un proyecto muy simple en mplab, usando los fragmentos de código que les mostré en el post #4 y cargué el archivo.cof en el proteus y anduvo sin problemas (es muy elemental y no contiene saltos ni llamadas a interrupciones). Luego siguiendo el consejo de Suky puse un #ORG 0X800,0X8FF en el main de mi programa original, no dió errores y me lo ubicó en ese segmento sin problemas. A la hora de ejecutarse se me llena el "simulation log" de errores por:
"Stack underflow executing RETLW instruction"
"Stack overflow executing CALL instruction"
(unos 900 mensajes en 4 segundos, se me resetea el pic... todo un lío!)
No se a que se deben todavía, pero podría sospechar que es producido por problemas de paginación?
Suky: si no es inconveniente para vos puedo hacerte una consulta sobre la teoría de control de uno de tus desarrollos (me interesa particularmente consultarte sobre el anti-windup). Si se pudiera, indícame por favor en que parte del foro debería realizar la consulta. Muchas gracias.
Saludos.
Gustavo.