Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2015, 07:32   #1
rus7am
 
Регистрация: 08.05.2015
Сообщений: 7
По умолчанию LPT и АЦП

Здравствуйте дорогие форумчане!

С недавних пор я изучаю Ассемблер. Мне надо написать программу на ассемблере, которая бы связала LPT порт компьютера и АЦП. Мне не нужна готовая программа, я бы хотел посмотреть на подобные задачи или хотя бы алгоритмы в которых это реализуется.
Т.е. я сейчас даже не понимаю с чего начать писать программу.
Пожалуйста помогите мне в этом не легком пути.
Заранее всем большое СПАСИБО!

Последний раз редактировалось rus7am; 22.07.2015 в 07:46.
rus7am вне форума Ответить с цитированием
Старый 22.07.2015, 08:19   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

..начни со-знакомства с прерыванием INT-17h.
доки по АЦП можно найти тут: http://www.dikoy.info/projects/Beginners.htm
Нашедшего выход - затаптывают первым..

Последний раз редактировалось R71MT; 22.07.2015 в 08:21.
R71MT вне форума Ответить с цитированием
Старый 22.07.2015, 13:25   #3
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Ну, по LPT много уже написано. Подобная тема, живёт уже лет 20. Жёвано-пережёвано. Лень порыться? Ну, да. пусть пограммёры этим занимаются, а я пойду - пивка попью.
Цитата:
Т.е. я сейчас даже не понимаю с чего начать писать программу.
Может с того, что в первувую очередь, с постановкой задачи нужно определиься?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 22.07.2015 в 13:34.
Smitt&Wesson вне форума Ответить с цитированием
Старый 22.07.2015, 14:08   #4
rus7am
 
Регистрация: 08.05.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Ну, по LPT много уже написано. Подобная тема, живёт уже лет 20. Жёвано-пережёвано. Лень порыться? Ну, да. пусть пограммёры этим занимаются, а я пойду - пивка попью.
Может с того, что в первувую очередь, с постановкой задачи нужно определиься?
Про LPT написано много, но по АЦП на ассемблере я не нашел.
Постановка задачи следующая:
Имеется ацп AD7890-2, которое подключено к LPT порту компьютера. Необходимо изменяя сигналы на входе АЦП менять состояния регистров данных LPT порта.
Если у вас есть какой-нибудь похожий код программы на ассемблере, то поделитесь информацией пожалуйста!
rus7am вне форума Ответить с цитированием
Старый 22.07.2015, 14:31   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,694
По умолчанию

Давайте начнем со схеме подключения всего этого. Кто программирует АДшку? Кто забирает с нее данные? Кто изменяет состояние линий лпт? ..
p51x вне форума Ответить с цитированием
Старый 22.07.2015, 15:16   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

rus7amASM, это, конечно Ваше личное дело.Как говорится - "На вкус и цвет..." Я-бы использовал не асм, а Апи Винодовс. По крайней мере, гемору меньше. Но, дело хозяйское...
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 22.07.2015 в 15:23.
Smitt&Wesson вне форума Ответить с цитированием
Старый 29.05.2017, 15:38   #7
седьмой
Форумчанин
 
Регистрация: 17.07.2012
Сообщений: 140
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
rus7amASM, это, конечно Ваше личное дело.Как говорится - "На вкус и цвет..." Я-бы использовал не асм, а Апи Винодовс.
Как то у вас ответы друг с другом не связываются? то вы пишите что код к LPT порту написать очень легко
Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Ну, по LPT много уже написано. Подобная тема, живёт уже лет 20. Жёвано-пережёвано. Лень порыться?
то отправляете к более высокому уровню, хотя не секрет, что любая программа на ассемблере работает быстрее какой либо другой аналогичной. Может вы просто не знаете как на ассемблере этот код написать?
седьмой вне форума Ответить с цитированием
Старый 29.05.2017, 16:12   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,529
По умолчанию

Если это - для дела, то оптимальный вариант - поставить между AD и ПК микроконтроллер и забирать из него уже готовые измеренные данные, т.к. "высокоскоростной последовательный интерфейс" и уходящий на пенсию LPT - не стыкуются друг с другом. Можно, конечно, сэмулировать SPi на 3..4 выводах LPT, но это что турбину Боинга к Запоржцу пришпандоривать, IMHO. Все быстродействие, достигнутое за счет применения ассемблера, будет съедено этой эмуляцией. Более того, часть времени ЦП ПК уйдет на обслуживание ОС, так что о реалтаймовости говорить не приходится. И еще надо прямой доступ к LPT получит в обход ОС, если это не Win-98.
А если это - учебное задание - я уже не удивляюсь, много видел еще более идиотских задач, впихиваемых бедным студням.
А насчет API - так оно же оперирует не какими-то скрытыми командами с неограниченными возможностями, а использует те же машинные команды, что и асм.
Перечитал первый пост - ну конечно, мудрецы с кафедры АСУ в очередной раз предлагают почесать левое ухо правой ногой.

Последний раз редактировалось digitalis; 29.05.2017 в 16:25.
digitalis вне форума Ответить с цитированием
Старый 30.05.2017, 11:10   #9
kutani
Форумчанин
 
Регистрация: 23.01.2016
Сообщений: 608
По умолчанию

...если бы еще и дату поста посмотрели, вообще кошерно было )
kutani вне форума Ответить с цитированием
Старый 30.05.2017, 15:03   #10
седьмой
Форумчанин
 
Регистрация: 17.07.2012
Сообщений: 140
По умолчанию

Цитата:
Сообщение от kutani Посмотреть сообщение
.если бы еще и дату поста посмотрели, вообще кошерно было )
А если на дату не смотреть и допустить, мысленно , что надо для работы и рейтаймово, тогда как? Может скинем код? Мне кажется по аппаратному прерыванию LPT должен работать быстрее API винды, поэтому предлагаю от слов перейти к делу. Щас выложу простой код, поправьте если ошибусь, просто тупо на 10ю ножку прерывания LPT подключу генератор и буду чередовать на экране 0 1 0 1, посмотрим с какой частотой LPT справится под досом, а потом проверим сможет ли тоже самое повторить винда. Вот пока посмотрите будет ли такой код работать, переделал его из аппаратного сом прерывания, правда он почему то не шел в последнее время, но раньше работал.
Код:
.MODEL tiny
.386
.DATA
oldSeg   dw  0           
oldOfs   dw  0
.CODE
org 100h
START:
mov al,01111111b //размаскируем прер LPT IRQ7
out 21h,al //выполним размаскирование
push   es 			//сохраняем в стеке сегментный регистр
push   bx 			//сохраняем в стеке регистр базы
mov    ax,350Fh   //запоминаем оригинальный вектор прерываний        
int    21h //запуск
mov    [oldSeg],es   //сегмент обработчика прерывания    
mov    [oldOfs],bx   //база обработчика прерывания   
pop    bx 	//достаем базовый регистр текущий
pop    es 	//достаем сегментный регистр текущий
mov    ax,250Fh   	//устанавливаем новый вектор прерывания        
mov    dx,new0C 	 //адрес обработчика прерывания        
int    21h	//запуск
STI 		//разрешить прерывания
m1:			//цикл ожидания прерывания
jmp m1 
new0C:                    
    push ax
    in al,60h    //скан код последней клавиши, это я не понял зачем надо
   mov   ax,0E31h  //  завершить выполнение и резидентно остаться в памяти      
	
	
	mov al,'0' //выводим на экран 0
		int 29h
	mov al,'1' //выводим 1
		int 29h
	mov al,' ' //делаем пробел
		int 29h
	

    mov   al,20h
    out   20h,al          
pop ax
    iret                  
    mov   ax,250Fh        
    mov   ds,[oldSeg]
    mov   dx,[oldOfs]
int 20h
END START
да забыл дописать, надо на 4ю ножку регистра Base+2 подать 1ку. Вот можно так наверно добавить в начале
Код:
base=0378h    ; LPT1 номер базового порта
mov dx,base+2
mov al,1
out dx,al

Последний раз редактировалось седьмой; 30.05.2017 в 15:55.
седьмой вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо написать программу на C#, управляющая LPT и 3 COM портами. На COM висят АЦП и ЦАП CopperRU Фриланс 2 15.04.2012 10:19
Параллельный АЦП на С Анастасий Общие вопросы C/C++ 4 05.01.2012 15:54
avr usb ацп wanes101 Микроконтроллеры, робототехника, схемотехника, 3D принтеры 5 20.09.2010 10:04
Программа для АЦП TLC549 WandererX Помощь студентам 0 08.04.2010 10:25
АЦП на ATmega48 hobin Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 04.02.2009 04:21