Цитата(gosenergo @ Apr 23 2011, 01:21)

Начал поиск ошибки неработоспособности девайса с текста программы. И проверяя работу программы в симуляторе MPLAB 8.50 заметил такую вещь - в самом начале работы программы непонятно для меня почему, но значение аккумулятора WREG (SFR NAME) изменяется с 00, на FF, и так далее на уменьшение, хотя по тексту программы аккумулятор не используется. Посмотрите на скрины! ответе, это нормально? Скрины выкладываю в порядке исполнения команд.
Неа, ненормально. бред какой-то. такое ощущение, что отладчик совсем что-то другое показывает. Поглядел ваш код в мплабе.
0. Первое правило(и на асме и на си): вы должны четко понимать, почему компилятор выдал предупреждение (warning). Норма- полное отсутствие варнингов на программе любой длины. В исключительных случаях они должны быть задокументированы (Типа "тут компилятор ругается на строку номер хх, но это нормально и вызваноо тем-то и тем-то")
1. варнинги такие, что их впору ошибками назвать:
Код
Warning[202] C:\MY_JOB\TEST\PIC\TURBO.ASM 73 : Argument out of range. Least significant bits used.
Warning[202] C:\MY_JOB\TEST\PIC\TURBO.ASM 75 : Argument out of range. Least significant bits used.
Warning[202] C:\MY_JOB\TEST\PIC\TURBO.ASM 89 : Argument out of range. Least significant bits used.
Warning[202] C:\MY_JOB\TEST\PIC\TURBO.ASM 91 : Argument out of range. Least significant bits used.
Warning[202] C:\MY_JOB\TEST\PIC\TURBO.ASM 108 : Argument out of range. Least significant bits used.
Warning[202] C:\MY_JOB\TEST\PIC\TURBO.ASM 113 : Argument out of range. Least significant bits used.
Warning[202] C:\MY_JOB\TEST\PIC\TURBO.ASM 115 : Argument out of range. Least significant bits used.
Причина везде одинакова:
Код
zum0 movlw 255h ;Записать константу 255 в аккумулятор (w).
если вы написали "h", то это 16-ричное число, а если хотите десятичное то советую .255 писать. А из записи 255h компилятор успешно загрузил 55h.
Точка перед числом укажет на ее десятичность. Кстати не советую на формат "по умолчанию" надеяться, лучше все-таки все держать под контролем.
2. советую смотреть отладку в окне View->Disassembly Listing. Там слева показано, во что именно ваш код был скомпилирован, подобные вышеприведенным ошибкам сразу видны становяться, например:
Код
013 3054 MOVLW 0x54 75: zum1 movlw 254h ;Записать константу 254 в аккумулятор (w).
пофиксил ваш код на эти ошибки, заодно и предположил что остальные константы тоже были в девичестве десятичными, из тож пофиксил.
3. Если применяете двоичную константу, то ее можно прямо в двоичном виде писать, вам удобнее а компилятору все равно. то есть строку
Код
movlw 192h;Формирование на выводах RB5, RB6 логической 1. Записать константу 192 (1100000) в аккумулятор (w).
предлагаю изменить на
Код
movlw b'01100000'
4. У меня ничего похожего на ваше с аккумулятором не происходит. Ведет он себя как и должно хорошо воспитанному аккумулятору, меняется только согласно указаниям программы. Прикрепляю архив с проектом, может найдете где у вас что не так.(использовал MPLAB IDE 8.63)
Нажмите для просмотра прикрепленного файлаКонфиг у вас некорректный. Тут можно быстро посмотреть в мплабе: Configure-> Configuration bits.
Я вижу что "WDT disabled", а судя по тексту в коде вы его хотели включить.
Про конфиг можете в документации на контроллер посмотреть, в конце обычно есть посвященный этому раздел. Не найдете- спрашивайте.
P.S. Ну а может теперь работает? я дальше не смотрел..............