Имею ту же давнюю проблему в Keil для 51-го... И это тянется практически от начала проекта (2001 год) и до текущей V8.02 компилятора. Так как проект очень большой и я использую far memory type support для доступа к данным, хранящимся во внешних EEPROM, да и проект довольно старый, уже и нет смысла переходить на IAR. В IAR я таких "глюков" не наблюдал, правда использую в нем только ARV и ARM. Эти глюки у меня проявляются в порче локальных переменных в функции при вызове других фуекций, т.к. компилятор почему-то выделяет для временных операций адреса тех-же переменных... Поэтому приходится извращаться таким способом: uchar * data TDST; uint data TSIZE; void ymemclr(uchar *uk, uint size) { TDST = (uchar*)uk; TSIZE = size; do { *TDST++ = 0; } while(--TSIZE); }
--------------------
|