Работа с последовательным портом

Последовательный порт микроконтроллера может использоваться в виде регистра сдвига для расширения ввода-вывода или в качестве UART с фиксированной или переменной скоростью последовательного обмена и возможностью дуплексного включения. То есть через порт можно передавать и принимать данные одновременно. Порт может принимать очередной байт даже в том случае, если уже принятый до этого байт не был прочитан из регистра приёмника. Однако, если до окончания приёма находящийся в регистре приёмника байт не будет прочитан, принятый байт теряется. Программный доступ к регистрам приёмника и передатчика осуществляется обращением к регистру специальных функций SBUF.

Ниже приведён пример фрагмента программы, принимающей из последовательного порта байт и отправляющей его назад в последовательный порт, настроенный на 8-битный режим со скоростью передачи 1200 бод при тактовой частоте микроконтроллера 6 МГц.

MOV SCON,#052H;установка режима 8-битного UART

MOV TMOD,#020H;установка режима автозагрузки таймера 1

MOV TCON,#069H

MOV TH1,#0F3H;автозагружаемое значение для получения

;скорости 1200 бод на частоте 6 МГц

;приём символа из порта

CIN: JNB RI,CIN;ожидание завершения приёма

MOV A,SBUF;чтение символа

CLR RI;очистка флага приёма

;выдача символа в последовательный порт

COUT: JNB TI,COUT;ожидание окончания передачи

CLR TI;очистка флага передачи

MOV SBUF,A;выдача символа

SJMP CIN

END

Реализация функций времени


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: