blindman, кхе-кхе, Андрей, тут так всего много. Попробую всё прям в виде программы изложить
$regfile = "m8def.dat"
$crystal = 8000000
.....
Config Adc = Free , Prescaler = 128 , Reference = Avcc 'тут были первые мои грабли. С прерываниями прога висела. Ценой бессонной ночи было придумано сделать АЦП помедленнее. Тогда всё заработало
'Очень быстрый АЦП тут не нужен. Нужно, чтоб основное тело программы крутилось максимально быстро.
Enable Adc 'Разрешить АЦП
Start Adc
Adcsra.6 = 1
.....
On Adc Adc_isr
Let Admux = Admux And &B11111100 'включаю нулевой канальчик для начала (а может только думаю, что включаю, а он сам по себе уже включен)
.....
Dim _adc As Word
Dim _adcl As Byte At _adc + 0 Overlay 'чей-то гениальный подход. Слямзил внаглую. Сам бы никогда не додумался
Dim _adch As Byte At _adc + 1 Overlay
.....
Do
.....
Loop
.....
Adc_isr: 'прерывание от ацп
_adcl = Adcl 'очень хитрый ход с оверлейной переменной я стырил с какого-то форума
_adch = Adch 'сам бы вжисть до такого не додумался. Я и слов-то таких не слыхал ни разу
Let Nomerr = Nomer + 1
Let A(nomerr) = _adc 'массив А(1) А(2) - это переменные, куда надо записывать данные замеров с каналов 0 и 1 АЦП
Let Nomer = Nomer + 1 ' отчего-то нумерация элементов массива с нуля у меня не пошла, отсюда и дурацкие лишние переменные
If Nomer > 1 Then Let Nomer = 0
Let Admux = Admux And &B11111100 'вот без этих двух строчек переключения каналов АЦП всё прекрасно работает
Let Admux = Admux And Nomer 'но без них - неинтересно, ибо только один канал меряется
Return
и добавил...зы Я вот ещё думаю, а нет ли в строках типа Let Admux = Admux And &B11111100 какой ошибки синтаксической?