Страница 1 из 1

Мультиплексор программно на ассемблере

Добавлено: Вт фев 14, 2017 12:15:24
SaITem25
Нужно написать программу на ассемблере в Atmel Studio, которая преобразовывает параллельный код в последовательный. На одной плате у меня порты А на вход настроены, и я изменяю уровень сигналов 0,1. Затем с помощью одного проводка я должен передать последовательность этих сигналов на другую плату, и там на порту А загораются светодиоды уровней с первой платы. Помогите, кто шарит. Хотя бы алгоритм.

Re: Мультиплексор программно на ассемблере

Добавлено: Вт фев 14, 2017 12:40:12
BOB51
Это уже последовательная асинхронная передача данных, а не просто преобразование параллельный/последовательный код.
А программно или аппаратно реализовать - это на вкус препода.
8)

Re: Мультиплексор программно на ассемблере

Добавлено: Вт фев 14, 2017 13:39:58
pyzhman
Открываем даташит и сдираем настройку:

Код: Выделить всё

USART_Init:
; Set baud rate
out UBRRH, r17
out UBRRL, r16
; Enable receiver and transmitter
ldi r16, (1<<RXEN)|(1<<TXEN)
out UCSRB,r16
; Set frame format: 8data, 2stop bit
ldi r16, (1<<USBS)|(3<<UCSZ0)
out UCSRC,r16
ret
Далее сдираем отправку:

Код: Выделить всё

USART_Transmit:
; Wait for empty transmit buffer
sbis UCSRA,UDRE
rjmp USART_Transmit
; Put data (r16) into buffer, sends the data
out UDR,r16
ret
Пишем тело (впрочем, можно и копипасту найти):

Код: Выделить всё

call USART_Init
loop:
in r16,PINA
call USART_Transmit
rjmp loop
Для приёмной стороны копипастим USART_Receive.

Re: Мультиплексор программно на ассемблере

Добавлено: Вт фев 14, 2017 14:25:51
BOB51
Это аппаратно!...
Препод весьма злой - не зачтет!
:))

Re: Мультиплексор программно на ассемблере

Добавлено: Вт фев 14, 2017 14:47:58
JustRom
Программных реализаций UART в сети полно. Вот пример одной из: тык
Ну а если препод не дурак, то все-таки догадается, что делал не сам. Я бы на харизме попытался бы подсунуть аппаратную реализацию.