Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
400 Часть 111. Практическое программирование микроконтроллеров АVR in command : in degree_b , UDR ; иначе принимаем байт команды reti По приему последовательности из двух байтов подряд, первый из которых равен $ЕЕ, запишется новое значение угла. Без прерываний то же самое выглядит нагляд нее, и значение команды может быть любым без траты лишних регистров : G_cykle : rcall in com ; прием байтов в temp с ожиданием cpi temp , $AO ; в temp команда $АО ? brne G_cykle ; иначе возврат к опросу rcall in_com ; прием байтов в temp с ожиданием mov degree_b , temp ; принимаем байт угла поворота В ывод и ввод символов через UART В Arduino операции форматированного вывода функция serial . print ( ) делает прозрачно для пользователя (иногда даже чересчур прозрачно, так что добиться нужного формата вывода бывает нелегко) . Здесь мы, как обычно, все вынуждены «делать ручками», зато и владеем ситуацией полностью. Самое простое - послать через UART одну десятичную цифру в виде ее символа. Как можно узнать из таблицы ASCII, для этого к значению цифры нужно приба вить число 48 ($30) . При приеме, соответственно, от полученного кода надо отнять то же самое число, получив значение цифры. Когда мы переходим к числам в не сколько десятичных разрядов, то поступать приходится точно так же, как при вы воде чисел на дисплей : переводить их в распакованную ВСD-форму и затем уже к каждой цифре добавлять по числу 48 ($30) . При приеме таких многозначных чи сел в виде строки придется принимать отдельно каждый разряд, переводить его в цифру, а затем либо упаковывать в ВСD-значение, либо переводить в обычное шестнадцатеричное число, в зависимости от задачи. Все типовые п р оцедуры для таких действий мы уже рассматривали в главе 8, а примеры их использования при ведены далее, в разд. «Программ а установки часов DSJ307» . Символы выводятся еще проще - просто их указанием в ординарных кавычках. Ничего не изменится, если вместо прямого указания символа вы будете указывать его код согласно таблице ASCII . Несложно также организовать вывод и целых строк (подробно это рассматривалось в разд. «Ассемблерное представление симво лов и строк» главы 7). Во всех таких случаях важно, чтобы в приемной программе также был установлен прием в виде текста, а не численного кода (в мониторе порта Arduino это получается автоматически, в остальных коммуникационных програм мах настраивается).
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==