亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? uartintc.c

?? build a modbus client/server for use on the Protocessor (from FieldServer Technologies) Tools Req
?? C
?? 第 1 頁 / 共 2 頁
字號:
         if ( rx_vUARTIntStatus->vUARTIntRxBufDataCnt == (BYTE)RX_BUFFER_SIZE )
            {
            rx_vUARTIntStatus->UARTIntRxBufferFull = 1;
            }
         rx_vUARTIntStatus->vUARTIntRxBufWrPtr++;
         if ( rx_vUARTIntStatus->vUARTIntRxBufWrPtr >= (BYTE)RX_BUFFER_SIZE )
            {
            rx_vUARTIntStatus->vUARTIntRxBufWrPtr = 0;
            }
         }
      }

   //------------------------------------------------------------
   //
   // TX Interrupts
   //

   tx_vUARTIntStatus = &tx_vUARTIntStatus2 ;
   rx_vUARTIntStatus = &rx_vUARTIntStatus2 ;

   if ( PIR3bits.TX2IF & PIE3bits.TX2IE )
      {
      if ( !tx_vUARTIntStatus->UARTIntTxBufferEmpty )
         {
         TXREG2 = tx_vUARTIntStatus->vUARTIntTxBuffer[tx_vUARTIntStatus->vUARTIntTxBufRdPtr];
         // if ( parity )
         //    {
         //    addParityBit(1, vUARTIntStatus->vUARTIntTxBuffer[vUARTIntStatus->vUARTIntTxBufRdPtr]);
         //    }
         tx_vUARTIntStatus->UARTIntTxBufferFull = 0;
         tx_vUARTIntStatus->vUARTIntTxBufDataCnt--;
         if ( tx_vUARTIntStatus->vUARTIntTxBufDataCnt == (UINT)0 )
            {
            tx_vUARTIntStatus->UARTIntTxBufferEmpty = 1;
            }
         tx_vUARTIntStatus->vUARTIntTxBufRdPtr++;
         if ( tx_vUARTIntStatus->vUARTIntTxBufRdPtr >= (BYTE)TX_BUFFER_SIZE )
            {
            tx_vUARTIntStatus->vUARTIntTxBufRdPtr = 0;
            }
         }
      else
         {
         PIE3bits.TX2IE = 0;
#if ( ENABLE_SER2_RS485 == 'Y' )
         while ( TXSTA2bits.TRMT == (BYTE)0 );
         Delay1KTCYx (1) ;   // at 10 Mhz, 1000 instruction cycles delay for 0.4 ms.
         mSetRS485_RTSLow ( P6720SER2 );
#endif
         }
      }

   //------------------------------------------------------------
   //
   // RX Interrupts
   //

   if ( PIR3bits.RC2IF & PIE3bits.RC2IE )
      {
      if ( RCSTA2bits.FERR )
         {   /* FERR error condition */
         chTemp = RCREG2;
         rx_vUARTIntStatus->UARTIntRxError = 1;
         }
      else if ( RCSTA2bits.OERR )
         {   /* OERR error condition */
         RCSTA2bits.CREN = 0;
         RCSTA2bits.CREN = 1;
         chTemp = RCREG2;
         rx_vUARTIntStatus->UARTIntRxError = 1;
         }
      else if ( rx_vUARTIntStatus->UARTIntRxBufferFull )
         {
         chTemp = RCREG2;
         rx_vUARTIntStatus->UARTIntRxOverFlow = 1;
         }
      else if ( !rx_vUARTIntStatus->UARTIntRxBufferFull )
         {
         rx_vUARTIntStatus->UARTIntRxOverFlow = 0;
         rx_vUARTIntStatus->UARTIntRxBufferEmpty = 0;
         rx_vUARTIntStatus->vUARTIntRxBuffer[rx_vUARTIntStatus->vUARTIntRxBufWrPtr] = RCREG2;
         rx_vUARTIntStatus->vUARTIntRxBufDataCnt ++;
         if ( rx_vUARTIntStatus->vUARTIntRxBufDataCnt == (BYTE)RX_BUFFER_SIZE )
            {
            rx_vUARTIntStatus->UARTIntRxBufferFull = 1;
            }
         rx_vUARTIntStatus->vUARTIntRxBufWrPtr++;
         if ( rx_vUARTIntStatus->vUARTIntRxBufWrPtr >= (BYTE)RX_BUFFER_SIZE )
            {
            rx_vUARTIntStatus->vUARTIntRxBufWrPtr = 0;
            }
         }
      }
}


//-----------------------------------------------------------------------------------

BYTE mSetUARTPort(UINT iport, UINT ibaud, UINT iparity)
{

   //static unsigned int iport;

   BYTE baudRate ;

   if ( !mCheckPortHandle(iport) )
      {
      return 0;
      }
   else
      {
      //baudRate = ibaud;
      //parity = iparity;

      if ( ibaud == (BYTE)115 )
         {
         baudRate = ( ( UART_CLOCK_FREQ / 115200 ) / 16 ) - 1 ;
         }
      else
         {
         baudRate = ( ( UART_CLOCK_FREQ / ibaud ) / 16 ) - 1 ;
         }

      if ( iport == (UINT)P6720SER1 )
         {
         RCSTA1bits.SPEN = 0;
         SPBRG = baudRate;
         RCSTA1bits.SPEN = 1;
         }
      else
         {
         RCSTA2bits.SPEN = 0;
         SPBRG2 = baudRate;
         RCSTA2bits.SPEN = 1;
         }

#if 0
      if ( parity )
         {
         if ( iport )
            {
            TXSTA2bits.TX9 = 1;
            RCSTA2bits.RX9 = 1;
            }
         else
            {
            TXSTAbits.TX9 = 1;
            RCSTAbits.RX9 = 1;
            }
         }
#endif
      return 1;
      }
}


//-----------------------------------------------------------------------------------

VOID addParityBit(UINT iport, BYTE b)
{
   BYTE bit0 = (b & 0b00000001);
   BYTE bit1 = (b & 0b00000010);
   BYTE bit2 = (b & 0b00000100);
   BYTE bit3 = (b & 0b00001000);
   BYTE bit4 = (b & 0b00010000);
   BYTE bit5 = (b & 0b00100000);
   BYTE bit6 = (b & 0b01000000);
   BYTE bit7 = (b & 0b10000000);

   BYTE p = (bit0 & bit1 & bit2 & bit3 & bit4 & bit5 & bit6 & bit7);


   mCheckPortHandle(iport);

#if 0
   switch ( parity )
      {
      case 1:
         if ( iport == P6720SER1 )
            {
            TXSTAbits.TX9D = (1-p);break;
            }
         else
            {
            TXSTA2bits.TX9D = (1-p);break;
            }
      case 2:
         if ( iport == P6720SER1 )
            {
            TXSTAbits.TX9D = p;break;
            }
         else
            {
            TXSTA2bits.TX9D = p;break;
            }
      }
#endif
}


//====================================================================================
/*Checks the parity bit returns 0 if parity fails, returns 1 if parity passes*/
BYTE checkParityBit(UINT iport, BYTE b)
{
   BYTE bit0 = (b & 0b00000001);
   BYTE bit1 = (b & 0b00000010);
   BYTE bit2 = (b & 0b00000100);
   BYTE bit3 = (b & 0b00001000);
   BYTE bit4 = (b & 0b00010000);
   BYTE bit5 = (b & 0b00100000);
   BYTE bit6 = (b & 0b01000000);
   BYTE bit7 = (b & 0b10000000);

   BYTE p = (bit0 & bit1 & bit2 & bit3 & bit4 & bit5 & bit6 & bit7);

   mCheckPortHandle(iport);

#if 0
   switch ( parity )
      {

      case 1:
         if ( iport == P6720SER1 )
            {
            if ( TXSTAbits.TX9D == (1-p) )
               {
               return 1;
               }
            else
               {
               return 0;
               }
            }
         else
            {
            if ( TXSTA2bits.TX9D == (1-p) )
               {
               return 1;
               }
            else
               {
               return 0;
               }
            }
         break;

      case 2:

         if ( iport ==P6720SER1 )
            {
            if ( TXSTAbits.TX9D == p )
               {
               return 1;
               }
            else
               {
               return 0;
               }
            }
         else
            {
            if ( TXSTA2bits.TX9D == p )
               {
               return 1;
               }
            else
               {
               return 0;
               }
            }

         break;
      }
#endif
}


//====================================================================================

VOID mDisableUARTTxInt(UINT iport)
{
   mCheckPortHandle(iport);

   if ( iport == (UINT)P6720SER1 )
      {
      PIE1bits.TXIE = 0;
      }
   else
      {
      PIE3bits.TX2IE = 0;
      }
}


//====================================================================================

VOID mEnableUARTTxInt(UINT iport)
{
   mCheckPortHandle(iport);

   if ( iport == (UINT)P6720SER1 )
      {
      PIE1bits.TXIE = 1;
      }
   else
      {
      PIE3bits.TX2IE = 1;
      }
}


//====================================================================================

VOID mDisableUARTRxInt(UINT iport)
{
   mCheckPortHandle(iport);

   if ( iport == (UINT)P6720SER1 )
      {
      PIE1bits.RCIE = 0;
      }
   else
      {
      PIE3bits.RC2IE = 0;
      }
}


//====================================================================================

VOID mEnableUARTRxInt(UINT iport)
{
   mCheckPortHandle(iport);

   if ( iport == (UINT)P6720SER1 )
      {
      PIE1bits.RC1IE = 1;
      }
   else
      {
      PIE3bits.RC2IE = 1;
      }
}


//====================================================================================

VOID mSetUARTRxIntHighPrior(UINT iport)
{
   mCheckPortHandle(iport);

   RCONbits.IPEN = 1;
   if ( iport == (UINT)P6720SER1 )
      {
      IPR1bits.RC1IP = 1;
      }
   else
      {
      IPR3bits.RC2IP = 1;
      }
}


//====================================================================================

VOID mSetUARTRxIntLowPrior(UINT iport)
{
   mCheckPortHandle(iport);

   if ( iport == (UINT)P6720SER1 )
      {
      IPR1bits.RCIP = 0;
      }
   else
      {
      IPR3bits.RC2IP = 0;
      }
}


//====================================================================================

VOID mSetUARTTxIntHighPrior(UINT iport)
{
   mCheckPortHandle(iport);

   RCONbits.IPEN = 1;
   if ( iport == (UINT)P6720SER1 )
      {
      IPR1bits.TXIP = 1;
      }
   else
      {
      IPR3bits.TX2IP = 1;
      }
}


//====================================================================================

VOID mSetUARTTxIntLowPrior(UINT iport)
{
   mCheckPortHandle(iport);

   if ( iport == (UINT)P6720SER1 )
      {
      IPR1bits.TXIP = 0;
      }
#ifdef P18F6720
   else
      {
      IPR3bits.TX2IP = 0;
      }
#endif
}


//====================================================================================

VOID mSetUART_BRGHHigh(UINT iport)
{
   mCheckPortHandle(iport);

   if ( iport == (UINT)P6720SER1 )
      {
      TXSTAbits.BRGH = 1;
      }
   else
      {
      TXSTA2bits.BRGH = 1;
      }
}


//====================================================================================

VOID mSetUART_BRGHLow(UINT iport)
{
   mCheckPortHandle(iport);

   if ( iport == (UINT)P6720SER1 )
      {
      TXSTAbits.BRGH = 0;
      }
   else
      {
      TXSTA2bits.BRGH = 0;
      }
}


//====================================================================================

VOID mSetUARTBaud(UINT iport, UINT iBaudRate)
{

   mCheckPortHandle(iport);

   if ( iport == (UINT)P6720SER1 )
      {
      RCSTAbits.SPEN = 0;
      SPBRG = iBaudRate;
      RCSTAbits.SPEN = 1;
      }
   else
      {
      RCSTA2bits.SPEN = 0;
      SPBRG2 = iBaudRate;
      RCSTA2bits.SPEN = 1;
      }
}

VOID mSetRS485_RTSHigh (UINT iport)
{
   if ( iport == (UINT)P6720SER1 )
      {
      PORTCbits.RC5 = 1 ;
      }
   else
      {
      PORTGbits.RG3 = 1 ;
      }
}

VOID mSetRS485_RTSLow (UINT iport)
{
   if ( iport == (UINT)P6720SER1 )
      {
      PORTCbits.RC5 = 0 ;
      }
   else
      {
      PORTGbits.RG3 = 0 ;
      }

}


//====================================================================================

BYTE mCheckPortHandle(UINT iport)
{
   if ( iport >= (BYTE)PORTS )
      {
      return 0;
      }
   else
      {
      return 1;
      }

}


//====================================================================================

VOID init_timer(VOID)
{
   /* Setting Global interrupt pins */
   INTCONbits.GIEH = 1;
   INTCONbits.GIEL = 1;

   IPR1bits.TMR2IP = 1;                //TMR1 interrupt set to high priority
   PIE1bits.TMR2IE = 1;
   PIR1bits.TMR2IF = 0;

   T2CON = 0b00000111;                // INit timer 2
   PR2   = TMR2_PERIOD_REGISTER;      //Load Timer 1 value


}


//====================================================================================



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精华液一区二区三区| 成人在线视频一区| 中文字幕欧美日本乱码一线二线| 91视频一区二区三区| 老司机精品视频导航| 亚洲综合色网站| 日本一区二区三区视频视频| 日韩色在线观看| 欧美性生交片4| 成人黄色在线网站| 国产麻豆精品在线| 日本特黄久久久高潮| 一区二区三区资源| 国产色产综合产在线视频| 91精品久久久久久久91蜜桃| 91麻豆文化传媒在线观看| 国产麻豆9l精品三级站| 日本不卡视频在线| 亚洲影视资源网| 亚洲乱码国产乱码精品精可以看| 久久噜噜亚洲综合| 欧美大胆人体bbbb| 91精品欧美久久久久久动漫 | 欧美精三区欧美精三区| 91蜜桃网址入口| 成人黄色777网| 高清在线观看日韩| 国产一区二区按摩在线观看| 久久激情综合网| 蜜臀av性久久久久av蜜臀妖精| 亚洲午夜国产一区99re久久| 亚洲激情校园春色| 亚洲日本中文字幕区| 亚洲欧美影音先锋| 国产精品毛片久久久久久| 日本一区二区动态图| 中文字幕国产一区| 国产精品理伦片| 亚洲手机成人高清视频| 日韩一区中文字幕| 亚洲柠檬福利资源导航| 亚洲精品国久久99热| 亚洲最新在线观看| 调教+趴+乳夹+国产+精品| 日本欧美一区二区三区| 免费高清不卡av| 六月丁香婷婷色狠狠久久| 九九**精品视频免费播放| 麻豆精品久久久| 国产精品中文字幕日韩精品| 粉嫩aⅴ一区二区三区四区五区| 成人影视亚洲图片在线| 99国产精品久久久| 欧美午夜在线一二页| 欧美精品久久天天躁| 日韩免费视频一区二区| 久久久久久久综合狠狠综合| 欧美极品xxx| 亚洲欧美偷拍另类a∨色屁股| 亚洲主播在线播放| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产精品亚洲成人| 9l国产精品久久久久麻豆| 欧美亚洲高清一区二区三区不卡| 欧美精品少妇一区二区三区| 精品欧美一区二区在线观看| 国产无人区一区二区三区| 亚洲欧美一区二区三区孕妇| 天天操天天干天天综合网| 狠狠网亚洲精品| jlzzjlzz欧美大全| 欧美夫妻性生活| 国产日韩精品一区二区三区 | 丝袜亚洲另类欧美| 国产在线麻豆精品观看| 99久久99久久精品免费看蜜桃| 欧美日韩国产首页在线观看| 欧美刺激午夜性久久久久久久| 国产精品无圣光一区二区| 亚洲国产综合色| 成人影视亚洲图片在线| 欧美男男青年gay1069videost| 久久久久久久久久美女| 亚洲精品久久嫩草网站秘色| 激情小说亚洲一区| 欧洲精品一区二区| 久久日韩粉嫩一区二区三区| 亚洲综合视频在线观看| 国产成人在线电影| 欧美精品久久久久久久多人混战| 国产婷婷一区二区| 日韩av高清在线观看| 99精品视频一区二区| 精品成人私密视频| 丝袜美腿高跟呻吟高潮一区| 成人免费视频一区| 日韩欧美国产麻豆| 亚洲最新在线观看| 高清国产午夜精品久久久久久| 91精品国产福利| 一区二区视频在线| 成人免费毛片app| 日韩精品一区二区三区中文精品| 一区二区三区四区乱视频| 国产成人免费在线观看| 欧美一卡2卡3卡4卡| 亚洲综合图片区| 91视视频在线直接观看在线看网页在线看| 精品毛片乱码1区2区3区| 亚洲一区二区三区爽爽爽爽爽| 东方欧美亚洲色图在线| 欧美岛国在线观看| 日本午夜精品一区二区三区电影| 在线观看视频91| 亚洲欧美国产77777| 成人性生交大片| 国产亚洲午夜高清国产拍精品| 男男视频亚洲欧美| 制服丝袜中文字幕亚洲| 亚瑟在线精品视频| 欧美在线播放高清精品| 亚洲免费观看视频| 91啪亚洲精品| 亚洲日本中文字幕区| 91在线国产福利| 中文字幕一区二区三区av| 国产mv日韩mv欧美| 国产女人18毛片水真多成人如厕| 精品一区二区三区在线视频| 欧美精品丝袜久久久中文字幕| 亚洲成在人线免费| 欧美亚洲动漫制服丝袜| 亚洲一区二区成人在线观看| 欧美性做爰猛烈叫床潮| 亚洲影院理伦片| 欧美伦理视频网站| 日韩电影免费在线观看网站| 欧美精品123区| 水野朝阳av一区二区三区| 欧美日韩精品一区二区三区 | 风间由美一区二区av101| 国产亚洲成aⅴ人片在线观看| 久久国产免费看| 久久久影视传媒| 国产激情精品久久久第一区二区| 国产欧美一区二区三区在线老狼| 国产成人免费高清| 亚洲欧美综合网| 欧美系列一区二区| 美女www一区二区| 精品国产凹凸成av人导航| 国产白丝网站精品污在线入口| 一区视频在线播放| 欧美视频一区二区三区在线观看| 午夜在线电影亚洲一区| 精品嫩草影院久久| 国产91精品免费| 亚洲欧美日本在线| 91精品国产色综合久久| 国产一区在线精品| 亚洲精品一卡二卡| 欧美一区二区三区电影| 国产成人亚洲综合a∨婷婷| 综合在线观看色| 在线观看91精品国产麻豆| 国产精品亚洲第一区在线暖暖韩国 | 精品视频一区二区三区免费| 视频一区二区三区在线| 久久久美女毛片| 在线亚洲+欧美+日本专区| 免费成人深夜小野草| 中文字幕欧美日本乱码一线二线| 欧美中文字幕亚洲一区二区va在线 | 久久精品72免费观看| 自拍偷拍国产精品| 91精品婷婷国产综合久久| 国产成人亚洲综合a∨猫咪| 亚洲综合一区二区三区| 欧美成人一区二区| 91在线国产观看| 激情国产一区二区| 亚洲激情校园春色| 久久久久久久久蜜桃| 欧美亚洲国产bt| 国产成人av电影在线| 日韩国产精品大片| 中文字幕欧美国产| 日韩午夜三级在线| 色老头久久综合| 国产精品亚洲专一区二区三区| 亚洲高清不卡在线观看| 中文字幕电影一区| 日韩亚洲欧美在线观看| 91麻豆国产在线观看| 国产精品1024久久| 美腿丝袜一区二区三区| 亚洲在线视频免费观看| 久久久亚洲精品石原莉奈| 91精品国产福利| 在线免费亚洲电影|