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

Последовательный порт микроконтроллера может использоваться в виде регистра сдвига для расширения ввода-вывода или в качестве 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

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