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

📄 uart.c

📁 基于430单片机的涡街流量计设计程序。可以使用
💻 C
字号:
//UART0 receive
char RXD_COEFFIENT;                         // 判断是否在接收修正系数标志位
char urx_data[4];
char RXDcount;                              // 接收到的数据个数
/**************************************************************************************
函数原型: void UART0RX(void)
函数功能: 通过UART0接受数据
调用函数:无
入口参数: 无
出口参数: 无
***************************************************************************************/ 
#if VERSION>126
#pragma vector=UART0RX_VECTOR
__interrupt void UART0RX(void)
#else
interrupt[UART0RX_VECTOR]void UART0RX(void)
#endif
{
  /*
  char  rev_data;
  char  verify;
  
  rev_data = RXBUF0;
  
  _DINT();
  
 //-----------------------------------------不是在接收修正系数------------------------------------------//
  if(RXD_COEFFIENT==0)
  {
        if(rev_data==0xAA)                  //擦除存放系数的FLASH_B段
        {
              FLASH_CLR(ptrFCoefficient);
              COEFFICIENT = 0;              //不存在拟和系数
              TXBUF0 = 0xFF;
              while (!(IFG1 & UTXIFG0));    //判断是否可以禁止发送
                    
        }
        else if(rev_data==0xBB)             // 接受到修正系数头码,下面开始接收涡街口径和修正系数
        {
              ptrChCoefficient = (unsigned char *)FLASH_A;//存放流量拟和系数
              RXD_COEFFIENT = 1;            // 置接收修正系数标志
              RXDcount = 0;            
              TXBUF0 = 0xFF;
              while (!(IFG1 & UTXIFG0));    //判断是否可以禁止发送
        }
  }
  //---------------------------------------接收涡街口径和修正系数--------------------------------------//
  else
  {
        RXDcount++;
        if((RXDcount%5==0)&&(RXDcount!=0))
        {
              verify = urx_data[0] ^ urx_data[1] ^ urx_data[2] ^ urx_data[3];
              if(verify==rev_data)
              {
                    for(i=0;i<4;i++)
                    {
                          Write_unchar_FLASH(ptrChCoefficient,urx_data[i]);
                          ptrChCoefficient++;
                    }
                    TXBUF0 = 0xFF;
                    while (!(IFG1 & UTXIFG0));   //判断是否可以禁止发送
                    if(RXDcount==15)
                    {
                          Write_unchar_FLASH(ptrChCoefficient,0xAA);
                          ptrFCoefficient = (float *)FLASH_A;   //指向存放流量上限的地址
                          RXD_COEFFIENT = 0;
                          COEFFICIENT = 1;  
                          Diameter = *ptrFCoefficient;
                          Meter_coeffient = *(ptrFCoefficient+1);
                          Density = *(ptrFCoefficient+2);
                    }
              }
              else 
              {
                    TXBUF0 = 0xEE;
                    while (!(IFG1 & UTXIFG0));//判断是否可以禁止发送
                    RXDcount -= 5;
              }
        }
        else
        {
              urx_data[RXDcount%5-1] = rev_data;
        }
  }
  _EINT();
  */
}

⌨️ 快捷键说明

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