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

Dx Portal Код Передачи По 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. И я не пойму, что с ней происходит! Кто знает, отзовитесь пожалуйста http://forum.cxem.net/public/style_emoticons/default/smile.png

Раздел: Алгоритмы

 

Читать дальше

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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

Загрузка...
×
×
  • Создать...