Перейти к содержанию
    

Чтобы прерывание не происходило постоянно нужно или послать что-нибудь в uart или запретить прерывание, если передавать нечего.

 

 

Так если отправить что-то в UART, то после того как он выдаст байт наружу, так сказать, то прерывание снова возникнет. Значит управлять процессом передачи нужно через разрешение\запрещение прерывания. Правильно?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так если отправить что-то в UART, то после того как он выдаст байт наружу, так сказать, то прерывание снова возникнет. Значит управлять процессом передачи нужно через разрешение\запрещение прерывания. Правильно?

Да, разрешаете прерывание если нужно послать несколько байт.

В прерывании шлёте данные, если есть или запрещаете прерывания, если данных нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ясно. А еще такой вопрос: запуск механизма передачи осуществляется автоматически при записи в регистр передачи байта? А после того, как байт полностью передан, в регистре будет 0x00 или там будет тот же байт, который был передан?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А еще такой вопрос: запуск механизма передачи осуществляется автоматически при записи в регистр передачи байта?

Ну да.

А после того, как байт полностью передан, в регистре будет 0x00 или там будет тот же байт, который был передан?

А зачем из него читать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем из него читать?

Мне читать оттуда не надо. Просто интересно что остается в регистре передачи после передачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо всем за помощь. Сегодня провел испытания программы, которая отправляет данные по UART0. Вот такой код на ассемблере получился:

Адрес начала блока отправляемых байт 0x066A
Адрес переменной, хранящей число отправляемых байт 0x0913


PUSH    R4               Освобождаем регистр для счетчика
MOV.B   #0,R4            Обнуляем счетчик для передачи
BIT.B   #0080,&0002      Если передатчик USART0 не готов к передаче, то...
JZ      0F5BE            ...ждем готовности передатчика
MOV.B   066A(R4),&0077   Помещаем очередной байт в регистр для передачи
ADD.B   #1,R4            Увеличиваем счетчик переданных байт
SUB.B   #1,&0913         Уменьшаем число не отправленных байт
JNZ     0F5BE            Если не все байты переданы, то переходим проверке готовности передатчика
POP     R4               Восстанавливаем регистр из стека
RET                      Выходим из функции

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...