hiện tại mình muốn dùng msp430G2553, nó có 2 cái timer là timer0_A và timer1_A, tuy nhiên các thanh ghi lệnh lại giống hệt nhau, cho nên bây giờ mình muốn dùng timer1_A để đếm đến 5000 xung, sử dụng xung nội 1Mhz, còn timer0_A kia chạy đồng thời sử dụng xung đưa từ chân P1.0
code đâym thiết lập thanh ghi mình không hiểu rõ lắm
#include<msp430g2553.h>
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1 = CALBC1_1MHZ; // Set range
DCOCTL = CALDCO_1MHZ; // SMCLK = DCO = 1MH, dinh nghia lai tan so dao dong noi la 1Mhz
return 0;
}
P1DIR |=0x32; //cac chan P1.1, P1.4, P1.5 la dau ra
P2DIR |=0x2B; //cac chan P2.0, P2.2, P2.3, P2.5 la dau ra
TACTL = TASSEL_2 + MC_1; //su dung xung SMCLK, che do dem len
TACCTL = CCIE; //cho phép ngat timerA
CCR0 = 5000; //chu ki 5000 lan
P1SEL |= 0x01; //chan P1.0 la ngo vào xung clock TACLK cua Timer0_A
P1SEL2 |=0x01;
__bis_SR_register(LPM0_bits + GIE); //cho phep nhat LPM0
#pragma vector=TIMERA0_VECTOR; //su dung ngat timerA trong suot qua trinh
code đâym thiết lập thanh ghi mình không hiểu rõ lắm
#include<msp430g2553.h>
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1 = CALBC1_1MHZ; // Set range
DCOCTL = CALDCO_1MHZ; // SMCLK = DCO = 1MH, dinh nghia lai tan so dao dong noi la 1Mhz
return 0;
}
P1DIR |=0x32; //cac chan P1.1, P1.4, P1.5 la dau ra
P2DIR |=0x2B; //cac chan P2.0, P2.2, P2.3, P2.5 la dau ra
TACTL = TASSEL_2 + MC_1; //su dung xung SMCLK, che do dem len
TACCTL = CCIE; //cho phép ngat timerA
CCR0 = 5000; //chu ki 5000 lan
P1SEL |= 0x01; //chan P1.0 la ngo vào xung clock TACLK cua Timer0_A
P1SEL2 |=0x01;
__bis_SR_register(LPM0_bits + GIE); //cho phep nhat LPM0
#pragma vector=TIMERA0_VECTOR; //su dung ngat timerA trong suot qua trinh
Comment