MSP430F5438學(xué)習(xí)筆記1-定時器
例子:比較模式就像51單片機一樣,要能夠軟件設(shè)置定時間隔來產(chǎn)生中斷處理一些事情,如鍵盤掃描,也可以結(jié)合信號輸出產(chǎn)生時序脈沖發(fā)生器,PWM信號發(fā)生器。如:不斷裝載TACCRx,啟動定時器,TAR和TACCRx比較產(chǎn)生中斷處理。
捕獲模式:
捕獲模式的應(yīng)用:
例子:利用兩次捕獲的值來測量脈沖的寬度。或捕獲選擇任意沿,CCISx=”11“(輸入選擇VCC),這樣即當(dāng)VCC與GND發(fā)生切換時產(chǎn)生捕獲條件
結(jié)合利用:異步通訊
同時應(yīng)用比較模式和捕獲模式來實現(xiàn)UART異步通信。即利用定時器的比較模式來模擬通訊時序的波特率來發(fā)送數(shù)據(jù),同時采用捕獲模式來接收數(shù)據(jù),并及時轉(zhuǎn)換比較模式來選定調(diào)整通信的接受波特率,達到幾首一個字節(jié)的目的
-------------------------------------------------------------------------------------------------
利用MSP430單片機定時器A和捕獲/比較功能模塊結(jié)合使用,實現(xiàn)脈沖寬度的測量。
2-例程
#include <msp430x14x.h>
unsigned int start,end;
unsigned char overflow;
void main (void)
{
WDTCTL
P1DIR = BIT0+BIT4;
P1SEL = BIT2;
TACTL = TASSEL0+TACLR+TAIE+MC1;
CCTL1 = MC0+SCS+CAP+CCIE;
_EINT();
while(1);
}
#pragma vector=TIMERA1_VECTOR
__interrupt void timer_a(void)
{
switch(TAIV)
{
if(CCTL1&CM0)
{
CCTL1=(CCTL1&(~CM0))|CM1;
start=TAR;
overflow=0;
}
else if (CCTL1&CM1)
{
CCTL1=(CCTL1&(~CM1))|CM0;
end=TAR;
}
break;
case 10:
overflow++;
break;
default:break;
}
}
//例程結(jié)束
評論