Цитата(Itachi @ Nov 9 2011, 10:47)

эта программа написана на основе примера с сайта, ссылку на который вы мне дали.
Когда вы модифицируете чужой исходник, выкидывая из него строки, то желательно при этом понимать,
что именно произойдет в результате ваших действий. Вот исходник который вы покоцали. Найдите шесть отличий.
CODE
;**********************************************************************
#include <msp430x14x.h>
;------------------------------------------------------------------------------
ORG 01100h ; Program Start
;------------------------------------------------------------------------------
RESET mov.w #0A00h,SP ; Initialize stackpointer
StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT
SetupP1 bis.b #001h,&P1DIR ; P1.0 output
SetupC0 mov.w #CCIE,&CCTL0 ; CCR0 interrupt enabled
mov.w #20000,&CCR0 ;
SetupTA mov.w #TASSEL_2+MC_1,&TACTL ; SMCLK, upmode
;
Mainloop bis.w #CPUOFF+GIE,SR ; CPU off, interrupts enabled <=== здесь разрешаются прерывания
nop ; Required for debugger
;
;------------------------------------------------------------------------------
TA0_ISR; Toggle P1.0 <=== это метка функции обработчика прерывания TIMERA0_VECTOR
;------------------------------------------------------------------------------
xor.b #001h,&P1OUT ; Toggle P1.0 <== это
reti ; <== и это функция обработки прерывания
;
;-----------------------------------------------------------------------------
; Interrupt Vectors
;-----------------------------------------------------------------------------
ORG 0FFFEh ; MSP430 RESET Vector
DW RESET ;
ORG 0FFECh ; Timer_A0 Vector
DW TA0_ISR ; <== здесь указывается адрес функции обработки прерывания, который вы выкинули
END
Кроме того, в вашем примере в цикл mainloop попали команды инициализации таймера. Хотя инициализировать его достаточно всего один раз.
Еще раз предлагаю вам взять карандаш и
нарисовать блок-схему вашего алгоритма на бумаге. Поверьте на слово ЭТОТ способ гораздо эффективнее, чем перемешивание некой "каши" в голове.