[an error occurred while processing this directive]
|
Пишу под 648 PIC.
есть такая замечательная команда movf. В описании руским по белому написано "d=1 используется для проверки содержимого регистра 'f' на ноль."
Или вот даже на буржуйском "d=1 is useful to test a file register since status flag Z is affected." Или я дурак или объясните в чем дело:
вот кусочек кода
next_task ...... clrf huj next_task ...... Кто нибудь может объяснить в чем прикол?
clrf huj
start
......
......
movf huj,F
btfsc STATUS,Z
goto next_task
nop
nop
......
goto start
переменную huj в самом начале =0 и больше вообще нигде не трогаю. Ну и походу прога крутится в цикле start ... goto start. При пошаговой отладке вроде все работает правильно.
Но если запустить на выполнение то примерно раз в 1-5 секунд (по машинным циклам естественно в пределах пика, а не по часам наблюдателя) прога каким то хуем попадает на breakpoint.
Ну ладно, думаю, глюк mplab'овского отладчика. Но в прошитом реальном пике ситуация точно такая же.
Думал может туда попадаю из-за неправильно настроенного pclath. Переносил ентот кусок в разные места, вставлял пачки nop, переносил его в другие подпрограмы - ничего не менялось.
И тут я попробовал сделать не movf huj,F, а movf huj,W - и все сразу заработало как надо. И внутрь на breakpoint прога выходить перестала и в отладчике, и в реальном пике.
start
......
......
movf huj,W
btfsc STATUS,Z
goto next_task
nop
nop
......
goto start
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание