Ой блин...

Артемий Лебедев забился в угол и плачет.
По теме.
SergeG, микросхемы серии FT232 созданы как раз для того, чтобы
забыть про USB, и реализовывать обмен так, как будто МК подключен к компьютеру через UART. Всю обработку проткола USB они берут на себя. В результате:
1. МК видит UART, по которому к нему/от него идут данные;
2. Программа на ПК видит COM-порт, в который она может писать и из которого может читать;
То, что пишет программа в виртуальный COM порт, подхватывает драйвер VCP и переправляет через USB в микросхему, которая выдает их через обычный UART. Ну и наоборот, данные, посланные через UART в микросхему, она сама пересылает через USB, там их подхватывает драйвер, и делает вид, что они пришли через COM порт. Все. За эту простоту FT232 всенародно любима.
Важно - COM порт, видимый в системе, неспроста зовется виртуальным. Он, естесственно,
не имеет аппаратных регистров, и поддерживается только на уровне драйвера! Т.е., для работы с ним катит только WinAPI, никаких прямых обращений.
Например, если у ноутбука вообще нет COM портов, то созданный COM может зваться COM1. Но сответствующего регистра 0x3F8 и всех остальных НЕ БУДЕТ. Потому будут на ура работать ReadFile(), WriteFile(), CreateFile(), GetCommState(), SetCommState(),
но никаких out <data>, 0x3F8.
А вообще все эти штуки с виртуальным портом существуют только для совместимости с древним софтом. Если такой задачи не стоит, то лучше пользоваться специальной библиотекой D2XX, которая добывается на оффсайте.
И еще загляните сюда -
http://easyelectronics.ru/preobrazovate ... 232rl.html
Разница между теорией и практикой на практике гораздо больше, чем в теории.