Цитата
static unsigned char data;
Код
Но если у вас такая беда, то можете явно проинициализировать.
Спасибо за советы, но я немножко не об этом хотел узнать. Проблема то решена принудительным обнулением.
Но - по логике вещей в data ничего не должно писаться без ведома программы, так собственно и происходит с остальными пермененными.
Дело в другом - я недавно бился над подобной проблемой - у меня напротив, после записи в массив через какое-то время информация в нем затиралась. Как выяснилось, массив у меня был без указания размера, а по сему пользовался "ничейной" областью памяти. И когда программа хотела в эту облатсь записать еще что-то, ей это удавалось.
Так вот у меня опасения, что причина проблем с переменной data схожая, боюсь что словлю глюк где-нибьудь еще и понять его причину будет сложно.
Так что смысл вопроса, смысл темы объяснить на пальцах как решить эту проблему KEILовским отладчиком.
Цитата
Всегда использовал отладку печатью в порт.
Мой первый проект еще на AVR был с дисплеем, я привык отлаживать, выводя нужную информацию на экран, так что к своему стыду, отладчиком пользоваться не умею. Копнул недавно на теу отладки в KEIL, добавил в окно мониторинга пару переменных и был разочарован - чтобы узнать их значение, программу нужно останавливать. Куда удобнее выводить на экран.
А вот ловлю обращений к памяти выводом на экран не организуешь.
Цитата
"Breakpoints" в поле "Expression" необходимо ввести что-то типа "data==0"
При этом data должна быть глобальной
Если делать переменную глобальной, проблема исчезает, так что смысл в отладке теряется. Зато появляется ощущени нерациональности программы.
Как сделать две вещи - определить адрес в памяти, выделенный под data и как определить "клиента" который на этот адрес покушается?
Цитата
массив данных отображается неверно, а если посмотреть область памяти по адресу массива - там все четко
Никогда похожих проблем не было с выводом на экран или запись в порт. Как-то расхотелось пользоваться житагом.