Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

316 Микроконтроллеры AVR от азов программирования... Команда sbic в строке 89 проверяет значение седьмого бита регистра PINB. Если бит равен нулю (контакты тумблера замкнуты), то строка 90 не выполняется, и управление переходит к строке 91, где начинается проце ­ дура записи в EEPROM. Если значение разряда равно единице (контакты тумблера не замкнуты), оператор условного перехода в строке 90 пере ­ дает управление по метке ш9 на начало процедуры сравнения. Процедура записи ключевой комбинации в EEPROM Эта процедура занимает строки 91 — 101. К началу этой процедуры кодовая комбинация уже находится в буфере ОЗУ. Длина комбинации содержится в переменной count. Нам остается только записать все это в EEPROM. В строках 91 — 93 в EEPROM записывается длина комбинации. В каче ­ стве адреса для записи используется метка klen. Эта метка указывает на ячейку, которая специально зарезервирована для этой цели (см. строку 20). Для записи байта в EEPROM используется подпрограмма eewr. В строке 91 длина комбинации помещается в регистр data. В строке 92 адрес помещается в регистр addre. Затем вызывается подпрограмма eewr (строка 93). В строках 97 — 100 расположен цикл записи всех байтов ключевой комбинации. Перед началом цикла в регистр addre записывается адрес первой ячейки буфера-приемника, находящегося в EEPROM (строка 94). А в регистровую пару Z записывается адрес первой ячейки буфера- источника, находящегося в ОЗУ (строки 95,96). В процессе записи ключевой комбинации регистр count используется для подсчета записанных байтов. В начале, как уже говорилось, он содер ­ жит длину комбинации. При записи каждого байта содержимое count уменьшается. Когда оно окажется равным нулю, цикл записи прекраща ­ ется. Цикл начинается с того, что очередной байт ключевой комбинации, находящейся в ОЗУ, помещается в регистр data (строка 97). Напомню, что адрес уже находится в регистре addre. В строке 98 вызывается под ­ программа, которая записывает байт в EEPROM. Та же подпрограмма увеличивает значение addre на единицу. В строке 99 уменьшается зна ­ чение регистра count. Проверку содержимого count на равенство нулю производит опе ­ ратор brne в строке 100. Если содержимое не равно нулю, то оператор передает управление на метку m 8, и цикл записи ключевой комбинации продолжается. В противном случае цикл завершается, и управление переходит к строке 101. То есть к процедуре открывания замка.

RkJQdWJsaXNoZXIy MTExODQxMg==