Недавно начал работать с PIC-ми, на мой взгляд такое рваное
распределение памяти неудобно для использования. Решил выстроить
память в непрерывные(линейные) адреса 0x00-0xff следующим образом:
0x60-0x6f банк0 --> 0x00-0x0f
0x20-0x6f банк1 --> 0x10-0x5f
0x20-0x6f банк2 --> 0x60-0xaf
0x20-0x6f банк3 --> 0xb0-0xff
Работаю MPLAB IDE. Пример для PIC16F88.
Чтение из линейного адреса 0xb2 выглядит так:
movlw 0xb2
call read_routine
на выходе в W прочитанный байт
Запись 0xaa в линейный адрес 0Xb2:
banksel 0
movlw 0xaa ;данные, которые
movwf WRITE_BYTE ;надо записать
movlw 0xb2
call write_routine
Копирование из одного участка памяти в другой(непересекающийся)
использую макрос
COPY_MEM read_address,write_address,count
read_address откуда
write_address куда
count сколько байтов
В моем проекте прописывается память своими адресами.
Если закоментарить строку goto Init_0015 то можно
проверить копирование памяти.
Нажмите для просмотра прикрепленного файла