Раздел: Документация
0 ... 17 18 19 20 21 22 23 ... 55 DTR компьютера (предварительно преобразовав его в TTL-ypo-вень) можно использовать в качестве сигнала RESET микроконтроллера. С учетом вышесказанного окончательно схема сопряжения компьютера с микроконтроллером приобретает вид, показанный на рис. 6.7. Здесь уже линии являются проводами, а стрелки указывают направление передачи. 6.2.3. Программное обеспечение протокола обмена Уточним (пока в словесном описании) еще раз алгоритм обмена (см. рис. 6.7): 1.Передатчик ждет от приемника разрешение на передачу байта. 2.Приемник при готовности приема дает передатчику разрешение на передачу байта. 3.Передатчик, получив разрешение от приемника, передает очередной байт. 4.Приемник, принимая очередной байт, сбрасывает разрешение передатчику передавать следующий байт и не восстанавливает это разрешение до тех пор, пока не примет этот байт полностью и не будет готов к приему следующего байта. 5.Передатчик, передав очередной байт, ждет запрета от приемника на передачу следующего байта1. 6.Если передатчику есть еще что передавать, он переходит к шагу 1, иначе, если передан последний байт, то передача заканчивается. В качестве примера приведем программы для компьютера и микроконтроллера, реализующие вышеописанный алгоритм обмена по RS232 (и схему рис. 6.7). Пример 6.1. Задание для компьютера. Вывести по интерфейсу RS232 из компьютера в микроконтроллер строку символов определенной длины, затем принять из микроконтроллера строку символов такой же длины. Вывести переданную и принятую строки на экран монитора для визуального сравнения. Скорость обмена установить 115200 бод. Задание для микроконтроллера. Принять из компьютера по RS232 строку определенной длины, запомнить ее (строку), а затем передать ее обратно в компьютер. Скорость обмена установить 115200 бод. 1 Этот шаг требуется более скоростному передатчику (например, компьютеру). Менее скоростной передатчик (например, микроконтроллер) этот шаг может пропустить. Несколько усложним (а возможно, и упростим, но уточним) поставленную задачу небольшим дополнительным требованием: компьютер должен перед передачей информационных байт строки передать число, равное количеству байт строки, т.е. ее длину, а микроконтроллер — принять эту длину и в дальнейшем принимать количество информационных байт, равное этой длине. Решение поставленной задачи для наглядности представим двумя вариантами, различающимися языками программирования. Первый вариант. А. Компьютерная программа представлена на языке Бейсик с двумя inline-подпрограммами на ассемблере в *.сот-формате. Название файла программы на Бейсике RdAt2051.bas. Названия ассемблерных подпрограмм: первой — prgrsis.com, второй -p86rd.com. Текстовые файлы подпрограмм: prgrsis.asm и p86rd.asm. Подпрограмма prgrsis.asm передает строку байт в микроконтроллер, а подпрограмма p86rd.asm — принимает ее. Бейсик - Turbo Basic VI.О фирмы Borland (tb.exe). Ассемблер - Turbo Assembler Version 1.0 1988 фирмы Borland (tasm.exe). Линкер - Turbo Link Version 2.0 1987, 1988 фирмы Borland (tlink.exe). Для получения файлов в *.corn-формате необходимо использовать опцию It, например: tlink.exe prgrsis.obj It Б. Программа для микроконтроллера представлена на ассемблере. Название программы — inrsll5.asm. В качестве микроконтроллера взят один из современных — MSC1210Y5. Ассемблер — 8051 Macro Assembler Version 4.02а 2500 A.D. Software Inc, 1985. Линкер - 2500 A.D. Linker, Version 4.02d, 1985. *.bat - файл для получения файла программы в *.hex-формате: x8051 %l.asm pause link -с %l.obj Второй вариант. Компьютерная программа представлена на языке Кларион. Название программы outbytec.cla. Кларион V.3100 — Clarion Software Inc., использована опция Static Model. Программа для микроконтроллера представлена на языке Си — С51 Keil Software Inc. V6.14. Название программы inrsll5ac.c Необходимо отметить, что представленные далее программы для компьютера одинаково хорошо работают (иработали) на компьютерах с процессорами: 1486-DX2-66 МГц, Pentium 1 — 100 МГц и Pentium 4-1700 МГц. Программа на BASIC е: RdAt2051.bas sub REC inline $inline "prgrsis.com" end sub sub RED inline $inline "p86rd.com" end sub Инициализация последовательного порта Установка скорости: 96- 1200,48- 2400,24- 4800,12 - 9600 6-19200, 3-38400, 2-57600, 1-115200 out &h3fb,&h8 0 out &h3f8,l -Коэффициент скорости out &h3f9,0 -Старший байт делителя Установка режима out Sh3fb,7 2 стопа,8 бит,нет паритета out &h3f9,0 Запрет всех прерываний по СОМ-порту out Sh3fc,0 Сброс микроконтроллера, delay .2 out &h3fc,l Запуск микроконтроллера, delay .2 if (inp(&h3fe) and &hl0)=&hl0 then goto goto WYKL OK: K=l START: 0 ... 17 18 19 20 21 22 23 ... 55
|