Флаг направления d не найден в программировании PIC

Как новичок в программировании PIC, я пытаюсь понять существующий и работающий код. В этом коде я нахожу.

movf    c10m,w          ;Read 10th of min count
movwf   bcd_in          ;Set counter code here

Где найти флаг назначения d?

Я понимаю, что данные c10m попадают в w с movf. Поведение movf зависит от флага назначения d. Но не могу найти где флаг и как манипулировать.


pic
person Decapod    schedule 26.10.2016    source источник


Ответы (1)


Бит направления обычно определяется вторым операндом. Это описано, но не очень ясно в руководстве к микросхеме (в нем используется FSR, который является регистром направления). Инструкция означает перемещение файла содержимого файлового регистра. Если d=0, пунктом назначения является W; если d=1, то это сам регистр.

Формат команды такой

MOVF file,d

где d=0 или 1, но большинство ассемблеров принимают W вместо d. Обратите внимание, что он не проверяет содержимое W. Это не так сложно. Неважно, что находится в W, оно будет перезаписано.

               ; d Before      After
               ;   W  TMR0 Z   W TMR0 Z
MOVF TMR0,W    ; 0 ??  25  ?   25 25  0
MOVF TMR0,W    ; 0 ??  00  ?   00 00  1
MOVF TMR0,0    ; 0 ??  25  ?   25 25  0  same as MOVF TMR0,W
MOVF TMR0,1    ; 1 ??  25  ?   ?? 25  0
MOVF TMR0,1    ; 1 ??  00  ?   ?? 00  1

Перемещение файлового регистра в себя приведет к установке нулевого флага, если значение равно нулю.

person cup    schedule 26.10.2016