А что тебе даст окно CPU program Memory? Там просто записаны коды, хранящиеся в ячейках памяти программ. Причем, чтобы их правильно прочитать, нужно перевести в формат представления Word (LSB First). И тогда ты сможешь расшифровать команды, записанные в ячейках. Только адрес ячейки нужно делить на 2, поскольку у этого ПИКа память программ 14 бит, 2 байта в одной ячейке. Пустая, незаписанная ячейка будет отображена кодом 3FFF.
Открываем даташит контроллера, и в разделе INSTRUCTION SET читаем двоичный код операции и ее мнемоническое обозначение и операнды.
Вот, на скрине, в ячейке с адресом 0х0000 записано значение 0х280A, что соответствует инструкции GOTO k, а операнд k равен адресу 0х000А, что и подтверждается в окошке CPU Source Code.
В CPU Source Code можно тоже включить "Display Оpcode".
И кстати, глядя на коды операций в строке, можно увидеть, что делает тот макрос banksel EEADR.
Коды 0x1283 и 0х1703 соответствуют инструкциям bcf STATUS, RP0 и bsf STATUS, RP1.
Предупреждение
no source line at pc address указывает о том, что по указанному адресу памяти программ нет кода. Оно и видно, указан адрес панями программ 0x03A2, а затем сразу 0x03A4. то есть, 931 ячейка не заполнена.
Счетчик команд контроллера просто переходит на следующую ячейку и ничего криминального не происходит. Но отладчик предупреждает все равно.
Чтобы ошибки не было, можно между адресами вставить инструкцию
nop, ее код - 0х0000.
ЗЫ. Если все слишком просто, тогда жисть скучна
![Весело](images/smilies/icon_laugh.gif)
Ваапсчета нифига сложнава
![Улыбка](images/smilies/icon_smile.gif)
Достаточно было просто увидеть, что адрес 0x03A3 памяти программ отсутствует. Об этом и сказано в предупреждении. МПЛАБ то же самое бы сказал.