МИКРОКОНТРОЛЛЕР AVR - МИКРОКОНТРОЛЛЕР AVR

Прерывания

Реализация прерываний в AVR довольно проста, хотя вы должны тщательно спланировать их выполнение. Вы можете написать обработчик прерываний всего из нескольких команд или обрабатывать прерывания в очень сложных приложениях.

Данный пример является обработчиком прерываний таймера для микроконтроллера AVR 1200, который состоит всего из трех команд.

Tmrlnt ; установить бит при переполнении таймера

cbi TOV0, T1FR

set ; установить в 1 флаг Т в регистре SREG

reti

Здесь предполагается, что флаг Т служит для индикации того, что произошло прерывание, и этот флаг должен опрашиваться в основной программе. На самом деле, использование при обработке прерываний команд, не изменяющих содержимое регистра SREG, является предметом особой заботы, так как, если они будут менять значения флагов, то информация о состоянии процессора будет потеряна для основной программы. Об этом не надо заботиться при использовании микроконтроллеров семейства 68НС05, потому что они сохраняют содержимое регистра состояния CCR в процессе обработки запроса прерывания, так что изменение CCR в обработчике не влияет на работу основной программы. В микроконтроллерах 8051 об этом не надо беспокоиться, так как их регистр состояния PSW не содержит флага нуля.

Go to Top