Цитата Сообщение от Titus Посмотреть сообщение
Вот отрывок кода, который тестирует:
Код:
GetDump:
		MOVB	#6,@#TMRSTATE		;0x06-> TMRSTATE (остановить таймер, шаг 16мкс)		
		MOV	#99,@#TMRBUF		;99 -> TMRBUF (записать значение в буферный регистр)
Перед вызовом прерывания запрещены вообще.

Как видно, в буферный регистр заносится число 99, затем таймер запускается, ждется число 5 в регистре текущего значения, и начинается протоколирование в память, где оказывается соответственно 5, 4, 3, 2, 1, 0, 98, 97 и т.д.
Так вот, иногда там оказывается 5, 4, 3, 2, 1, 0, 4095, 4094, что может означать ТОЛЬКО ОДНО, что число 99 НЕ прописалось в буферный регистр, а прописалось число 0. Иных вариантов предположить не могу.
А если в коде переменить две строчки:
Код:
GetDump:
		MOV	#99,@#TMRBUF		;99 -> TMRBUF (записать значение в буферный регистр)
		MOVB	#6,@#TMRSTATE		;0x06-> TMRSTATE (остановить таймер, шаг 16мкс)