Как новичок в программировании PIC, я пытаюсь понять существующий и работающий код. В этом коде я нахожу.
movf c10m,w ;Read 10th of min count
movwf bcd_in ;Set counter code here
Где найти флаг назначения d?
Я понимаю, что данные c10m попадают в w с movf. Поведение movf зависит от флага назначения d. Но не могу найти где флаг и как манипулировать.
Ответ 1 · cup
Бит направления обычно определяется вторым операндом. Это описано, но не очень ясно в руководстве к микросхеме (в нем используется 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
Перемещение файлового регистра в себя приведет к установке нулевого флага, если значение равно нулю.