Современные программные средства связи микроконтроллера с компьютером по интерфейсу RS-232. Часть 3

№ 8’2006
Подпрограммы передачи и приема байта для компьютера и микроконтроллера, использующие логику нового алгоритма обмена.

Все статьи цикла:

2.2. Подпрограммы передачи и приема байта для компьютера и микроконтроллера, использующие логику нового алгоритма обмена

Ниже приведены подпрограммы приема и передачи байта, составленные в соответствии с логикой работы ранее изложенного алгоритма обмена и временной диаграммой, приведенной на рис. 1 (см. КиТ № 7`2006).

Подпрограммы для компьютера приведены на языке Кларион для DOS (Clarion v.3.101, Clarion Software Inc.), а для микроконтроллера — на двух языках: ассемблере (8051 Macro Assembler v.4.02a, 2500 A.D. Software Inc., 1985) и Си (C51, Keil Software Inc. v.6.14.).

Подпрограммы на Clarion v.3.101 имеют следующий вид:

На ассемблере представлены макросы ввода и вывода байта. В связи с тем, что в макросах (макроассемблера 8051 Macro Assembler v.4.02a, 2500 A.D. Software Inc., 1985) запрещено использовать комментарии на русском языке, они приведены на английском. Надеемся, это не вызовет особых затруднений у читателя, поскольку их перевод содержится в вышеприведенных подпрограммах на Кларионе и Си. Макросы на ассемблере приведены ниже.

В качестве микроконтроллера взят один из современных — MSC1210Y5. Этот 4-тактный микроконтроллер занимает промежуточное положение по быстродействию между достаточно скоростными (1-тактными) микроконтроллерами, такими как ADUC847, C8051F067/330D, 2-тактными, например, P89LPC938, среднескоростным 6-тактным — AT89C51ED2 и стандартным 12-тактным, например, AT89S8252. Для микроконтроллера MSC1210 выбранная 10-микросекундная задержка, с учетом времени его реакции на начало передачи Трн (рис. 1), переключает его линию TxD (т. е. RxD компьютера) приблизительно между 4 и 5 битом, т. е. примерно в «середине» принимаемого байта.

При использовании более высокоскоростного микроконтроллера, чем MSC1210, задержку можно немного увеличить (в компьютере, например (см. подпрограмму на Кларионе), установлена задержка в 20 мкс), в противном случае — уменьшить. Необходимо только помнить, что точное значение задержки не так уж и важно. Главное условие, чтобы переключение линии RxD с низкого уровня в высокий (рис. 1) осуществлялось не ранее чем спустя 1–2 бита (по времени) после начала старт-бита (чтобы на такой короткий импульс среагировал преобразователь интерфейса), но и не позже чем за 1–2 бита до начала стоп-бита (чтобы передатчик «поймал» запрет передачи).

2.3. Тестовые программы обмена информацией между микроконтроллером и компьютером по интерфейсу RS-232, использующие логику нового алгоритма

2.3.1. Общие положения

Ниже будут приведены реально работающие программы, написанные на языке C51 (для некоторых микроконтроллеров будут приведены программы и на ассемблере — для интересующихся) для микроконтроллеров MSC1210 и P89LPC938/904, и программа для компьютера, написанная на языке Clarion v.3.101 и работающая в операционной системе DOS. Для микроконтроллеров ADUC834/845, AT89C51ED2/RD2 и C8051F067/F330D программы будут аналогичные, за исключением инициализации интерфейса RS-232. Что касается программ для компьютера, работающих в ОС Win’98/XP, то они будут приведены несколько позже, поскольку, с одной стороны, в программах для ОС Win’98/XP за основу будет взята именно программа для DOS, с другой — прежде чем приводить программы для Win’98/XP, необходимо будет объяснить предварительные положения и соображения, без уяснения которых, по мнению автора, понять некоторые моменты программирования в ОС Win’98/XP будет непросто.

Хотя программы для микроконтроллеров и снабжены комментариями, все же автор счел нужным привести краткие пояснения к каждой программе, т. к. в комментариях отражены не все моменты и нюансы работы каждого конкретного микроконтроллера. В основном эти пояснения будут касаться инициализации интерфейса RS-232, таймеров, которые предназначены для генерации скорости обмена, и некоторых других особенностей представляемых микроконтроллеров.

2.3.2. Тестовая программа обмена для микроконтроллера MSC1210

Ниже приведены две тестовых программы для микроконтроллера MSC1210. Первая на Си, вторая — на ассемблере. Программы функционируют при условии сопряжения микроконтроллера MSC1210 с компьютером по схеме рис. 9 и рис. 17 (КиТ № 4’2006 г.). Для функционирования программ совместно с компьютером должна использоваться компьютерная программа, приведенная (далее) в 2.3.4. В качестве генератора скорости обмена используется таймер T2 и внешний генератор с кварцевым резонатором частотой 11 059 200 Гц. Скорость обмена установлена 115 200 бод.

Программа на Си запоминает принимаемую строку из 75 байт и выводит ее обратно в том же порядке, в котором они поступили в микроконтроллер.

Программа на ассемблере записывает поступившие байты в стек, а затем считывает их оттуда и выводит в компьютер. Поэтому байты выводятся в компьютер в обратном порядке.

Программа на языке Си:

2.3.3. Тестовые программы обмена для микроконтроллеров P89LPC938/904

Ниже приведены две тестовых программы на Си для микроконтроллеров P89LPC938 и P89LPC904 и одна программа на ассемблере для P89LPC904. Программы функционируют при условии сопряжения микроконтроллеров с компьютером по схемам рис. 12, рис. 13, рис. 14 и рис. 17 (КиТ № 4’2006 г.). Для функционирования программ совместно с компьютером должна использоваться компьютерная программа, приведенная в 2.3.4.

В качестве генератора скорости обмена используется внутренний генератор скорости обмена (Baud Rate Generator — BRG) с частотой 7 372 800 Гц. Скорость обмена установлена 115 200 бод.

Программы на Си запоминают принимаемую строку из 75 байт и выводят ее обратно в том же порядке, в котором они поступили в микроконтроллер.

Программа на ассемблере записывает поступившие байты в стек, а затем считывает их оттуда и выводит в компьютер. Поэтому байты выводятся в компьютер в обратном порядке.

Программа на языке Си для P89LPC938:

Программа на языке ассемблер для P89LPC904:

2.3.4. Тестовая программа обмена для компьютера в ОС DOS

Для функционирования любой из тестовых микроконтроллерных программ, приведенных в 2.3.2 (для MSC1210) и 2.3.3 (для P89LPC938/904), написана компьютерная программа на языке Clarion v3.101 Hello.cla, работающая в операционной системе DOS. Программа инициализирует интерфейс RS-232 компьютера (порт COM1:N,8,1,115200), запускает микроконтроллер, передает в него строку из 75 байт (представляющую собой символы латинского и русского алфавита), принимает эту строку от микроконтроллера и обе строки (для сравнения) выводит на экран монитора. В программу включена (INCLUDE) опция графического интерфейса пользователя (Graphic User Interface). Этот интерфейс позволяет работать в DOS в графическом оконном режиме и поддерживает мышь (аналогично всем программам для ОС Windows).

В качестве алгоритма обмена программа использует приведенный в 2.1 новый алгоритм обмена, разработанный автором.

Ниже приведен текст программы Hello.cla, а вслед за ним — текст ее файл-проекта.

После запуска программы на экран выводится окно, показанное на рис. 5.

Рис. 5. Внешний вид окна программ

Нажатие кнопки «Продолжить» (мышью или клавишей Enter) приведет к повторному запуску программы; количество запусков отражает переменная k в левом верхнем углу. В данном случае k=146.

Нажатие кнопки «Выход» приведет к выходу из программы.

следующей части статьи пойдет речь о программировании интерфейса RS-232 в ОС Windows98/XP.

Продолжение следует

Литература

  1. Баррингтон Брюс Б. Как создавался Кларион // Мир ПК. 1993. № 2.
  2. Кузьминов А. Ю. Интерфейс RS-232. Связь между компьютером и микроконтроллером. От DOS к Windows98/XP. М.: ДМК-ПРЕСС. 2006 (в печати).
  3. Кузьминов А. Ю. Интерфейс RS-232. Связь между компьютером и микроконтроллером. М.: Радио и связь. 2004.
  4. Кузьминов А. Ю. Однокристальные микроЭВМ — основа удаленных систем сбора и обработки сигналов, поступающих с датчиков // Электроника и компоненты. 1998. № 2.
  5. Кузьминов А. Ю. Новые MCS51 — совместимые микроконтроллеры и их применение в системах сбора информации с датчиков // Контрольно-измерительные приборы и системы. 1997. № 6; 1998. № 7.
  6. Кузьминов А. Ю. Удаленные системы сбора информации с датчиков на базе однокристальных микроЭВМ // Автоматизация и производство. 1996. № 3.
  7. Кузьминов А. Ю. Универсальная система сбора и обработки данных АСИР-3 // Мир ПК. 1996. № 6.
  8. Орлов А. Два звучных слова— Clarion и Delphi // Мир ПК. 1996. № 6.
  9. Фролов А. В., Фролов Г. В. Программирование модемов. М.: ДИАЛОГ-МИФИ, 1993.
  10. www.analog.com
  11. www.atmel.com
  12. www.maxim-ic.com
  13. www.semiconductor-philips.com
  14. www.silabs.com
  15. www.ti.com
  16. www.msdn.microsoft.com/library
  17. www.gapdev.com
  18. www.sysinternal.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *