Введите текст заголовка

Страница на этапе разработки

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

.device Atmega8
.include «m8def.inc»
.def temp = r16 ; рабочий регистр
.org 0
rjmp Reset

out_com:   ; посылка байта
                  sbis UCSRA, UDRE ; ждем готовности буфера передатчика
                  rjmp out_com
                  out UDR, temp ; отсылаем
ret

in_com:  ;прием байта
               sbis  UCSRA, RXC  ; ждем готовности буфера приемника
               rjmp in_com
               in temp, UDR  ; принимаем
ret

Reset:
          ldi temp, Low(RAMEND) ; 
         out SPL, temp ; 
         ldi temp, High(RAMEND) ; 
         out SPH, temp ; 

        ;==UART==
        ; асинхронный режим, F = 4MГц
        ldi temp, 25 ; скорость передачи 9600 при 4МГц BAUD = 25
       out UBRRL, temp
       ldi temp, (1<<RXEN)|(1<<TXEN); разрешение приема/передачи
       out UCSRB, temp 

Gcykle:
              rcall in_com ; ждем любого байта
              rcall out_com ; отсылаем обратно
rjmp Gcykle