После всех манипуляций программа стала зацикливаться. Как выснилось, программу вешает вызов функции sprintf() из стандартной библиотеки. Далее, по map- файлу я узнал, что зацикливается функция putchar, и в отладчике нашел место где всё останавливается. Выглядит это так:
CODE
C:0x9629 3099FD JNB TI0(0x98.1),C:9629
C:0x962C C299 CLR TI0(0x98.1)
C:0x962E F599 MOV SBUF0(0x99),A
C:0x962C C299 CLR TI0(0x98.1)
C:0x962E F599 MOV SBUF0(0x99),A
Висяк в первой строке. То есть sprintf пытается отправить данные через последовательный порт. В программе функции вида *printf, где вызывается putchar не используются.
Менял виды оптимизации - безрезультатно. Если приложение размещается по нулевому адресу - всё ок. Как такое может быть?
