|
#include <msp430G2553.h>
#include "N5110.h"
int ccr1_num[2]={0};
int num=0;
int flag=0;
int ccr1_jian[10]={0};
int sum_flag=0;
int data=0;
void main()
{
// int i=0;
WDTCTL = WDTPW + WDTHOLD;//关闭看门狗0
TACTL|=TASSEL_1+TAIE+MC_2+TACLR;//SMCLK 作为时钟源,开中断,增计数模式
TACCTL0|=CM_1+SCS+CAP+CCIE+CCIS_0;//上升沿触发,同步捕获,捕获模式,允许中断
/* BCSCTL1 &= ~XT2OFF; //打开XT2高频晶体振荡器
do
{
IFG1 &= ~OFIFG; //清除晶振失败标志
for (i = 0xFF; i > 0; i--); //等待8MHz晶体起振
}
while ((IFG1 & OFIFG)); //晶振失效标志仍然存在?
BCSCTL2 |= SELM_2 + SELS; //MCLK和SMCLK选择高频晶振*/
N5110_init();
P1DIR &= ~BIT0;//捕获通道
P1SEL |= BIT0;
_EINT();
while(1)
{
N5110_add_xy(0,1);
N5110_led_int(data);
}
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)//捕获到上升沿,触发中断
{
N5110_add_xy(0,0);
N5110_led_int(22);
ccr1_num[num]=CCR1;
num++;
if(num==2)
{
num=0;
if(ccr1_num[0]<ccr1_num[1])//前一次计数小于后一次计数,未溢出
{
ccr1_jian[flag]=ccr1_num[1]-ccr1_num[0];
}
else // ccr1寄存器溢出
{
ccr1_jian[flag]=(65535-ccr1_num[0])+ccr1_num[1];
}
flag++;
sum_flag+=ccr1_jian[flag];
if(flag==9)
{
flag=0;
data=sum_flag/10;//取十次求平均
}
}
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
该献的血还是要献的。你不献他不献。难道让我去献? --- 出自坛友:lovejp1981
|