Otra pregunta incluyó este programa:
void main(void){
TRISD = 0x00;
PORTD = 0xFF;
}
Supongamos que hace exactamente lo que se pretendía hasta la última línea de main()
.
Mi pregunta es, ¿qué sucede en un PIC18F4550 cuando el flujo de control cae fuera del final de main()
? Supongo que cualquier programador PIC decente llenará el espacio de instrucciones después de main()
con all-1s o all-0s, pero no sé cuál.
Desde la documentación del conjunto de instrucciones PIC puedo ver que una instrucción de todos ceros es NOP
, que es inofensivo en sí mismo, pero ¿qué sucede cuando el contador del programa llega al final del espacio de instrucciones? ¿Se envuelve, se detiene, se incendia, emite monos ...?
Si los programadores de PIC llenan el espacio del programa con all-1s, como en una EEPROM vacía, parece que esa será una instrucción ADDLW
que agrega 0xFF a W
. Si eso es correcto y no nos importa lo que suceda con W
, ¿es lo mismo que el caso NOP
?
¿Las respuestas a las preguntas anteriores argumentan para hacer otra cosa, como ejecutar un bucle infinito para evitar que la ejecución salga de main()
? No creo que podamos dormir el microcontrolador aquí, ya que eso no mantendrá las líneas del puerto D indefinidamente, como quería el OP.