利用MSP430定时器A测量脉冲宽度

来源:本站
导读:目前正在解读《利用MSP430定时器A测量脉冲宽度》的相关信息,《利用MSP430定时器A测量脉冲宽度》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《利用MSP430定时器A测量脉冲宽度》的详细说明。
简介:利用MSP430定时器A测量脉冲宽度

1-程序描述

利用MSP430单片机定时器A和捕获/比较功能模块结合使用,实现脉冲宽度的测量。

本例程用到了定时器A的CCI1A端口(例如MSP430F14X的P1.2引脚)作捕获外部输入的脉冲电平跳变,同时结合简单的软件算法就能实现脉冲宽度的测量。在实际应用中可根据例程中的start,end,overflow三个变量来计算脉冲宽度。此功能模块在实际产品应用中体现出有较高的应用价值。

2-例程

#include <msp430x14x.h>

unsigned int start,end;

unsigned char overflow;

void main (void)

{

WDTCTL= WDTPW+WDTHOLD;//关闭看门狗定时器

P1DIR = BIT0+BIT4;//设置P1.0方向为输出

P1SEL = BIT2;//设置P1.2端口为功能模块使用

TACTL = TASSEL0+TACLR+TAIE+MC1;//定时器A时钟信号选择ACLK,同时设置定时器A计数模式为连续增计模式

CCTL1 = MC0+SCS+CAP+CCIE;//输入上升沿捕获,CCI0A为捕获信号源

_EINT();//中断允许

while(1);//LOOP

}

#pragma vector=TIMERA1_VECTOR//定时器A中断处理

__interrupt void timer_a(void)

{

switch(TAIV)//向量查询

{case2://捕获中断

if(CCTL1&CM0)//上升沿

{

CCTL1=(CCTL1&(~CM0))|CM1;//更变设置为下降沿触发

start=TAR;//记录初始时间

overflow=0;//溢出计数变量复位

}

else if (CCTL1&CM1)//下降沿

{

CCTL1=(CCTL1&(~CM1))|CM0;//更变设置为上升沿触发

end=TAR;//用start,end,overflow计算脉冲宽度

}

break;

case 10://定时器溢出中断

overflow++;

break;//溢出计数加1

default:break;

}

}

提醒:《利用MSP430定时器A测量脉冲宽度》最后刷新时间 2024-03-14 01:13:45,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《利用MSP430定时器A测量脉冲宽度》该内容的真实性请自行鉴别。