[an error occurred while processing this directive]
|
Здравствуйте коллеги
Вопрос в следующем необходимо сделать передачу по последовательному порту но без использования int 14, со скоростью 115200 согласно документации на UART16450 вроде бы все сделано однако в осциллографе видно, что скорость не соответствует реальной минимум раз в 5 меньше.
#include } printf("Status=%x\n",inportb(0x2fd)); if (bioskey(1)!=0) {i=bioskey(0); return;}
E-mail:
info@telesys.ru
#include
#include
void main(void)
{
int i;
outportb(0x2fb,0x80); //Установка бита 7 DLAB в 1
outportb(0x2f8,0x00); //Записываем младшею часть кода делителя частоты
outportb(0x2F9,0x01); //Записываем старшую часть кода делителя частоты
outportb(0x2fb,0x00); //Сбрасываем бит 7 DLAB в 0
outportb(0x2fb,0x23); //Настраиваем порт 8 бит без паритета без контроля четности
outportb(0x2fc,0x0b); // Настраиваем линии RTS и OUT1
честно говоря не понято зачем но без этой команды передачи вообще нет
outportb(0x2f9,0x00); // Запрещаем прерывания от COM1
int status;
M:
do
{
status=(inportb(0x2fd))&0x20; // Ждем готовности выходного регистра
while (status==0);
outportb(0x2f8,0x11); // Выдаем байт
goto M;
}
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание