Tengo un MCU 8051 que uso keil para programarlo con C. Mi problema es que el microcontrolador se reinicia al final de algunas funciones mientras deberían volver.
Usando un depurador, traté de comprobarlo línea por línea. Y me di cuenta de que el MCU no se reexpresó justo después del final de la función. El PC (contador de programas) va a otro lugar (en algún lugar donde no hay ningún código que ejecutar) y luego aumenta uno por uno hasta el final del código. Es muy extraño para mí porque escribo mi código en C y nunca he visto el tipo de error anteriormente.
Creo que este problema podría estar relacionado con la configuración del compilador y, por lo tanto, publico la configuración aquí:
Configuración del ensamblador: XR GEN DB EP NOMOD51
Configuración del compilador: DB OE BR GRANDE OPTIMIZAR (11, TAMAÑO) DEFINIR (SILABS_PLATFORM_WMB912) DEFINIR (SILABS_WMCU_SI106x)
Configuración del enlazador: CÓDIGO DE CLASES REMOVIDAS (BIT (0x20.0-0x2F.7), DATA (D: 0-D: 0x7F), IDATA (I: 0-I: 0xFF), XDATA (X: 0-X: 0xFFF), CÓDIGO ( C: 0-C: 0xFBFF), CONST (C: 0-C: 0xFBFF))
Probé configuraciones grandes y pequeñas, pero el problema continúa. Por favor ayúdame si sabes la razón.