|
楼主 |
发表于 2010-7-1 12:20:52
|
显示全部楼层
全部程序,比较乱。现在还没有写成 等精度模式。
#include "msp430x16x.h"
#include "mclk.h"
#include "Cry1602.h"
#include "math.h"
typedef unsigned char uchar;
double cnt[100];
//double cnt;
double temp = 0,i =0;
double sum = 0;
unsigned long freq = 0, n=0;
uchar shuzi[] = {"0123456789"};
uchar dat[] = {"00000.0000"};
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
main()
{
mclk();
BCSCTL2 |=DIVS_3;
P1DIR = 0x00; //ÊäÈë
P1DIR |= 0x10; //P1.4 smclk
P2DIR |= 0xff; //Êä³ö
P1SEL |= 0x02; //P1.1 TA0
P1SEL |= 0x10; // P1.4 special func
P2OUT = 0x00;
LcdReset();
DispNChar(3,0,10,shuzi);
CCTL0 |=CM_1+CCIS_0+SCS+CAP+CCIE; ///ÉÏÉýÑØ+ͬ²½+CCIOB+²¶»ñ¹¦ÄÜ+²¶»ñÖжÏÔÊÐí
TACTL |= TASSEL_1+TAIE+TACLR+MC_1+ID_3;
TBCTL |= TBSSEL_1 + TBCLR + MC_1; // ACLK, clear TAR,up to mode
TBCCTL0 = CCIE; // CCR0 interrupt enabled
TBCCR0 = 32768;
_EINT();
while(1);
}
#pragma vector=TIMERA0_VECTOR
__interrupt void TIMER_A(void)
{
i++;
}
#pragma vector=TIMERB0_VECTOR
__interrupt void TIMER_B(void)
{
TBCTL |= MC_0;
TACTL |= MC_0;
freq = i-1;
freq *= 10000;
dat[0]=freq/100000000+'0';
dat[1]=freq/10000000%10+'0';
dat[2]=freq/1000000%10+'0';
dat[3]=freq/100000%10+'0';
dat[4]=freq/10000%10+'0';
dat[6]=freq/1000%10+'0';
dat[7]=freq/100%10+'0';
dat[8]=freq/10%10+'0';
dat[9]=freq%10+'0';
i = 0;
freq = 0;
LcdWriteCommand(0x01, 1); //clear
DispNChar(0,0,10,dat); // nie,hang,shu
TACTL |= MC_1;
TBCTL |= TBCLR+MC_2;
} |
|