Необходимость подключения контроллера к персональному компьютеру возникает при различных обстоятельствах - отладка программы (мониторинг состояния портов, результаты вычислений и тп.) ,управление и контроль посредством ПК, считывание данных с подключенных к контроллеру сенсоров и датчиков. Соединение с ПК возможно посредством различных интерфейсов – LPT-порт, COM-порты (протокол RS-232), USB и тп. Все они обладают набором, как достоинств, так и недостатков. Самым распространенным интерфейсом, в любительской практике, является соединение с помощью COM-порта. Подобное соединение довольно простое в схемотехническом плане, недорогое и обладает достаточной скоростью обмена информацией для большинства любительских проектов. В данном материале опишем самый простой способ организации информационного обмена через COM-порт с помощью компилятора BASCOM AVR.
Перечислим основные команды компилятора BASCOM AVR примененных в нашем примере (используем аппаратный UART микроконтроллера):
- $BAUD – глобальная установка скорости информационного обмена UART.
- INPUT – ввод данных различных форматов.
Команда $BAUD
Синтаксис команды - $BAUD = var
Var – скорость порта, которую вы хотите использовать для информационного обмена (числовое значение) Пример:
$regfile = "m32def.dat" ' используем ATmega32
$crystal = 16000000 ' частота установленного кварца 16 mHz Команда INPUT Синтаксис команды - INPUT [" prompt" ] , var[ , varn ] INPUT #ch, var[ , varn ]
Promt – текстовая информация (опционально) Var,varn – вводимые значения Пример:
Input "Введите значение " , V ' ввод переменной с текстовым сообщением Команда PRINT
Синтаксис команды - PRINT [#channel , ] var ; " constant" Channel – выбор канала для вывода информации в многоканальном режиме Var – переменные, константы различных форматов, для вывода
Print "выводим переменную А " ; A ' вывод текста и переменной Print 'вывод пустой строки Естественно BASCOM AVR обладает более широкими возможностями в данном плане – организация программного UART на несколько каналов, буферизация и тд и тп. Со всеми командами вы можете ознакомится на официальном сайте компилятора.
Используем вышеперечисленные команды для написания простой программы, которая продемонстрирует простой обмен информацией через COM-порт. Задачей программы будет вывод введенного с клавиатуры текста на терминал.
$regfile = "m32def.dat" ' используем ATmega32
$crystal = 16000000 ' частота установленного кварца 16 mHz $baud = 19200 ' скорость порта 19200 бит/с.
Dim A As String * 15 'объявляем переменную – строка не более 15 символов
Do
Print "Hello! " ; A ' вывод сообщения вместе с ранее введенным текстом Print ' вывод пустой строки Wait 1 ' задержка 1 секунда End Не забываем, что в настройках компьютера, скорость порта должны быть выставлена идентично скорости в программе. В BASCOM AVR есть встроенный терминал COM-порта, его настройки для данного примера должны быть выставлены подобным образом: