Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shamr_voprosy.docx
Скачиваний:
6
Добавлен:
26.06.2024
Размер:
161.73 Кб
Скачать
  1. Инициализация usart. Асинхронные коммуникационные форматы.

Инициализация USART (универсальный синхронно-асинхронный приемопередатчик) в микроконтроллере или микропроцессоре включает в себя настройку соответствующих регистров и параметров, чтобы обеспечить правильную работу асинхронной коммуникации между устройствами. Асинхронная коммуникация представляет собой метод передачи данных, где информация передается без использования внешней тактовой синхронизации.

Вот основные шаги для инициализации USART и настройки асинхронного коммуникационного формата:

  1. Настройка скорости передачи (битрейта): Определите желаемую скорость передачи данных. Битрейт измеряется в битах в секунду (бод). Настройте регистры USART для установки правильного значения скорости передачи. Обычно это делается путем настройки делителя частоты или выбора определенной скорости передачи из заданного набора предустановленных значений.

  2. Установка формата кадра: Определите формат кадра, который будет использоваться для передачи данных. Формат кадра включает в себя количество бит данных, биты контроля четности (если применимо) и количество стоп-битов. Настройте соответствующие регистры USART для установки правильного формата кадра.

  3. Настройка режима передачи и приема: Определите, будет ли USART работать в режиме полудуплекса (однонаправленный обмен данными) или в режиме полного дуплекса (двунаправленный обмен данными). В режиме полудуплекса один устройство может передавать данные, а другое может их принимать, но не одновременно. В режиме полного дуплекса оба устройства могут одновременно передавать и принимать данные.

  4. Включение прерываний (опционально): Если необходимо обрабатывать прерывания при получении или передаче данных, настройте соответствующие прерывания USART. Это позволит микроконтроллеру автоматически вызывать прерывания и выполнять определенный код при возникновении событий, таких как завершение передачи или прием данных.

  5. Включение USART: Включите USART, чтобы он начал функционировать. Это обычно выполняется путем установки соответствующего флага или бита в регистре управления USART.

После инициализации USART микроконтроллер будет готов к передаче и приему данных в выбранном асинхронном коммуникационном формате. Для передачи данных используются специальные регистры, а для чтения принятых данных можно использовать другие регистры или прерывания, в зависимости от выбранного подхода и режима работы.

Важно отметить, что конкретные регистры и биты для настройки USART могут различаться в зависимости от используемого микроконтроллера или микропроцессора. Рекомендуется обратиться к документации производителя или руководству пользователя для получения подробной информации о настройке USART и асинхронного коммуникационного формата для конкретного устройства.

Задачи mcs-51 на языке Ассемблера

Вариант 1. Рассчитать значение функции Y = 15х+10 ( х изменяется в интервале от 5 до 20 с шагом 1). Результат разместить в РПД с адреса 40h (в массив последовательно занести сначала младший, а затем старший байт результата).

ORG 0 ; Установка начального адреса

MOV R0, #5 ; Загрузка начального значения x в R0

MOV R1, #40h ; Загрузка адреса начала массива в R1

CALCULATE_LOOP:

MOV A, R0 ; Перемещение значения x в аккумулятор A

MOV B, #15 ; Загрузка значения 15 в регистр B

MUL AB ; Умножение значения x на 15

ADD A, #10 ; Добавление 10 к результату

MOV @R1, A ; Сохранение результата в памяти

INC R1 ; Увеличение указателя на 1 байт для следующего элемента

INC R0 ; Увеличение значения x на 1

CJNE R0, #20, CALCULATE_LOOP ; Сравнение значения x с верхней границей и переход на CALCULATE_LOOP, если x <= 20

EXIT:

SJMP EXIT ; Бесконечный цикл для завершения программы

END ; Конец программы

Вариант 2. Рассчитать значение функции Y = 3Х+15 ( х изменяется в интервале от 10 до 100 с шагом 10). Результат разместить в РПД с адреса 30h (в массив последовательно занести сначала младший, а затем старший байт результата).

ORG 0 ; Установка начального адреса

MOV R0, #10 ; Загрузка начального значения x в R0

MOV R1, #30h ; Загрузка адреса начала массива в R1

CALCULATE_LOOP:

MOV A, R0 ; Перемещение значения x в аккумулятор A

MOV B, #3 ; Загрузка значения 3 в регистр B

MUL AB ; Умножение значения x на 3

ADD A, #15 ; Добавление 15 к результату

MOV @R1, A ; Сохранение результата в памяти

INC R1 ; Увеличение указателя на 1 байт для следующего элемента

MOV A, R0

ADD A, #10 ; Увеличение значения x на 10

MOV R0, A

CJNE R0, #100, CALCULATE_LOOP ; Сравнение значения x с верхней границей и переход на CALCULATE_LOOP, если x <= 100

EXIT:

SJMP EXIT ; Бесконечный цикл для завершения программы

END ; Конец программы

Вариант 3. Рассчитать значение функции Y = 5Х - 50 ( х изменяется в интервале от 0 до 20 с шагом 2). Результат разместить в РПД с адреса 30h.

ORG 0 ; Установка начального адреса

MOV R0, #0 ; Загрузка начального значения x в R0

MOV R1, #30h ; Загрузка адреса начала массива в R1

CALCULATE_LOOP:

MOV A, R0 ; Перемещение значения x в аккумулятор A

MOV B, #5 ; Загрузка значения 5 в регистр B

MUL AB ; Умножение значения x на 5

SUBB A, #50 ; Вычитание 50 из результата

MOV @R1, A ; Сохранение результата в памяти

INC R1 ; Увеличение указателя на 1 байт для следующего элемента

INC R0

INC R0

CJNE R0, #20, CALCULATE_LOOP ; Сравнение значения x с верхней границей и переход на CALCULATE_LOOP, если x <= 20

EXIT:

SJMP EXIT ; Бесконечный цикл для завершения программы

END ; Конец программы