msp430f449测方波周期、频率、占空比程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include "12864c.h"

#define uint unsigned int

#define uchar unsigned char

void xians4(uchar x,uchar y2,uint shu1);

uint shu1,i;

uint new_cap=0;

uint old_cap=0;

uint cap_diff=0;

uint cap_diff2=0,down_cap;

void main( void )

{

WDTCTL = WDTPW + WDTHOLD;

for(i=0;i<20000;i++)

{}

P1DIR=0x20;//把P1.5设置为输出,P1.0设置为输入

P1SEL=0x21;//把P1.5设置为外围模块功能aclk,P1.0为外围模块功能TA0

P3DIR=0xff;

init_lcd();

FLL_CTL1|=FLL_DIV_8;//把aclk8分频

CCTL0=CM_1+SCS+CCIS_0+CAP+CCIE;//上升沿+同步+CCI0A(P1.0信号源)+捕获功能+捕获中断允许

TACTL=TASSEL_2+MC_2;//SMCLK时钟+增计数模式

_BIS_SR(LPM0_bits+GIE);

xians4( 0, 0, cap_diff );

}

void xians4(uchar x,uchar y2,uint shu1)

{

uint ge,shi,bai,qian,wan;

lcd_xy(x,y2);

wan=shu1/10000;

qian=shu1/1000%10;

bai=shu1/100%10;

shi=shu1/10%10;

ge=shu1%10;

wr_lcd(dat,wan+0x30);

wr_lcd(dat,qian+0x30);

wr_lcd(dat,bai+0x30);

wr_lcd(dat,shi+0x30);

wr_lcd(dat,ge+0x30);

}

/******************************************************************* 中断处理函数

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

__interrupt void TimerA0(void)

{

if(CCTL1&CM0) //==捕获到上升沿==

{

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

new_cap=TACCR0;

if(new_cap

{

cap_diff=65536+new_cap-old_cap;

}

else

{

cap_diff=new_cap-old_cap;

}

old_cap=new_cap;

}

else if (CCTL1&CM_2) //==捕获到下降沿==

{

down_cap=TACCR0;

CCTL1=(CCTL1&(~CM_2))|CM_1; //==更变设置为上升沿触发== if(old_cap>down_cap)

{

cap_diff2=65536+down_cap-old_cap;

}

else

{

cap_diff2=down_cap-old_cap;

}

}

}

相关文档
最新文档