Народ, еще такой вопросик:а как ПОСЛЕДОВАТЕЛЬНЫЙ переход по каналам АЦП организовать (т.е чтоб он не с любого на прерывание реагировал, а последовательно каждый канал опрашивал)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено ----- 15 ноября 2003 г. 08:17

Для одного канала-там всё понятно было, но мне понадобилось
допустим с двух( вообще, с 6, но пока остановимся на 2-х).Был простейший
способ решения-хранить номер канала в какой-либо переменной в data.Но почему-то
не сработало.Он как лупит с одного канала, так и лупит, на второй вообще и не
смотрит -(.Может, ADCH надо очищать?А может, я вообще не так делаю..
Вот пример программы:
.org 0
ljmp Start
.org 0053H
ljmp ADCRefresh ;переход по прерыванию АЦП

.....

ChanNumber-переменная для номера канала
.....

Start:
.....
setb EAD
setb EA
mov ChanNumber,#0
mov ADCON,#00001000B ;заводим АЦП на первый канал
sjmp $ ;далее программа что-то делает в основном цикле
ADCRefresh: mov A,ChanNumber
cjne A,#0,Chan1Refresh;переход на обсчет данных с другого канала
mov ChanNumber,#1
mov A,ADCH
далее программа что-то делает с результатом по каналу 0
mov ADCON,#00001000B
reti
Chan1Refresh:mov ChanNumber,#0 ;возврат к 0-му каналу
mov A,ADCH
далее программа что-то делает с результатом по каналу 1
mov ADCON,#00001001B перезарядка на 1-й канал
reti

Не работает это -(.Ну ведь должна же она по этому хоть когда-нибудь
перелезть на второй канал..а она не хочет.Помогите найти ошибку.Или
подскажите, как надо..

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru