|
請(qǐng)教壇里各位資深前輩、老師們,幫我看看為什么我配置的定時(shí)器時(shí)間不準(zhǔn),開(kāi)發(fā)板是149,高速晶體為8M,P2.7連接LED,利用定時(shí)器A實(shí)現(xiàn)每隔num2秒,LED翻轉(zhuǎn)一次。現(xiàn)在的問(wèn)題就是如果計(jì)數(shù)模式我設(shè)置成MC_1增計(jì)數(shù),定時(shí)器直接進(jìn)不了中斷,或者只能進(jìn)入一次,再就是我配置為連續(xù)計(jì)數(shù)模式后,主程序里放的位置不同,LED的閃爍時(shí)間就不同,不知道什么原因,在此感激各位前輩!
void main()
{
WDTCTL = WDTPW + WDTHOLD;
CLOCK_Init();
PORT_Init();
/* TACTL = TASSEL_2 + ID_3 + MC_2 + TAIE + TACLR; // 這段注釋的定時(shí)器配置放在此處和放在主程序while()里,
CCTL1 = CCIE; // P2.7端口LED的閃爍時(shí)間不一樣
CCR1 = 9999; */
_EINT();
while(1)
{
TACTL = TASSEL_2 + ID_3 + MC_2 + TAIE + TACLR; // 8M 晶體 8分頻 連續(xù)計(jì)數(shù)
CCTL1 = CCIE;
CCR1 = 9999; // CCR1 為 定時(shí)0.01秒
KEY_SCAN(); //按鍵檢測(cè)
KEY_service(); //按鍵服務(wù)函數(shù)
Display_service(); //顯示服務(wù)函數(shù)
Display(); //顯示函數(shù)
if(t == num2) //num2 是時(shí)間設(shè)定顯示函數(shù)里的變量,可以任意取值,num2 =1就是1秒,等于X就是X秒
{
t=0;
P2OUT ^= BIT7;
}
}
}
#pragma vector = PORT1_VECTOR // P2.0中斷函數(shù)
__interrupt void P1_Interrupt()
{
P1IFG=0X00;
PULSE++;
P2OUT ^= 0X01;
_DINT();
}
#pragma vector = TIMERA1_VECTOR
__interrupt void TIMEA1()
{
switch(TAIV)
{
case 2: t++; if(t>num2) t=0; break;
case 4: break;
case 10: break;
}
}
|
|