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

📄 lib.c

📁 使用MSP430F413的低功耗水表系统
💻 C
字号:
/************************************************************/
/*功能描述:发送一个字节数据 发送的数据放在RXTXDATA中       */
/*函数说明:设定好参数后  通过 TIME0 发送数据               */
/*调用函数:                                                 */
/*全局变量: RXTXDATA                                        */
/************************************************************/
void TX_BYTE (void)
{
  BitCnt = 0xA;//1STA+8DATA+1结束
  CCR0=TAR+Bitimem;                           
  RXTXDATA |= 0x100;                        
  RXTXDATA = RXTXDATA << 1;                 
  CCTL0 = OUTMOD0 + CCIE;                   
  while ( CCTL0 & CCIE );                   // 等待发送结束
}
/************************************************************/
/*功能描述:准备接收一个字节数据                            */
/*函数说明:                                                */
/*调用函数:                                                 */
/*全局变量:                                                 */
/*输入:                                                     */
/************************************************************/
void RX_BYTE (void)
{
  BitCnt = 0x8;     // 接收数据长度
  CCTL0 = SCS + CCIS0 + OUTMOD0 + CM1 + CAP + CCIE;
  //while ( CCTL0 & CCIE );
}

/************************************************************/
/*功能描述:初始化                                          */
/*函数说明:                                                */
/*调用函数: 无                                              */
/*全局变量:   spanl  int_sum                                */
/*输入:                                                     */
/************************************************************/
void init(void)
{
    WDTCTL=WDT_ARST_1000;
    FLL_CTL0 |= XCAP14PF;
    P1IES|=BIT5;//下降沿有效
    P1IE|=BIT5;//开脉冲中断
    P1IES&=~BIT2;//上升沿有效
    P1IE|=BIT2;//开上电检测中断
    TACTL = TASSEL_1 + MC_2;//ACLK  
    CCTL0 = OUT;
    P1SEL = TXD + RXD;       //P1.0,1.1定为外设
    RX_BYTE();//串口接收初始化
    CCR1=TAR+time_20msl;
    CCTL1=CCIE;//开定时器1,定时200MS
    LCD_CLR();//液晶清零 
    
    /*WRNBYTE_I2C(PEG1,addr_who,&wt_who[4],4);//存整数+小数地址 
    WRNBYTE_I2C(VAL_PEG,wt_who[7],wt_who,4);//存后两位
    WRNBYTE_I2C(PEG1,a_addr,&addr,1);//读addr+span+const
    WRNBYTE_I2C(PEG1,constant_addr,constant,3);
    WRNBYTE_I2C(PEG1,show_mode_addr,&show_mode,1);
    WRNBYTE_I2C(PEG1,lcd_show_addr,&lcd_show,1); 
    WRNBYTE_I2C(PEG1,password_addr,password,3);
    WRNBYTE_I2C(PEG1,uart_mode_addr,&uart_mode,1);*/
    
    RDNBYTE_I2C(PEG1,addr_who,wt_who+4,4);//读整数+小数地址
    RDNBYTE_I2C(VAL_PEG,wt_who[7],wt_who,4);//读小数
    RDNBYTE_I2C(PEG1,a_addr,&addr,1);//读地址
    RDNBYTE_I2C(PEG1,constant_addr,constant,3);//读表常数
    RDNBYTE_I2C(PEG1,show_mode_addr,&show_mode,1);//读显示模式
    RDNBYTE_I2C(PEG1,password_addr,password,3);//读密码
    RDNBYTE_I2C(PEG1,lcd_show_addr,&lcd_show,1);//读LCD显示模式
    RDNBYTE_I2C(PEG1,uart_mode_addr,&uart_mode,1);//读串口发送模式
    RX=wt_who[3]&0x0f;//读10L位上的值
    span1=SPAN;//脉冲宽度限制
    addr&=0x07;
    show_mode&=0x01;    
    if(lcd_show==0x55)
     {        
        LCDCTL = LCDP1+LCD4MUX+LCDON;             // 4-Mux LCD, segments S0-S19
        BTCTL  = BTFRFQ1;                         // Set freqLCD = ACLK/128
        P5SEL  = 0xFC;                            // Set Rxx and COM pins for LCD
        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;
     }
     else
     {
      LCDCTL=0;
      BTCTL=0;
      P5SEL=0;
     }
  rest=0;
  WDTCTL=WDT_ARST_1000;
}

⌨️ 快捷键说明

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