Так вот передача от контроллер происходит а вот принимать байт он не в какую не хочет
На счёт уровней протеус сам может преобразовать ? раз как-то передаёт
Код: Выделить всё
.include "tn2313def.inc" ; Присоединение файла описаний
.def temp=r18
.def rab = r17 ; Определение рабочего регистра
;------------------------- Начало программного кода
.cseg ; Выбор сегмента программного кода
.org 0 ; Установка текущего адреса на ноль
start: rjmp init ; Переход на начало программы
reti ; Внешнее прерывание 0
reti ; Внешнее прерывание 1
reti ; Прерывание по захвату таймера T1
reti ; Прерывание по совпадению T1
reti ; Прерывание по переполнению T1
reti ; Прерывание по переполнению T0
rjmp uart_rcv ; Прерывание UART прием завершен
reti ; Прерывание UART регистр данных пуст
reti ; Прерывание UART передача завершена
reti ; Прерывание по компаратору
reti ; Прерывание по изменению на любом контакте
reti ; Таймер/счетчик 1. Совпадение B
reti ; Таймер/счетчик 0. Совпадение B
reti ; Таймер/счетчик 0. Совпадение A
reti ; USI Стартовая готовность
reti ; USI Переполнение
reti ; EEPROM Готовность
reti ; Переполнение охранного таймера
;--------------------------
init: ldi temp, ramend ; Выбор адреса вершины стека
out SPL, temp ; Запись его в регистр стека
;-------------------------- Инициализация портов ВВ
lDI temp,0b11111111
out DDRB,temp
lDI temp,0
out DDRD,temp
out PORTD,temp
rcall uart_init ;инициализация UART
;-------------------------- передача символа 5
ldi r20,'5'
rcall uart_snt
sei ;разрешаем прерывание
;-------------------------- главный цикл
main:
Rjmp main
;--------------------------
;подпрограммы
;--------------------------
uart_init:
LDI R16, $00
OUT UBRRH,R16
LDI R16, $33
OUT UBRRL,R16
LDI R16,0x06 ; скорость передачи 9600 при частоте 8Мгц
OUT UCSRC, R16
LDI R16,$00
OUT UCSRA, R16
LDI R16,(1<<RXEN)|(1<<TXEN)|(1<<RXCIE) ;RXCIE- разрешение прерывание по завершению приёма
OUT UCSRB, R16
RET
;-------------------------- приём по прерыванию
uart_rcv:
IN temp,UDR ; байт пришел - забираем.
out portb,temp ; выводим в порт B
RETI ; Выходим. Результат в rab
;-------------------------- передача
uart_snt:
SBIS UCSRA,UDRE ; Пропуск если нет флага готовности
RJMP uart_snt ; ждем готовности - флага UDRE
OUT UDR, R20 ; шлем байт
RET
exit:
RJMP exit




