bác nào biết dùng phần mềm IAR cho msp430 e hỏi cái: lúc em biên dịch bất kì code gì đều chạy tốt , nhưng khi làm với timerA thì trình biên dịch báo sai toàn bộ code đây ạ:
include "msp430x22x4.h"
union reg {
struct bit {
unsigned char b0:1;
unsigned char b1:1;
unsigned char b2:1;
unsigned char b3:1;
unsigned char b4:1;
unsigned char b5:1;
unsigned char b6:1;
unsigned char b7:1;
}_BIT;
unsigned char _BYTE;
};
union reg* _P1_DIRECT = (union reg*)0x22 ;
union reg* _P1_OUT = (union reg*)0x21 ;
int main(void)
{
WDTCTL = WDTPW + WDTHOLD;
_P1_DIRECT->_BYTE = 0x02; // Định nghĩa P1.1 là ngõ ra
TBCCTL0 = CCIE; // Cho phép ngắt Timer_B
TBCCR0 = 50000; // Cho chu kỳ là 50000
TBCTL = TBSSEL_2 + MC_2; // Sử dụng xung clock SMCLK, chế độ tiếp tục
__bis_SR_register(LPM0_bits + GIE); // Cho phép ngắt LPM0
}
#pragma vector=TIMERB0_VECTOR // Sử dụng ngắt Timer_B trong suốt quá trình
__interrupt void Timer_B (void) // Hàm ngắt Timer_B
{
_P1_OUT->_BIT.b1 ^= 1; // P1.1 Xor 1
TBCCR0 = TBCCR0 + 50000; // Thiết lập chu kỳ mới là 50000
}
include "msp430x22x4.h"
union reg {
struct bit {
unsigned char b0:1;
unsigned char b1:1;
unsigned char b2:1;
unsigned char b3:1;
unsigned char b4:1;
unsigned char b5:1;
unsigned char b6:1;
unsigned char b7:1;
}_BIT;
unsigned char _BYTE;
};
union reg* _P1_DIRECT = (union reg*)0x22 ;
union reg* _P1_OUT = (union reg*)0x21 ;
int main(void)
{
WDTCTL = WDTPW + WDTHOLD;
_P1_DIRECT->_BYTE = 0x02; // Định nghĩa P1.1 là ngõ ra
TBCCTL0 = CCIE; // Cho phép ngắt Timer_B
TBCCR0 = 50000; // Cho chu kỳ là 50000
TBCTL = TBSSEL_2 + MC_2; // Sử dụng xung clock SMCLK, chế độ tiếp tục
__bis_SR_register(LPM0_bits + GIE); // Cho phép ngắt LPM0
}
#pragma vector=TIMERB0_VECTOR // Sử dụng ngắt Timer_B trong suốt quá trình
__interrupt void Timer_B (void) // Hàm ngắt Timer_B
{
_P1_OUT->_BIT.b1 ^= 1; // P1.1 Xor 1
TBCCR0 = TBCCR0 + 50000; // Thiết lập chu kỳ mới là 50000
}