Дипломная работа: Апаратно–програмний комплекс GSM-МТМ
in al,dx
jmp $+2; затримка
Ці регістри необхідно скинути для того, щоб надалі не заважали старі значення, які могли залишитися від роботи інших програм.
Після того як ми скинули регістри UART, можна приступити власне до ініціалізації COM-порту. Під час ініціалізації задається формат даних - довжина слова, кількість стопових бітів, наявність контролю по парності і швидкість обміну.
Для задання швидкості обміну даними треба перевести регістр даних і регістр керування перериваннями в режим уведення значення дільника частоти тактового генератора. Цей режим встановлюється записом одиниці в старший біт регістра керування лінією (LCR):
// переводимо регістр даних і регістр
// керування перериваннями у режим уведення
// значення дільника частоти тактового генератора
ctl = inp(LCR); // LCR - адреса регістра керування
// установлюємо старший біт регістра
outp(LCR_N, ctl | 0x80);
// обчислюємо значення для дільника частоти
//(змінна baud визначає швидкість обміну,
// яку ми хочемо установити)
switch(baud) {
case 110: div = 1040; break;
case 150: div = 768; break;
case 300: div = 384; break;
case 600: div = 192; break;
case 1200: div = 96; break;
case 2400: div = 48; break;
case 4800: div = 24; break;
case 9600: div = 12; break;
case 19200: div = 6; break;
case 38400: div = 3; break;
case 57600: div = 2; break;
case 115200: div =1; break;
default: return(-1); break;
}