В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Обзоры по типам > Микроконтроллеры > MCS-51 > Команды
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Команда DJNZ <байт>, <смещение>

Команда "декремент и переход, если не равно нулю" выполняет вычитание "1" из указанной ячейки и осуществляет ветвление по вычисляемому адресу, если результат не равен нулю. Начальное значение 00Н перейдет в 0FFH. Адрес перехода (ветвления) вычисляется сложением значения смещения (со знаком), указанного в последнем байте команды, с содержимым счетчика команд, увеличенным на длину команды DJNZ. На флаги эта команда не влияет и допускает следующие режимы адресации:

  1. регистровый
  2. прямой

  1. Ассемблер: DJNZ Rn, <метка> ; где n=0-7
    Код:
    1 1 0 1 1 rrr
    re18
    Время: 2 циклa
    Алгоритм: (PC) : = (PC)+2,
    (Rn) : = (Rn)-1,
    если ((Rn)>0 или (Rn)<0), то (PC):=(PC)+<re18>
    Пример:
                        ;(R2)=08H, (P1)=FFH (11111111B)
    LAB4:  CPL  P1.7
           DJNZ R2,LAB4 ;(R2)={07-00}
    ;Эта последовательность команд переключает Р1.7
    ;восемь раз и приводит к появлению четырех импульсов
    ;на выводе БИС, соответствующем биту Р1.7
               



  2. Ассемблер: DJNZ <direct>, <метка>
    Код:
    1 1 0 1 0 1 0 1
    direct address
    re18
    Время: 2 циклa
    Алгоритм: (PC) : = (PC)+3,
    (direct) : = (direct)-1,
    если ((вшкусе)>0 или (direct)<0), то
    (PC) : = (PC)+<re18>
    Пример:
                          ;(ОЗУ[40])=01H, (ОЗУ[50])=80H,
                          ;(ОЗУ[60])=25H
          DJNZ  40H, LAB1 ;(ОЗУ[40]):=00H
          DJNZ  50H, LAB2 ;(ОЗУ[50]):=7FH
          DJNZ  60H, LAB3 ;(ОЗУ[60]):=25H
          ...
    LAB1: CLR   A
          ...
    LAB2: DEC   R1        ;осуществился переход на
                          ;метку LAB2
               

Примечание. Если команда DJNZ используется для изменения выхода порта, значение, используемое как операнд, считывается из "защелки" порта, а не с выводов БИС.