JP <адрес>
При выполнении команды переноса, если результат операции положительный, то С = 1
btfsc STATUS, C
goto Metka
Вызов подпрограммы, если 0:
CZ <адрес>
btfsc STATUS, Z
call Metka
Вызов подпрограммы, если не 0:
RNZ
btfss STATUS, Z
return.
Недостатки и достоинства условных команд Microchip средней серии
«-»: отсутствие полноценных условных переходов, вызовов и возвратов
«+»: 1. можем сделать условной любую команду
2. в качестве команды может использоваться как байт регистра признаков, так и любой бит любого регистра
Пути упрощения альтернатив
1.)
btfss STATUS, Z
goto Metka
2.) использование микрокоманд. Любую последовательность команд можно оформить в виде макроса и присвоить ему свое уникальное имя, и дальше использовать как команду Ассемблера.
incfsr2 macro
inc f FSR, F
inc f FSR, F
end m.
inc f2 macro REG
inc f REG, F
inc f REG, F
end m.
Организация памяти данных (ПД)
Адресное пространство памяти данных составляет 512 байт. Шина адреса ПД имеет разрядность 9 байт. Вся ПД разделена на четыре банка – 0, 1, 2, 3. Адреса с 0 по 1F в каждом банке заняты регистрами специальных функций. Наиболее важные регистры, например, STATUS, FSR, продублированы в нескольких или во всех банках. Адреса с 20 по 7F в каждом банке – регистры общего назначения. В некоторых микроконтроллерах регистры с 70 по 7F являются общими для всех банков. При прямой адресации из кода команды используется только 7 бит адреса, т. е. с помощью одной адресации можно работать только с одним банком. Для выбора банка используется биты RP0 и RP1 регистра STATUS.
go pos macro adres
btfsc STATUS, C
goto adres
end m.
9-ти битное двоичное число, состоящее из битов RP1 и RP0 регистра STATUS, и семь младших бит адреса из кода команды, можно рассматривать как отдельный физический адрес. При косвенной адресации регистра FSR извлекается 8 бит адреса. Недостающий девятый бит IRP извлекается из регистра STATUS.
Переместить 6F в регистр 120
mov f 6F, W
mov wf 120
bcf STATUS, RP0
bcf STATUS, RP1
mov f 6F, W
bcf STATUS, RP0
bsf STATUS, RP1
mov wf 120
bank 0 macro
bcf STATUS, RP0
bcf STATUS, RP1
end m
bank 1 macro
bsf STATUS, RP0
bcf STATUS, RP1
end m
bank 2 macro
bcf STATUS, RP0
bsf STATUS, RP1
end m
bank 3 macro
bsf STATUS, RP0
bsf STATUS, RP1
end m
bank 0 mov f 6F, W
bank 2 mov wf 120
При пересылках из банка в банк, чтобы не тратить ресурсы на постоянные переключения, можно использовать разные способы адресации:
bcf STATUS, RP0
bcf STATUS, RP1
bsf STATUS, IRP
mov lw 120
mov wf FSR
mov f 6F, W
mov wf INDF
inc f FSR, F
mov f 70, W
mov wf INDF
inc f FSR, F
…
Особенности организации памяти данных в микроконтроллерах расширенного семейства
1. памяти стало больше
2. банки остались по 256 байт
3. биты переключения банков вынесли в отдельный регистр BSR, и ввели специальную команду lbsr
4. косвенная адресация работает со всей памятью, без деления ее на банки. Указателей банков стало три: FSR0, FSR1, FSR2
5. Появилась команда пересылки mov ff <адрес 1>, <адрес 2>, которая не использует деление на банки
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.