Ответ: Вот куски кода на MSP430F149, работает, IAR 2.31C, пробуй...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Antimouse 03 июля 2003 г. 20:28
В ответ на: Не удается настроить MSP430 на работу по прерыванию, при приеме байта(+) отправлено misyachniy 03 июля 2003 г. 19:27

;*************************************************************************************************************
RSEG CSTACK
DS 0
;*************************************************************************************************************
RSEG CODE
;*************************************************************************************************************
RESET_ISR dint
mov #SFE(CSTACK),SP ; define stackpointer
mov #WDTPW+WDTHOLD,&WDTCTL ; Stop Watchdog Timer

call #Init_Sys ; Initialize

Mainloop: cmp.b #0x01, _StartMain
jne Mainloop
call #Channels
clr.b _StartMain
jmp Mainloop ; Repeat for next cycle


;*************************************************************************************************************
Init_Sys; Modules and Control Registers set-up subroutine
;*************************************************************************************************************
;****** Clock Module XT2-HF oscillator Initialization ****************
clr.b &IFG1 ; Clear Interrupt Flag 1
clr.b &IFG2 ; Clear Interrupt Flag 2
bic.b #XT2OFF,BCSCTL1 ; High-Freq Osc
TST_OF bic.b #OFIFG,&IFG1 ; Clear osc. fault int. flag
bit.b #OFIFG,&IFG1 ; Test oscillator fault flag
jnz TST_OF ; Repeat test until flag remains reset
bic.b #OFIFG,&IFG1 ; Clear osc. fault int. flag
mov.b #(SELM1+SELS),&BCSCTL2 ; Select now XT2 clock
; XT2CLK signal was selected for SMCLK source
; SMCLK is divided by 1
; MCLK is divided by 1
; ACLKGEN module can not be used by XT2 oscillator

;****** Ports Settings ********************************************
...
...
...
;****** UART Mode Settings ********************************************

; 115200 baud, 8 data bits, no parity, 1 stop bit
bic.b #SWRST, &UCTL0 ; reset SWRST bit
mov.b #0x10, &UCTL0 ; 8 data bits, no parity, 1 stop bit
mov.b #0x45, &UBR00 ;
mov.b #0x00, &UBR10 ; 8000000 / 115200
mov.b #0xAA, &UMCTL0 ; 50 x 50
mov.b #0x20, &UTCTL0 ; SMCLK
mov.b #0x00, &URCTL0 ; reset receive error control register
bis.b #0xC0, &ME1 ; enable USART transmit & receive
bis.b #URXIE0,&IE1 ; enable USART receive interrupt
; bis.b #UTXIE0,&IE1 ; enable USART transmit interrupt
mov.b #0x30, &P3SEL ; Pin P3.4, P3.5 used by USART module
mov.b #0x10, &P3DIR ; Pin P3.0, P3.4 is output

eint ; General Interrupt Enable
ret ; Return from subroutine

;*******************************************************************
UART0_RX:
push SR
bit.b #BIT0, URCTL0 ; Is error occured?
jnz ProcRxError
ProcRxError:
mov.b &RXBUF0, _TEMP ; reading only for reset error flag !!!
clr _SUBMODE
mov.b #0x01, _STATUSB
bis.b #URXIE0, &IE1 ; Enable USART receive interrupt
bic.b #URXIFG0,&IFG1
pop SR
reti
;************************************************

; вектор UART0_RX:

ORG UART1RX_VECTOR
DW UART1_RX

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru