Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: что это за команды
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
стас
вот тут изучаю чужую программу, и наткнулся на команды "BZ" и "BNZ" которых нет в списке команд, как же понимать эти строчки?Нажмите для просмотра прикрепленного файла
; 4. СРАВНЕНИЕ ЗНАЧЕНИЙ РЕГИСТРОВ.
;================================
COMP
BTFSS PORTA,1 ;ЕСЛИ ВЫХОД ВКЛЮЧЕН,
GOTO COMWU ;ПОЙДЕМ ВЫКЛЮЧАТЬ.
MOVFW HOU1 ;СРАВНИМ ЗНАЧЕНИЕ ЧАСОВ
SUBLW HWK ;СО ЗНАЧЕНИЕМ ВРЕМЕНИ ВКЛЮЧЕНИЯ.
BNZ COM ;ЕСЛИ ОНИ НЕ РАВНЫ, ЗАЦИКЛИВАЕМСЯ.
MOVFW MIN1 ;СРАВНИМ ЗНАЧЕНИЕ МИНУТ
SUBLW MWK ;СО ЗНАЧЕНИЕМ ВРЕМЕНИ ВКЛЮЧЕНИЯ.
BZ COMW ;ЕСЛИ ОНИ РАВНЫ, ВКЛЮЧАЕМ ВЫХОД.
COM
MrYuran
Цитата
Команды BZ, BNZ и ряд других являются псевдокомандами,
встроенными в MPLAB, их действие и во что они транслируются
можно посмотреть в MPLAB:
Help/MPASM Help/Appendices/Appendix B. Quick Reference/B.6/Special Instruction Mnemonics
(в конце)

Успехов!

http://www.microchip.ru/phorum/read.php?f=...i=858&t=858

Вообще-то, неплохо было бы сразу указать, какой процессор (а то оказался не по умолчанию), чтобы не приходилось у гугля спрашивать.
А во-вторых, неплохо бы сначала у гугля спросить...
стас
в начале программы нигде не фигурируют такие вещи, я конечно попытаюсь разобраться

#INCLUDE P16F84A.INC
__CONFIG 3FF0H
;======================================
; ИСПОЛЬЗУЕТСЯ КВАРЦ ЧАСТОТОЙ 32,768 KГЦ.
;======================================
HWK EQU 06H ;ВКЛЮЧЕНИЕ ЧЕРЕЗ 6 ЧАСОВ
MWK EQU 00H ;ПОСЛЕ НАЖАТИЯ КНОПКИ.
MWUK EQU 1EH ;ВЫКЛЮЧЕНИЕ ЧЕРЕЗ 30 МИНУТ.
;================
; СПЕЦ. РЕГИСТРЫ.
;================
INDF EQU 00H ;ДОСТУП К ПАМЯТИ ЧЕРЕЗ FSR.
TIMER0 EQU 01H ;TMR0.
OPTIONR EQU 81H ;OPTION (RP0=1).
PC EQU 02H ;СЧЕТЧИК КОМАНД.
STATUS EQU 03H ;РЕГИСТР СОСТОЯНИЯ АЛУ.
FSR EQU 04H ;РЕГИСТР КОСВЕННОЙ АДРЕСАЦИИ.
PORTA EQU 05H ;ПОРТ А ВВОДА/ВЫВОДА.
PORTB EQU 06H ;ПОРТ В ВВОДА/ВЫВОДА.
TRISA EQU 85H ;НАПРАВЛЕНИЯ ДАННЫХ ПОРТА А.
TRISB EQU 86H ;НАПРАВЛЕНИЯ ДАННЫХ ПОРТА В.
INTCON EQU 0BH ;РЕГИСТР ФЛАГОВ ПРЕРЫВАНИЙ.
;=============================================
; ОПРЕДЕЛЕНИЕ ВХОДОВ.
;=============================================
; RB0 > ВХОД КНОПКИ.
; RA0 > ВЫХОД ПРЯМОЙ (1).
; RA1 > ВЫХОД ИНВЕРСНЫЙ (0).
;==================================
; ОПРЕДЕЛЕНИЕ РЕГИСТРОВ УСТАНОВКИ.
;==================================
SEC1 EQU 11H ;СЧЕТЧИК СЕКУНД.
MIN1 EQU 12H ;СЧЕТЧИК МИНУТ.
HOU1 EQU 13H ;СЧЕТЧИК ЧАСОВ.
;====================
; ВРЕМЕННЫЕ РЕГИСТРЫ.
;====================
W_TEMP EQU 20H ;БАЙТ СОХРАНЕНИЯ РЕГИСТРА W ПРИ ПРЕРЫВАНИИ.
STATUS_TEMP EQU 21H ;БАЙТ СОХРАНЕНИЯ РЕГИСТРА STATUS ПРИ ПРЕРЫВАНИИ.
FSR_TEMP EQU 22H ;ВРЕМЕННЫЙ ДЛЯ FSR.
;=====================
; 1. ПУСК.
;=====================
ORG 0
GOTO INIT
ORG 4
GOTO CONST
Lexy_one
Эти команды похоже означают
BZ = Branch if Zero (Переход если ноль)
BNZ = Branch if Not Zero (Переход если не ноль)

Но для точной идентификации необходимо знать хотябы какой процессор...

Или посмотреть по коду - может они не станартные и гдето переопределены, типа:
БлаБлаБла EQU BNZ;

rx3apf
Это псевдокоманды самого ассемблера (mpasm). Переход по условию "ноль" (bz) или "не ноль" (bnz), каждая расширяется в две инструкции, условный пропуск и переход. Смотреть описание mpasm.
стас
вообще-то есть такие команды: DECFSZ BTFSS BTFSC INCFSZ, по крайней мере они в книжках фигурируют, а вот про bz и bnz ни слова, может ещё есть какие-то такие "секретные" команды?
_Pasha
Цитата(стас @ Jul 29 2011, 21:31) *
вообще-то есть такие команды: DECFSZ BTFSS BTFSC INCFSZ, по крайней мере они в книжках фигурируют, а вот про bz и bnz ни слова, может ещё есть какие-то такие "секретные" команды?

bz, bnz это из системы команд pic18, в 16-х ее и в помине нет. Следовательно, для того,чтобы эта баранина работала, в тексте должны быть определены макросы
Код
bz macro label
btfsc STATUS,Z
goto label
endm

bnz macro label
btfss STATUS,Z
goto label
endm
1113
Это не команды, а сокращённые написания. Микрочип ассемблер их поддерживает. Где описываются - не знаю).
ar__systems
Цитата(1113 @ Jul 30 2011, 02:56) *
Это не команды, а сокращённые написания. Микрочип ассемблер их поддерживает. Где описываются - не знаю).

Поддерживает. Но эти команды есть только в PIC18.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.