msp430单片机用定时器A测量方波相位差的程序如何编写真的很急!拜托了!

msp430单片机用定时器A测量方波相位差的程序如何编写真的很急!拜托了!,第1张

这个简单,把两个方波进行异或,用430单片机的定时器A测量异或后的方波的脉冲宽度,在对测量数据进行简单的计算就可得到相位差。。。具体程序如下:
P1SEL
|=
BIT2;
//设置P12端口为功能模块使用
TACTL
|=TACLR;
TACTL
=
TASSEL_2+TAIE+MC1;
//定时器A时钟信号选择SMCLK
8M,清计数寄存器,使能中断,同时设置定时器A计数模式为连续增计模式
CCTL1
=CM0+SCS+CAP+CCIE;
//输入上升沿捕获,同步,capture模式
CCI0A为捕获信号源,中断使能
//TACCTL1
&=~CCIFG;
//清CCR2
的标志位
//中断允许
_EINT();
LPM0;
}
#pragma
vector=TIMERA1_VECTOR
//定时器A中断处理
__interrupt
void
timer_a(void)
{
switch(TAIV)
//向量查询
{
case
2:
//捕获中断
if(CCTL1&CM0)
//上升沿
{
CCTL1=(CCTL1&(~CM0))|CM1;
//更变设置为下降沿触发
start=TACCR1;
//记录初始时间
overflow=0;
//溢出计数变量复位
}
else
if(CCTL1&CM1)
//下降沿
{
CCTL1=(CCTL1&(~CM1))|CM0;
//更变设置为上升沿触发
end=TACCR1;
//用start,end,overflow计算脉冲宽度
TACTL
&=~TAIE;
//不使能中断
CCTL1
&=~CCIE;
P1SEL
&=~BIT2;
_DINT();
LPM0_EXIT;
}
break;
case
10:
//定时器溢出中断
overflow++;
break;
//溢出计数加1
default:break;
}
}
然后再对得到的start,end,overflow处理计算即可。。。

以上就是关于msp430单片机用定时器A测量方波相位差的程序如何编写真的很急!拜托了!全部的内容,包括:msp430单片机用定时器A测量方波相位差的程序如何编写真的很急!拜托了!、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9475596.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存