Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
Шаг 5. Переходим непосредственно к разработке устройств и программ 313 В строках 159,160 расположен цикл проверки готовности EEPROM. Если бит EEWE установлен, это значит, что предыдущая операция записи еще не окончена. Поэтому в строке 159 проверяется значение этого бита. Пока значение бита равно единице, выполняется команда безусловного перехода в строке 160, и проверка выполняется снова и снова. Когда значение бита окажется равным нулю, строка 160 будет пропущена (сработает команда sbic в строке 159), а цикл ожида ния прервется. В строке 161 происходит запись адреса из регистра addre в регистр EEAR. В строке 162 в регистр EEDR записывается байт данных из регистра data. В строке 163 устанавливается бит разрешения записи. В строке 164 — бит записи. После установки этого бита процесс записи будет запущен. Запись будет идти своим чередом, а программа может продолжать свою работу. Главное — не менять содержимое регистров EEDR и EEAR, пока процесс записи не закончится. В строке 165 происходит приращение содержимого регистра addre. И, наконец, в строке 166 подпрограмма завершается. Команда в строке 165 не относится к алгоритму записи в EEPROM. Но ее примене ние позволяет использовать подпрограмму eewr для последовательной записи цепочки байтов, в чем мы и убедимся дальше. Порядок чтения байта гораздо проще. Достаточно в регистр EEAR записать адрес ячейки, содержимое которой нужно прочитать, а затем установить бит чтения (EERE). Прочитанный байт автоматически поме щается в регистр EEDR. Подпрограмма чтения байта из EEPROM называется eerd и зани мает строки 167 — 174. Адрес ячейки, предназначенной для чтения, пере дается в подпрограмму через регистр addre. Прочитанный байт данных подпрограмма возвращает в регистре data. Начинается подпрограмма чтения, как и подпрограмма записи, с запрета прерываний (строка 167). Так как чтению может предшествовать запись, прежде чем изменять значения регистра EEAR, нужно проверить, закончился ли процесс записи. Поэтому в строках 168, 169 мы видим уже знакомый нам цикл ожидания готовности EEPROM. В строке 170 в регистр EEAR записыва ется содержимое регистра addre. В строке 171 устанавливается бит чтения (EERE). Как только этот бит будет установлен, моментально происходит процесс чтения, и прочитан ный байт данных появляется в регистре EEDR. В строке 172 этот байт помещается в регистр data. В строке 173 происходит приращение реги стра адреса addre. Смысл этого приращения такой же, как и в предыду щем случае. Только теперь подобный прием позволяет читать из EEPROM цепочку байтов. В строке 174 подпрограмма eewr завершается.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==