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

Шаг 5. Переходим непосредственно к разработке устройств и программ 339 151 ldi temp, 0x40 , Разрешаем прерывание по совпадению 152 rjmp w2 153 154 w1 : ldi temp, 0x80 ; Разрешаем прерывания по переполнению 155 w2- out TIMSK,temp ; Записываем маску 156 clr temp 157 out TCNT1H,temp , Обнуляем таймер 158 out TCNT1L,temp 159 ldi flz, 0 , Сбрасываем флаг задержки 160 sei , Разрешаем прерывания 161 cpi data, 2 , Если это задержка 2-го типа 162 breq w4 , Переходим к концу подпрограммы 163 w3 cpi flz, 1 , Ожидание окончания задержки 164 brne w3 165 / cli , Запрещаем прерывания Хе w4: ret ; Завершаем подпрограмму Запись байта в ячейку EEPR0M 167 eewr: cli , Запрещаем прерывания 168 sbic EECR, EEWE ; Проверяем готовность EEPROM 169 rjmp eewr ; Если не готов ждем 170 out EEAR, add re , Записываем адрес в регистр адреса 171 out EEDR, data ; Записываем данные в регистр данных 172 sbi EECR, EEMWE ; Устанавливаем бит разрешения записи 173 sbi EECR, EEWE , Устанавливаем бит записи 174 inc add re , Увеличиваем адрес в EEPROM 175 ret ; Выход из подпрограммы --------------------------------------------------------- Чтение байта из ячейки EEPROM 176 eerd. cli 177 sbic EECR, EEWE 178 rjmp eerd 179 out EEAR, add re 180 sbi EECR, EERE 181 in data, EEDR 182 inc add re 183 ret , Запрещаем прерывания , Проверяем готовность EEPROM ; Если не готов ждем ; Устанавливаем бит инициализации чтения ; Устанавливаем бит инициализации чтения , Помещаем прочитанный байт в data ; Увеличиваем адрес в EEPROM , Выход из подпрограммы Процедура обработки прерываний --------------------------------------------------- Прерывание по совпадению 184 ргорг: ldi flz,1 185 reti Установка флага задержки Завершаем обработку прерывания ,# # ; # Мелодичный звонок # ;# И kk1: ; --------------------------------------------------- Инициализация таймера Т1 186 ldi temp, 0x09 , Включаем режим СТС 187 out TCCR1B, temp 188 km1. ldi temp, 0x00 , Выключаем звук 189 out TCCR1A, temp

RkJQdWJsaXNoZXIy MTExODQxMg==