#include <msp430f149.h> #include "LCD1602.h" #include <stdio.h> unsigned int N1; unsigned int new_cap=0; unsigned int old_cap=0; long data; float num; const char table1[]="f:"; char buff[60]; void main() { char i; P6DIR |= BIT2;P6OUT |= BIT2; WDTCTL = WDTPW + WDTHOLD; BCSCTL2=SELS+DIVS0+DIVS1; P1DIR&=~(BIT2); P1SEL|=BIT2; LCD1602_Init() ; TACTL=TASSEL_2+MC_2+TAIE+TACLR; TACCTL1=CM_1+SCS+CCIS_1+CAP+CCIE; LCD1602_WriteCMD(0x80); //显示开及光标设置 for(i=0;i<sizeof(table1);i++) LCD1602_WriteDAT(table1[i]); _EINT(); while(1) { data=1000000/data; if(data>1000) { num=data/1000.0; sprintf(buff,"%5.1fKHz",num); } else sprintf(buff,"%ldHz",data); Displaystr(0,3,buff); } } #pragma vector=TIMERA1_VECTOR __interrupt void Timer_A(void) { switch(TAIV) { case 2: new_cap=TACCR1; data=65536*N1+new_cap-old_cap; old_cap=new_cap; N1=0; break; case 4:break; case 10:N1++; break; default:break; } }
|