Программная реализация передачи данных по последовательному порту в микроконтроллерах PIC16

Автор: Захаров Д.С., Леонтьев Н.А.

Журнал: Форум молодых ученых @forum-nauka

Статья в выпуске: 12-2 (28), 2018 года.

Бесплатный доступ

В данной статье рассматривается программная реализация передачи данных по последовательному порту в микроконтроллерах PIC16. Разработка алгоритма для передачи данных по последовательному формату и реализация алгоритма на языке программирования Assembler, симуляция в интегрированной среде разработки MPLab IDE.

Ключевые деятельности слова:uart, передача данных, keyword: системе uart

Короткий адрес: https://sciup.org/140281058

IDR: 140281058

Текст научной статьи Программная реализация передачи данных по последовательному порту в микроконтроллерах PIC16

Keyword: сUART, data transmission, PIC16

Микроконтроллеры часто применяются в качестве управляющего элемента для датчиков и различных модулей. В данном случае контроль работы осуществляется непосредственно передачей и приемом данных по последовательному (UART) порту. В микроконтроллерах PIC для реализации данной задачи обычно используется модуль USART, которая включается и настраивается изменением соответствующих регистров. В данной статье будет рассматриваться программная реализация последовательной передачи данных без использования модуля USART. [1]

Для реализации передачи данных по UART порту используется формат последовательной передачи данных (Рисунок 1). Данный формат подразумевает побитную передачу данных, начиная с младшего бита старшего байта. Перед передачей данных на выходную ножку устанавливается режим ожидания в качестве «1», поначалу передачи данных на ножку подается стартовый бит «0», по окончанию стоповый бит «1». Также следует рассчитать длительность одного бита в зависимости от скорости передачи данных. Скорость передачи данных для большинства устройств 9600 бод, тогда длительность одного передаваемого бита:

т = = 104 мкс

movlw

.9

movwf

Reg_2

bcf

STATUS,C

Режим ожидания

Рисунок 1. Формат последовательных данных

Для побитной передачи данных используется команда RRF, которая позволяет сдвигать регистр передаваемых данных направо на один бит. Значение сдвинутого бита присваивается на бит C регистра STATUS. Также необходимо использовать декрементируемый регистр, в котором записывается число 9 (стартовый бит + 8 бит данных). Передача данных производится с помощью команды проверки флага STATUS,C если «0» то на выход подаем «0», если «1» то подаем «1».

Запись декрементируемого регистра и подготовка стартового бита:

ожидания

Передача данных начинается с проверки флага STATUS, C заранее настроенного на стартовый бит. После подачи стартового бита выполняется команда сдвига направо и, начиная с младшего бита, происходит передача данных посредством проверки значение флага STATUS, C и подачей на выход. По окончанию декремента, что соответствует последнему передаваемому биту, устанавливается стоповый бит и режим ожидания «0».

btfsc STATUS,C

goto bit1 goto bit0 bit1

bsf PORTB,2

call Pause goto m2 bit0

bcf PORTB,2

call Pause goto m2 m2

rrf Data,1

decfsz Decrement,1

goto

m1

bsf

PORTB,2

call

Pause

После каждой подачи бита необходимо реализовать задержку на 104 мкс начиная со стартового бита:

Pause movlw .31 movwf Reg_1 wr decfsz Reg_1, 1 goto wr nop return end;

Результат симуляции программы в среде разработки MPLab IDE:

022         dlit2_h              00000001

023        dllt^l             10011111

Рисунок 2. Последовательная передача 2х байтов.

Результат проверки алгоритма через логический анализатор.

Рисунок 3. Результат последовательной передачи данных на логическом анализаторе

Таким образом, данная программа выполняет последовательную передачу данных на микроконтроллере PIC16. Данный формат передачи обычно используется при работе с модулями, которым нужно передавать вычисленные данные для дальнейшей обработки, при передаче каких либо данных на устройство через UART порт.

Список литературы Программная реализация передачи данных по последовательному порту в микроконтроллерах PIC16

  • Datasheet PIC16F628A [Электронный ресурс] URL: https://www.microchip.com/wwwproducts/en/PIC16F628A
Статья научная