main.c

来自「基于MSP430的电表终端上的CT检测程序」· C语言 代码 · 共 72 行

C
72
字号
#include "mai_define.h"
// 最后修改日期:2006年6月28号
//修改原因: 由终端软件判断短路与开路

void InitMain (void);
void ClkChang (void);
unsigned long int led_count;

int main( void )
{   InitMain();
while(1)
  {
    SPIReset();
    save_all_CT_data();
    clr_wdt();
    load_CT_data();
    clr_wdt();
    CTStateCheck();
    clr_wdt();
    out_led();
  }
}

void InitMain (void)
{ P5SEL|=0x70;        //时钟使能输出
  P5DIR|=0x70;
  P4DIR|=0x70;        //三路信号切换
  ClkChang();
  start_wdt();
  InitSPI();
  P6DIR|=0x38;
  InitTB();
  InitTA();
  flash_init();
  read_flash();
  CT_current_A=0x0ffff;
  CT_current_B=0x0ffff;
  CT_current_C=0x0ffff;
 }

void ClkChang (void)       //时钟操作,MCLK=6M SMCLK=6M ACLK=32768Hz
{WDTCTL=WDTPW+WDTHOLD;
 BCSCTL1 |=XT2OFF;
    do{
        IFG1 &=~OFIFG;
       }
    while(OFIFG&IFG1);      //等待晶振稳定
 BCSCTL2 |=0x40;
 DCOCTL=0xff;
 BCSCTL1 |=0x07;
}



void led_state(void)
{
 led_count++;
 if (led_count>20000)
 {P6OUT^=0x20;led_count=0;}
}

void out_led(void)
{
  unsigned char a;
  a=two_CT_state;
  if((a&0x01)==0x01||(a&0x02)==0x02||(a&0x04)==0x04)
  P6OUT&=0xef;
  else P6OUT|=0x10;
  if((a&0x08)==0x08||(a&0x10)==0x10||(a&0x20)==0x20)
  P6OUT&=0xf7;
  else P6OUT|=0x08;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?