TDC-GP2ÓëMSP430F413ͨѶC³ÌÐò ÏÂÔØ±¾ÎÄ

TDC-GP2ÓëMSP430F413ͨѶC³ÌÐò .......................................................... 1 ........................................................................................... 12

TDC-GP2ÓëMSP430F413ͨѶC³ÌÐò

//======================================== #include #include

//#include \

//========================================

#define Init_GP2 0x70 //³õʼ»¯TDC #define Start_Cycle 0x01 //Âö³å·¢ËÍ

#define Start_Temp 0x02 //¿ªÊ¼Î¶ȲâÁ¿ #define Start_Cal_Resonator 0x03 //У׼¾§ÕñʱÖÓ #define Start_Cal_TDC 0x04 //У׼TDC

//¶¨Òå¸÷¹Ü½Å¹¤×÷״̬Ãû³Æ

#define PVCCOn P4OUT |= BIT0 #define PVCCOff P4OUT = 0;

#define SSNEn P3OUT &=~BIT0 // GP2 R/W enable #define SSNDs P3OUT |= BIT0 // GP2 R/W disable #define RSTNHigh P3OUT |= BIT4 #define RSTNLow P3OUT &=~BIT4

#define StartEn P1OUT |= BIT6 // GP2 En_Start #define StartDs P1OUT &=~BIT6

#define StopEn P1OUT |= BIT7 // GP2 En_Stop #define StopDs P1OUT &=~BIT7

#define Up P1OUT |= BIT2 #define Down P1OUT |= BIT3

#define Close P1OUT &=~(BIT2 + BIT3) //ÅäÖÃGP2Á÷Á¿²âÁ¿

//const unsigned char ConfigGP2[23] =

{0x50,0x80,0x37,0x8A,0x68,0x81,0x21,0x44,0x00,0x82,0xE0,0x32,0x00,0x8

1

3,0x08,0x33,0x00,0x84,0x20,0x34,0x00,0x70,0x01};

const unsigned char ReadGP2STAT[3] = {0xB4,0x55,0x55};

const unsigned char ReadRes0[5] = {0xB0,0x55,0x55,0x55,0x55}; const unsigned char ReadRes1[5] = {0xB1,0x55,0x55,0x55,0x55}; const unsigned char ReadRes2[5] = {0xB2,0x55,0x55,0x55,0x55}; const unsigned char ReadRes3[5] = {0xB3,0x55,0x55,0x55,0x55}; //========================================= //ÒÔÏÂΪ³õʼ»¯º¯Êý

void InitialPort(void);//³õʼ»¯¶Ë¿Ú

//ÒÔÏÂΪÄÚ²¿º¯Êý¶¨Ò壬Ïêϸ˵Ã÷¼ûº¯Êý²¿·Ö //======================================= void InitialGP2(void);//³õʼ»¯GP2

void OpCodeGP2 (unsigned char opcode); // д1 Byte op-codes µ½ GP2 void ConfigGP2 (unsigned long data); // ÅäÖÃGP2¼Ä´æÆ÷ void MeasureTemp(void);//ζȲâÁ¿

void ReadGP2ST(void);//¶ÁGP2״̬¼Ä´æÆ÷

void ReadData(unsigned char Count,volatile unsigned char *

point,volatile unsigned char * point_d);//¶ÁGP2½á¹û¼Ä´æÆ÷Êý¾Ý void FireStart(void);// ·¢Ë͵ã»ðÂö³å void CalStart(void);//У׼ʱÖÓ²âÁ¿

void HXOn(void);//Çл»Ð£×¼Ê±ÖÓʱ¸ßËÙ¾§Õñ״̬µ½¿ªÆô void HXOff(void);//Çл»Ð£×¼Ê±ÖÓʱ¸ßËÙ¾§Õñ״̬µ½¹Ø±Õ void NOP10(void);// 10_NOP()»úÆ÷ÖÜÆÚÑÓ³Ù void TempCal(void);//ζÈУ׼²âÁ¿

//======================================= #pragma memory = no_init unsigned long

DisplayData[8];//0:heat,1:cool,2:volume,3:heatKwh,4:volumeL,5:workTime,6:LCDDate,7:LCDTime #pragma memory = default

unsigned char SPITxCount,SPIRxCount; unsigned char SPIMaskBuf[5]; unsigned char Res0[4]; unsigned char Res1[4]; unsigned char Res2[4]; unsigned char Res3[4]; unsigned int GP2ST;

unsigned long T1,T2,T3,T4; unsigned long PT1,PT2; float CorrectFactor;

const float A = 3.862314E-3; const float B = -6.531493E-7;

2

//======================================= union longValue {

unsigned long uWord; unsigned char lByte[4]; };

union intValue {

unsigned int uInt;

unsigned char lByte[2]; };

//======================================= void main(void) {

InitialPort(); _EINT();

SPIRxCount = 0; Delay(50000);

_NOP();

PVCCOn;

InitialGP2(); //³õʼ»¯GP2

while(1) {

//HXOn();

//Delay(5000);

CalStart(); //ʱÖÓУ׼ //HXOff();

//MeasureTemp(); //_NOP(); //TempCal(); //Display(PT1);

//LCDRAM[3] |= 0x80; //StopWTD(); //AdjustLCD(); //RunLCD(); Close; Up;

FireStart(); Close; Down;

3

LPM0;

ReadGP2ST();

ReadData(5,(unsigned char *)ReadRes0,(unsigned char *)Res0); ReadData(5,(unsigned char *)ReadRes1,(unsigned char *)Res1); ReadData(5,(unsigned char *)ReadRes2,(unsigned char *)Res2); ReadData(5,(unsigned char *)ReadRes3,(unsigned char *)Res3); _NOP(); StopWTD(); LPM3;

/*InitialGP2(); Close; Down;

FireStart(); Close; Up;

//LPM0; StopWTD(); LPM3; */ } }

//======================================= //¶Ë¿Ú³õʼ»¯

void InitialPort(void) {

WDTCTL = WDTPW + WDTHOLD; // Stop WDT

//FLL_CTL0 = XCAP14PF; //set load capacitance for 32k xtal //SCFQCTL = SCFQ_4M;

//LCDCTL = LCDON + LCD4MUX + LCDP1; // STK LCD 4Mux, S0-S19 //BTCTL = BTFRFQ0; // STK LCD freq

P5SEL = 0xFC; // Common and Rxx all selected

P4DIR |= BIT0; //PVCC P1SEL |= BIT5;

P1DIR |= BIT2 + BIT3 + BIT5 + BIT6 + BIT7; //P1.2 SW2,P1.3 SW1 //P1.5 32.768kHz Output as GP2 Clock

//P1.6 as GP2 En_Start,P1.7 as GP2 En_Stop

P2DIR |= BIT2 + BIT3; P2IE |= BIT7; P2IES |= BIT7;

4