[P]大哥大姐们,帮我看看这儿哪出问题了啊,仿真不能运行,出错误!!!!急求!!![/P][P] [/P][P] [/P][P]/*实现功能:测量外部信号的频率*/
#include <msp430x14x.h>
#include "cry12864.c"
#define uchar unsigned char
#define uint unsigned int
uint Cap_Tar,pulse,cap_last,cap_fist,time;[/P][P]struct result //定义结构类型
{ unsigned long product; unsigned int sumext;
}MPYresult; //硬件乘法器结果 声明结构变量
unsigned int *p ; //指针声明 [/P][P]void xianshi(unsigned int i)
{ if(i<1000) { uint ptr[6],t1,t2,t3; i=i*100; ptr[0] = (i / 10000); t1 = i - (ptr[0] * 10000); ptr[1] = t1 / 1000; t2 = t1 - (ptr[1] * 1000); ptr[2] = t2 / 100; t3 = t2 - (ptr[2]*100); ptr[4] = t3 / 10; ptr[5] = t3 - (ptr[4]*10); ptr[3] = 0x2e; ptr[0] = ptr[0]+48; ptr[1] = ptr[1]+48; ptr[2] = ptr[2]+48; ptr[4] = ptr[4]+48; ptr[5] = ptr[5]+48; //在液晶上显示变换后的结果 Write_Cmd(0x9c); for(i = 0;i < 6;i++) Write_Data(ptr[I]); } else if(i>1000 & i<10000) { uint ptr[6],t1,t2,t3; i=i*10; ptr[0] = (i / 10000); t1 = i - (ptr[0] * 10000); ptr[1] = t1 / 1000; t2 = t1 - (ptr[1] * 1000); ptr[2] = t2 / 100; t3 = t2 - (ptr[2]*100); ptr[3] = t3 / 10; ptr[5] = t3 - (ptr[3]*10); ptr[4] = 0x2e; ptr[0] = ptr[0]+48; ptr[1] = ptr[1]+48; ptr[2] = ptr[2]+48; ptr[3] = ptr[4]+48; ptr[5] = ptr[5]+48; //在液晶上显示变换后的结果 Write_Cmd(0x9c); for(i = 0;i < 6;i++) Write_Data(ptr[I]); } else if(i>10000) { uint ptr[5],t1,t2,t3; ptr[0] = (i / 10000); t1 = i - (ptr[0] * 10000); ptr[1] = t1 / 1000; t2 = t1 - (ptr[1] * 1000); ptr[2] = t2 / 100; t3 = t2 - (ptr[2]*100); ptr[3] = t3 / 10; ptr[4] = t3 - (ptr[4]*10); ptr[0] = ptr[0]+48; ptr[1] = ptr[1]+48; ptr[2] = ptr[2]+48; ptr[3] = ptr[3]+48; ptr[4] = ptr[4]+48; //在液晶上显示变换后的结果 Write_Cmd(0x9c); for(i = 0;i < 5;i++) Write_Data(ptr[I]); }
}
void main( void )
{ WDTCTL = WDTPW + WDTHOLD; P1DIR = 0x02; P1SEL = BIT1; TACTL = TASSEL_1+MC_2+TAIE+TACLR; TACCTL0 = CM_1+CCIS_0+SCS+CAP+CCIE; Cap_Tar=0; cap_last=0; cap_fist=0; pulse=0; time=0; MPY=1/((1/32768)*time); OP2=pulse; p = (unsigned int*)&(MPYresult.product); *p = RESHI; MPYresult.product = SUMEXT; Ini_Lcd(); xianshi(MPYresult.product); _EINT(); //LPM3;
}[/P][P] [/P][P]
#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA0(void)
{ if(Cap_Tar==0) { cap_fist = TACCR0; Cap_Tar++; } else { cap_last = TACCR0; Cap_Tar++; }
} [/P][P]#pragma vector=TIMERA1_VECTOR
__interrupt void TimerA1(void)
{ switch(TAIV) { case 2: break; case 4: break; case 10: if(Cap_Tar==0) pulse=0; else { pulse=Cap_Tar-1; time = cap_last-cap_fist; Cap_Tar=0; TACTL &=~BIT0; // BIC_SR_IRQ(LPM3_bits); } break; }
}[/P][/I][/I][/I] |