Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
338 Микроконтроллеры AVR от азов программирования... 109 rjmp mil ; К процедуре открывания замка ------------------------------------------------------- Процедура проверки кода 110 т9 ‘ ldi addre, klen ; Адрес хранения длины кода 111 rcall ее rd ; Чтение длины кода из EEPROM 112 ср count, data ; Сравнение с новым значением 113 brne m13 ; Если не равны, к началу 114 ldi addre, bufe , В YL начало буфера в EEPROM 115 ldi ZH, high(bufr) , В регистровую пару Z записываем 116 ldi ZL, low(bufr) ; адрес начала буфера в ОЗУ 117 тЮ: rcall ее rd ; Читаем очередной байт из EEPROM 118 Id temp, Z+ ; Читаем очередной байт из ОЗУ 119 cp data, temp ; Сравниваем два байта разных кодов 120 brne m13 , Если не равны, переходим к началу 121 dec count ; Уменьшаем содержимое счетчика байтов 122 brne m10 ; Если не конец, продолжаем проверку , ------ --------------------------- Процедура открывания замка 123 mil . sbi PORTB, 4 , Команда "Открыть замок" 124 ldi data, 3 ; Вызываем задержку третьего типа 125 rcall wait , 126 cbi PORTS, 4 ; Команда "Закрыть замок" 127 т13: rjmp main ; Перейти к началу Вспомогательные процедуры --------------------------------------------------------- Ввод и проверка 2 байтов с клавиатуры 128 incod push count 129 ldi XL, 0 ; Обнуление регистровой пары X 130 ldi XH,0 131 id ' ldi count, kandr ; Константа антидребезга 132 mov drebL, XL ; Старое значение младший байт 133 mov drebH, XH ; Старое значение старший байт 134 ic2. in XL,PIND , Вводим код (младший байт) 135 cbr XL, 0x80 ; Накладываем маску 136 in XH,PINB ; Вводим код (старший байт) 137 cbr XH,0xF8 , Накладываем маску 138 ісЗ: cp XL, drebL ; Сверяем младший байт 139 brne ic1 ; Если не равен, начинаем с начала 140 cp XH, drebH , Сверяем старший байт 141 brne ic1 ; Если не равен, начинаем с начала 142 іс4: dec count ; Уменьшаем счетчик антидребезга 143 brne ic2 ; Если еще не конец, продолжаем 144 cp XL, codL ; Сравнение с временным буфером 145 brne ic5 ; Если не равно, заканчиваем сравнение 146 cp XL, codH ; Сравниваем старшие байты 147 іс5 ’ pop count 148 ret , -------- Подпрограмма задержки 149 wait: cpi data, 1 ; Проверяем код задержки 150 brne w1
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==