Ах, да, вы же не знаете, что такое драйвер и зачем он нужен. Нет, это не что-то мифическое, это обычные подпрограммы, логично и завершенно составленные.
Окей. Реализация драйвера АЦП на ассемблере выглядит следующим образом.
Код: Выделить всё
main:
...........
...........
call Get_Voltage ; вызов функции из драйвера вольтметра
...........
...........
;-----------------------------
Get_Voltage: ; функция (подпрограмма) драйвера вольтметра для получения знач.напряж.
.........
call ADC_Convert ; вызов низкоуровневого драйвера АЦП
; далее размещен аппаратно-независимый код, работающий с результатом, полученным от драйвера АЦП -
; пересчитывающий результат в нужный для вывода формат и дающий физическую суть измеренного - вольты, милливольты
......
.....
return
;--------------------------------
ADC_Convert: ; низкоуровневвый драйвер АЦП.
................
;и вот тут уже располагается аппаратно-зависимый код работы с регистрами АЦП,
; запускающий преобразование и читающий результат.
..........
return
А то, что вы там понаписали - это пародия на плохой дизасм сишного языка. Когда вы пишете на асме, вы должны мыслить иначе, не по-сишному. Иначе. В ассемблере нет указателей. Нет вообще такого понятия. Нет функций, нет параметров, нет массивов элементов. То, что вы пытаетесь писать - это переложение сишного языка. Но в этом случае вообще зачем париться с асмом? если вы приводите сишноподобный код, и ссылаетесь все время на компилятор си, что типа он так делает.
Что вы пишете - вы сначала инкрементите регистр указателя, потом копируете его (через W!) в FSR. И дальше повторяете. А не задумывались о том, что можно сразу инктементировать или вычислить FSR вместо промежуточных действий. Разве это сложно понять? Да, когда смотреть на сишный дизасм - понять можно только си, а не асм. Но генерируемый сишный код крайне сильно зависит от уровня примененной оптимизации кода. Поставьте уровень 3 или выберите приоритет скорости или приоритет размера - и увидите, насколько изменился сгенерированный код.
Да и про АЦП - я уже объяснял неоднократно - в перерывах между чтениями результата АЦП вы будете вынуждены простаивать в ожидании или не пользоваться FSR и не менять нулевого банка. А если вдруг результат АЦП получаете в прерывании - то вся ваша затея - коту под хвост, потому как в прерывании вам придется заново перезагрузить FSR, ибо сохранение контекста вручную в младших пиках, и вектор прерываний только один.
Я уже объяснял, да вот вы не слушаете и талдычите свое. Конечно, взглянуть с другой стороны на свои потуги сложно.
Ну а что ожидать от вас, самоучки в программировании. Вы сами сознались, что самоучка за несколько месяцев. Оттуда ваши и домыслы-заблуждения.
То, что вы накодили - это калька сишного дизасма, причем в плохом его смысле.
Добавлено after 2 minutes 26 seconds:
КРАМ писал(а):
Минус 4 балла в карму без моей цитаты я Вам гарантирую.
Либо Вы цитируете где я это написал, либо у...бываете лесами и полями...
Ох ты, смотри-ка, вырос какой форумный кармодрочер. Вот только не нужно щас бежать и затирать свои посты. Всем все равно похрен.
Надо же, смотри-ка, еще молоко на губах не обсохло, еще первый флюс с платы не смыл, а уже осмелел, смотри-ка, какие слова выучил то. Тьфу ты, а то я расстроился прям. Да хоть -20. И дрочите на свою карму и дальше.
КАРМОДРОЧЕР вы. Ссылку на это определение в Лурке сами найдете. Это между прочим
официальное слово для описание форумных поборников репутации.
Добавлено after 30 minutes 18 seconds:
Хотели доказательств? вот ваши доказательства. Скриншоты, чтоб никаких отговорок не было.
Только не надо изворачиваться, что вы не то хотели сказать и имели ввиду другое.
Надеюсь, не надо приводить скрины ваших сообщений, в которых ВЫ, именно вы развязали флуд по поводу таймеров СТМа, и других оффтопных невтемных ваших сообщений
