標(biāo)題: F5529定時(shí)器使用程序詳解 [打印本頁(yè)]
作者: liuzhu 時(shí)間: 2015-9-12 20:13
標(biāo)題: F5529定時(shí)器使用程序詳解
#include <msp430f5529.h>
void main(void)
{
WDTCTL=WDTPW+WDTHOLD;
P1DIR|=(BIT1+BIT2+BIT3+BIT4+BIT5);//P1.1-P1.5為輸出方向
P1OUT=0x00; //全部拉低,初始化LED全滅
TA0CCTL1=CCIE; //捕獲比較器1開啟CCIFG位中斷
TA0CCR1=13107; //置入要比較的數(shù)值0xff/5=13107
TA0CCTL2=CCIE; //捕獲比較器2開啟中斷
TA0CCR2=26214; //13107*2=26214
TA0CCTL3=CCIE; //捕獲比較器3開啟中斷
TA0CCR3=39321; //13107*3=39321
TA0CCTL4=CCIE; //捕獲比較器4開啟中斷
TA0CCR4=52428; //13107*4=52428
TA0CTL|=TACLR+TAIE; //開啟中斷并清零
TA0CTL|=TASSEL_1+MC_2+TAIE;//選擇SCLK32.768KHZ作為時(shí)鐘,選用連續(xù)模式,并開啟中斷
/*這樣的話,5個(gè)燈閃一遍的時(shí)間為0xffff/32768=2S*/
__enable_interrupt(); //開啟總中斷
while(1);
}
/*TIMER0_A0_VECTOR是計(jì)時(shí)器0的CCR0的中斷寄存器,TIMER0_A1_VECTOR是計(jì)時(shí)器0的CCR1-CCR4、TA的寄存器*/
/*同理定時(shí)器TA1也是分為兩個(gè)TIMER1_A0_VECTOR和TIMER1_A1_VECTOR*/
#pragma vector=TIMER0_A1_VECTOR
__interrupt void TimerA(void)
{
switch(__even_in_range(TA0IV,14))
/* 這句話的意思是:只有在TA0IV的值是在0--14內(nèi)的偶數(shù)時(shí)才會(huì)執(zhí)行switch函數(shù)內(nèi)的語(yǔ)句
其作用是提高switch語(yǔ)句的效率*/
{
case 2:P1OUT=BIT1;break; //TACCR1 CCIFG置位,表明計(jì)數(shù)值和設(shè)定的13107相等了,也就是說(shuō)計(jì)了0.4S了
case 4:P1OUT=BIT2;break; //TACCR2 CCIFG置位,表明計(jì)了0.8S了
case 6:P1OUT=BIT3;break; //TACCR3 CCIFG置位,表明計(jì)了1.2S了
case 8:P1OUT=BIT4;break; //TACCR4 CCIFG置位,表明計(jì)了1.6S了
case 14:P1OUT=BIT5;break; //TAIFG置位,表明計(jì)了2S了
default:break;
}
}
作者: fuliang 時(shí)間: 2015-10-18 00:51
謝謝了
作者: 戴博博 時(shí)間: 2016-4-10 10:50
不錯(cuò)謝謝了~~~~~~~~~
作者: daihx 時(shí)間: 2016-7-24 18:38
謝謝!贊!
作者: upcink 時(shí)間: 2017-7-14 16:28
厲害
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |