⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 基于MSP430的电表终端上的CT检测程序
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -