|
#include"msp430x14x.h"
void main(void)
{
WDTCTL=WDTPW+WDTHOLD; //关闭看门狗
。。。。。。。。。(初始化程序省略)
for(;;) //死循环
{
if(flag_bh==1) //捕获标志位
{ntemp=width; //捕获值传送
flag_bh=0; //标志位置0
ntemp1=ntemp/100; //捕获值 的百位
ntemp2=(ntemp-ntemp1*100)/10; //十位
ntemp3=ntemp-ntemp1*100-ntemp2*10;//个位
if(ntemp>yuzhi) //判断值是否超出预值
{ ShowHZ(5,14,11); //显示“危险”
ShowHZ(5,16,12);
}
else
display(ntemp1,ntemp2,ntemp3); //显示 数值
}
_BIS_SR(LPM3_bits); //低功耗3
}
}
//─────定时器TA的CCR0的中断:用于检测脉冲上升与下降沿────
#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA0(void)
{
if(TACCTL0&CM0) //捕获到上升沿
{
TACTL =TACLR;
TACCTL0=(TACCTL0&(~CM0))| CM1; //改为下降沿捕获:CM0置零,CM1置一
}
else if(TACCTL0&CM1) //捕获到上升沿
{
width = TACCR0; //记录下结束时间
TACCTL0=(TACCTL0&(~CM1))| CM0; //改为上升沿捕获:CM1置零,CM0置一
flag_bh=1; //标志位置一
}
}
// 时钟设置
void init_CLOCK(void)
{
unsigned int i;
BCSCTL1 &= ~XT2OFF;
do
{
IFG1 &= ~OFIFG;
for (i = 256; i > 0; i--);
}
while ((IFG1 & OFIFG) != 0);
BCSCTL2 |= SELM1 + SELS+DIVS_2; //主时钟选8M ,SMCLK选择XT2(8M)4分频
}
程序只是抽取出来的主要部分,液晶显示器能显示,晶振都正常工作,传感器输出的PWM信号也有,捕获输入端用的是P1.1口, 现在遇到的问题是 显示器显示不出来数据,不知道是不是我程序的错误,请高手指教
|
|