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

📄 main.c

📁 使用MSP430F413的低功耗水表系统
💻 C
字号:
/*******************************************************************************/
/*E2rom 读写改过,可以直接调用,不需控制I/O口状态                              */
/*延时程序修改过,使延时更准确                                                 */
/*E2rom中存小数的地址改过,为0x0000~0x01DF(大小为:SPACE)                      */
/*日期 2008-10-22                                                              */
/*有脉冲是的软件滤波改过                                                       */
/*时间的函数从原来在定时器中调用改到主程序中调用                               */
/*日期 2008-10-24                                                              */
/*E2rom中存小数的地址改过,为0x0000~0x0ff(大小为:SPACE)                       */
/*日期 2008-10-29                                                              */
/*******************************************************************************/
#include<msp430x41x.h>
#include"harddef.h"
#include"variableset.h"
#include"i2c.c"
#include"lcd.c"
#include"lib.c"
#include"uart4800.c"
void main(void) 
{  
  init();  
  while(1)
  {
     if(POWER)//上电检测
      {
        WDTCTL=WDT_ARST_1000;
        RX_NBYTE();
        /*如果uart_mode=0x55 用水量每走过10L 向TCB发送一个数据*/
      if(uart_mode==0x55)
         {
          if(RX!=(wt_who[3]&0x0f))
            {
             read_data_verify_res();
             RX=wt_who[3]&0x0f;
             RX_BYTE();//准备接收串口数据
            }
         }
      }
    while(int_sum)//脉冲处理
      {
       WDTCTL=WDT_ARST_1000;
       int_sum--;//脉冲数减1
       if((constant[0]|constant[1]|constant[2])==0)//constant=0 wt_who+10000.00ml/impulse
       {save_who=_BCD4INC(wt_who);}
       /************************************************/
       else
       {save_who=_BCD6ADD(wt_who,constant);}
       /*保存数据*/
       if(save_who)
         { 
          save_who=0;
          wt_who[7]+=4;
          WRNBYTE_I2C(PEG1,addr_who,wt_who+4,4);//写整数+小数地址
         }
          WRNBYTE_I2C(VAL_PEG,wt_who[7],wt_who,4);//写小数 
      if(lcd_show==0x55)
        {
         LCD_OUT(wt_who);
         if(dir_cnt<5){dir_cnt++;} else {dir_cnt=0;}
         LCDMEM[1]&=0xf0;
         LCDMEM[1]|=(dir[dir_cnt]&0x0f);
         LCDMEM[0]=dir[dir_cnt]|0x0f;
        }
     }
    if(time_t>=TIME1S)
      {
       time_t-=TIME1S;
       _TimeInc(time);
      }
  WDTCTL=WDTPW+WDTHOLD;//关定时器,进入低功耗,等待脉冲
  _BIS_SR(LPM3_bits + GIE); 
 }
}



⌨️ 快捷键说明

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