Сейчас на форуме: hgdagon, asfa, bartolomeo (+6 невидимых) |
![]() |
eXeL@B —› Программирование —› модем |
Посл.ответ | Сообщение |
|
Создано: 25 октября 2006 02:03 · Личное сообщение · #1 Проблема в следующем: запрограммировал COM1 порт (скорость, стоп-биты, четность, прерывания...), затем начинаю передавать через регистр данных (3f8h) команды модему, а он молчит. смотрел исходники Menuet, но разобраться не смог, там все через int 40h делается. прочитал Фролова - "Программирование модемов", вроде все так делаю Может чего-то не понимаю? Вот текст программы: code segment org 100h base equ 3f8h assume cs:code, ds:code start: jmp short entry at db 'at dp 490497' label entry near ;инициализация порта COM1 ;записать нулевое заначение в регист управления модемом ;чтобы обнулить сигналы DTR и RTS mov dx,base+4 xor al,al out dx,al ;обнуляем регистры: состояния линии, данных и регистр состояния модема mov dx,base ;регистр данных xor al,al out dx,al mov dx,base+5 ;состояния линии out dx,al mov dx,base+6 ;регистр состояния модема out dx,al ;устанавливаем скорость порта mov dx,base+3 mov al,80h out dx,al mov dx,base mov al,60h ;скорость 1200 bod out dx,al mov dx,base+1 xor al,al out dx,al ;устанавливаем кол-во стоп бит, четность и прерывания mov dx,base+3 mov al,03h out dx,al mov dx,base+1 xor al,al out dx,al ;устанавливаем сигналы DTR и RTS mov dx,base+4 in al,dx or al,03h out dx,al ;ожидаем когда освободится регистр передатчика _wait: mov dx,base+5 in al,dx test al,40h jz _wait ;передаем модему команду AT xor si,si mov dx,base mov al,at[si] out dx,al inc si mov dx,base mov al,at[si] out dx,al mov al,13h out dx,al ;передаем команду ATD xor si,si mov dx,base mov al,at[si] out dx,al _at: inc si mov dx,base mov al,at[si] out dx,al cmp si,11 jnz _at mov al,13h out dx,al ;после этого модем должен начать дозвон _exit: mov ax,4c00h int 21h code ends end start ![]() |
|
Создано: 27 октября 2006 04:02 · Личное сообщение · #2 |
|
Создано: 27 октября 2006 06:14 · Личное сообщение · #3 |
|
Создано: 27 октября 2006 22:45 · Личное сообщение · #4 |
|
Создано: 28 октября 2006 01:43 · Личное сообщение · #5 |
|
Создано: 01 ноября 2006 05:32 · Личное сообщение · #6 kirillxskynet пишет: я и работаю в DOS, А чего в инструкциях на модем написано, что команду AT можно маленькими буквами давать ?! Все большими, может только где-то в спец-командах маленькие. Про пробел не уверен, но всю жизнь ATDP и ATDT задавал. Это ж изначально простая железяка была, там даже процессора не было сначала. ![]() |
|
Создано: 02 ноября 2006 01:54 · Личное сообщение · #7 Точно, tundra37 прав нельзя с пробелом писать atdp. AT - Начало (префикс) командной строки. Эти две буквы являются префиксом для остальных команд, и в тоже время имеют самостоятельное значение. Это так называемая пустая команда. После получения этой команды модем автоматически подстраивает скорость передачи и формат знака к параметрам терминала. Также, лучше писать команды в верхнем регистре (на всякий случай :s3 ![]() ![]() |
|
Создано: 07 ноября 2006 03:17 · Личное сообщение · #8 |
|
Создано: 08 ноября 2006 03:01 · Личное сообщение · #9 |
![]() |
eXeL@B —› Программирование —› модем |