Здравствуйте, имею проект на ASMe для C8051F321, раньше писал его в IDE от Silabs, но из-за ограничения кода перешел на Keil. Пока не было кейла написал 2 куска программы и отладил их отдельно, все работало. Вчера собрал все в одну кучу, с трудом скампилировал,
Program Size: data=179.0 xdata=0 const=0 code=2729
"DAC" - 0 Error(s), 0 Warning(s).
но результат разочаровал. а именно: в проекте имеется LCD 20*2, рабочая подпрограмма работы с ним многократно проверенная (автор Конышев Ю.А.). В ней имеются массивы данных, обращение к ним через DPTR:
LCD_StringLeft:
push ACC
mov A,#lcdAddrLeftStr
lcall LCD_AddrDDRAM
push 00h
mov R0,#lcdLimitStr
clr A
movc A,@A+DPTR
cjne A,#eos,$+5
SJMP $+7
lcall LCD_WriteCData
inc DPTR
djnz R0,$-10
pop 00h
pop ACC
ret
Подпрограмма выводит строку:
lcd_str4: db 'ERROR!!! делаю сброс'
Команда
movc A,@A+DPTR
первый раз получает правильный байт из массива, все последующие байты берутся из области вне массива и имеют значение FF.
Кто знает подскажите как это забороть, сам я не знаю даже в каком направлении копать.