Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
298 Часть 111. Практическое программирование микроконтроллеров А VR Программа, отвечающая за функцию слежения по такой схеме, очень проста. В ATmega8 нужный вектор носит название ANA_сомР ( 1 7-й по счету), и его необхо димо сначала задействовать, затем в секции Reset сконфигурировать компаратор и установить светодиод в соответствии с начальным состоянием компаратора (лис тинг 1 1 . 1 ) . ; ===== прерывания rjmp Reset ; вектор сброса . org ACiaddr ; ACiaddr (AТmega8=$ 0 1 0 ) прерывание компаратора rjmp ANA_COMP . org INT_VECTORS_S I ZE ; начинаем с адреса после прерываний Reset : ldi temp , low ( RAМEND ) ; указатель стека out SPL, temp ldi temp , high ( RAМEND ) out SPH , temp ldi temp , ObO O O O O O O l ; РВО - Output out DDRВ , temp ldi temp , ( l<<ACIE ) 1 ( l<<ACBG ) ; разр . прерывания компаратора ; и подключение внутреннего ИОН out ACSR, temp sei ; устанавливаем РВО в начальное состояние : Setb 1 : sbis ACSR, ACO ; если бит АСО =1 то сброс LED rjmp Setb_l ; иначе на установку LED cbi PortB , O ; сбрасываем LED rjmp Gcykle sbi PortB , 0 ; включаем LED Gcykle : rjmp Gcykle Затем вставим очень простой обработчик прерывания компаратора, в котором мы только включаем или выключаем светодиод (листинг 1 1 .2) . ANA_COMP : ; прерывание компаратора sbi s ACSR , ACO ; если бит АСО =1 то сброс LED r j mp СОМР_ О ; иначе на установку LED cbi PortB , O ; сбрасываем LED reti ; на выход
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==