8250 UART требует соответствия модема
Я изучаю модем ввода-вывода и устанавливаю UART через com1: и базовый адрес x03f8, и мне интересно, должно ли соединение UART с модемом быть равным? Я делаю это в QB64.
3 ответа
Решение
Нашел эту подпрограмму DLAB:
' sets port dlab (Divisor Latch Access Bit)
SUB SetBPS (Var)
SELECT CASE Var
CASE 1 ' 19200
LByte = 6
CASE 2 ' 38400
LByte = 3
CASE 3 ' 57600
LByte = 2
CASE 4 ' 115200
LByte = 1
END SELECT
Var2 = Base.Address
IF Var2 = 0 THEN
SELECT CASE Port
CASE 0
Var2 = &H3F8
CASE 1
Var2 = &H2F8
CASE 2
Var2 = &H3E8
CASE 3
Var2 = &H2E8
CASE 4
Var2 = &H3E0
CASE 5
Var2 = &H2E0
CASE 6
Var2 = &H338
CASE 7
Var2 = &H238
CASE ELSE
EXIT SUB
END SELECT
END IF
' divisor latch low
LSB = Var2 ' 3F8x
' divisor latch high
MSB = Var2 + 1 ' 3F9x
' line control register
LCR = Var2 + 3 ' 3FBx
MSBSave = INP(MSB)
OUT MSB, 0
OUT LCR, 128 ' dlab
' set baud rate
OUT LSB, LByte ' least significant byte
OUT MSB, 0 ' most significant byte
OUT LCR, 3 ' n,8,1
OUT MSB, MSBSave
END SUB
Если вы имеете в виду скорость передачи данных, то настройка com-порта должна быть такой же или выше, чем требуемая скорость передачи модема.
После открытия устройства связи в виде файла вы можете отрегулировать скорость передачи в бодах Uart и настроить ее так, чтобы она соответствовала скорости передачи в модеме с помощью регистра dlab?