Некоторый фон. Я использую MPLABx с PicKit2 для программирования различных типов фотографий. На данный момент это 16F887. Я стараюсь придерживаться цепочки инструментов Hi-Tech PICC Lite, но я все больше и больше недоволен тем, как собираются некоторые вещи. Операции, которые должны быть относительно быстрыми (учитывая цикл инструкций 500 нс при 8 МГц), требуют до 20 мсек. Поэтому я начал вставлять свой собственный код ASM, чтобы справиться с ним.
Однако у меня возникают трудности с пониманием карты памяти, представленной в таблице на стр. 20.
Память программы начинается в 0005h. Однако на странице 23 показаны адреса файлов регистров специального назначения, например, порта А. Адрес порта A отображается как «05h».
Я запутался, как различать ячейку памяти 0005h и регистр специального назначения, расположенный в 05h. Как я могу ссылаться на регистры специального назначения?
Я выполнил довольно обширное программирование на ассемблере для старых чипов HC11, но это мое первое занятие по кодированию ассемблера PIC. Любая помощь здесь будет оценена.
Что сказал Дейв, но я также хочу отметить, что память программы начинается с 0, а не с 5. При перезагрузке процессор устанавливает ПК на 0 и начинает работать. В случае прерывания процессор эффективно вызывает вызов в местоположение 4 и отключает бит разрешения глобального прерывания. Расположение в памяти программ 5 не является особенным, кроме того, что это будет вторая инструкция подпрограммы прерывания, если у вас есть подпрограмма прерывания.
источник