Часть кода отвечающая за работу АЦП. Результат работы АЦП сравнивается с Umin.
.equ Umin =500 ;миниммальное пороговое значение напряжения ;============== Ацп ========== ;Задаём кол-во измерений ldi r16,0b11100110 ;включение Ацп и Timer/Counter1 sts PRR,r16 ;PRR ldi r18,0b01100010 ;выбираем 2-ой канал sts ADMUX,r16 ;ADMUX ldi r16,0b10000111 ;настройка Ацп sts ADCSRA,r16 ;ADCSRA ldi r16,0b00000100 sts DIDR0,r16 ;Сделаем 1-ое преобразование (его учитывать не надо, т.к. оно ложное)
ldi r16,0b11000111 ;сделаем 1-ое измерение sts ADCSRA,r16 ;уст бит "старт преобразования" ;sbi ADCSRA,ADSC WaitADC1: ;ждём пока выполнится преобразование lds r16,ADCSRA sbrs r16,4 rjmp WaitADC1 // sts ADCSRA,r16 lds ZH,ADCH lds ZL,ADCL ;здесь отсчёт уже сделан ldi r16,0b11000111 ;сделаем 2-ое измерение sts ADCSRA,r16 ;уст бит "старт преобразования" ;sbi ADCSRA,ADSC WaitADC2: ;ждём пока выполнится преобразование lds r16,ADCSRA sbrs r16,4 rjmp WaitADC2 // sts ADCSRA,r16 lds ZH,ADCH lds ZL,ADCL ;=================== Сравнение напряжений ======================= ;Установка Umin (YH YL) ;Сравнение напряжений ZH,ZL (U) с Umin cpi ZH, Umin brlo LowPower
|