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

Код Передачи По Usart Для Msp430(Ассемблер)


Рекомендуемые сообщения

Доброго времени суток всем!

Недавно возникла потребность передачи данных из микроконтроллера в ПК. Написал код на ассемблере, опираясь на Code_examples от TI, и то, что получилось, приведено ниже:

#include "msp430F1232.h"

RSEG CSTACK

DS16 0

RSEG CODE

;---------------------------------------------------------------------

; Установка тактирования от кварца

;---------------------------------------------------------------------

RESET mov #SFE(CSTACK),SP

mov #WDTPW+WDTHOLD,&WDTCTL ;OSTANOVKA WDT

BIC #OSCOFF, SR ; tAKTIROVANIE OT KVARCA

BIS.B #XTS, BCSCTL1

L1 BIC.B #OFIFG, &IFG1

MOV #0FFh, R15

L2 DEC R15

JNZ L2

BIT.B #OFIFG, &IFG1

JNZ L1

BIS.B #SELM_3, &BCSCTL2

;--------------------------------------------------------------------

; Инициализация USART

;--------------------------------------------------------------------

mov.b #200,R7

bis.b #SWRST,&UCTL0;

bis.b #030h,&P3SEL; P3.4,5 - USART

bis.b #UTXE0+URXE0,&ME2; Включение передачи и приема

bis.b #CHAR, &UCTL0; Формат данных 8-разрядный

mov.b #SSEL0, &UTCTL0; UCLK=ACLK

mov.b #0100b,&UBR00; 5MHz/19200 = 260.4 = 100000100b

mov.b #0001b,&UBR10;

mov.b #0000, &UMCTL0; Без модуляции

bic.b #SWRST,&UCTL0; Сброс USART не включен

bis.b #URXIE0+UTXIE0,&IE2

bis.b #UTXIFG0,&IFG2; Флаг гтовности к прерыванию

Loop bis.w #LPM3+GIE,SR

nop

jmp Loop

;-------------------------------------------------------------------

USART0TX_ISR;

;-------------------------------------------------------------------

mov.b R7, &TXBUF0;

reti

;--------------------------------------------------------------------

; Векторы прерываний

;--------------------------------------------------------------------

COMMON INTVEC

ORG RESET_VECTOR

DW RESET

ORG USART0TX_VECTOR

DW USART0TX_ISR

END.

Из программы видно, что я просто хочу передать содержимое R7 в ПК. Трудность заключается в том, что это значение передается не всегда. Запускаю программу, которая считывает информацию с com порта (программа работает 100% правильно), она в тестовый файл записывает значение 200(правильное значение). В следующий раз, после перезапуска программы, в текстовый файл она записывает величину 14. Потом снова 200. И я не пойму, что с ней происходит! Кто знает, отзовитесь пожалуйста :)

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

  • 2 недели спустя...

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Вот это непонятно зачем:

bis.b #UTXIFG0,&IFG2; Флаг гтовности к прерыванию

Как только буфер передатчика становится пустым флаг выставляется автоматически.

В остальном проблем с настройками сходу не заметил, кроме того что в регистр модуляции вписать "4". Если есть осциллограф, то посмотрите на нём что передаётся. Проверьте кабель. Можно попробовать понизить скорость.

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

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

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...