Здравствуйте, имею проект на 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.
Кто знает подскажите как это забороть, сам я не знаю даже в каком направлении копать.
|