<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          PIC C18自帶串口程序

          作者: 時(shí)間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
          官方寫的串口程序,值得學(xué)習(xí)一下!
          (串口無論接收還是發(fā)送都有輪詢法和中斷法)

          讀一個(gè)字節(jié)
          #include
          #include
          /********************************************************************
          * Function Name: ReadUSART *
          * Return Value: char: received data *
          * Parameters: void *
          * Description: This routine reads the data from the USART *
          * and records the status flags for that byte *
          * in USART_Status (Framing and Overrun). *
          ********************************************************************/
          #if defined (AUSART_V1) || defined (EAUSART_V3) || defined (EAUSART_V4) || defined (EAUSART_V5)
          char ReadUSART(void) //this function can be removed by macro #define ReadUSART RCREG
          {
          char data; // Holds received data
          USART_Status.val &= 0xf2; // Clear previous status flags
          if(RCSTAbits.RX9) // If 9-bit mode
          {
          USART_Status.RX_NINE = 0; // Clear the receive bit 9 for USART
          if(RCSTAbits.RX9D) // according to the RX9D bit
          USART_Status.RX_NINE = 1;
          }
          if(RCSTAbits.FERR) // If a framing error occured
          USART_Status.FRAME_ERROR = 1; // Set the status bit
          if(RCSTAbits.OERR) // If an overrun error occured
          USART_Status.OVERRUN_ERROR = 1; // Set the status bit
          data = RCREG; // Read data
          return (data); // Return the received data
          }
          #endif
          獲取字符串
          #include
          #include
          /********************************************************************
          * Function Name: getsUSART *
          * Return Value: void *
          * Parameters: buffer: pointer to string *
          * len: length of characters to receive *
          * Description: This routine receives a string of characters *
          * from the USART of length specified by len. *
          ********************************************************************/
          #if defined (AUSART_V1) || defined (EAUSART_V3) || defined (EAUSART_V4) || defined (EAUSART_V5)
          void getsUSART(char *buffer, unsigned char len)
          {
          char i; // Length counter
          unsigned char data;
          for(i=0;i
          {
          while(!DataRdyUSART());// Wait for data to be received
          data = getcUSART(); // Get a character from the USART =ReadUSART(void)
          // and save in the string
          *buffer = data;
          buffer++; // Increment the string pointer
          }
          }
          #endif

          寫一個(gè)字符
          #include
          #include
          /********************************************************************
          * Function Name: WriteUSART *
          * Return Value: none *
          * Parameters: data: data to transmit *
          * Description: This routine transmits a byte out the USART. *
          ********************************************************************/
          #if defined (AUSART_V1) || defined (EAUSART_V3) || defined (EAUSART_V4) || defined (EAUSART_V5)
          void WriteUSART(char data)
          {
          if(TXSTAbits.TX9) // 9-bit mode?
          {
          TXSTAbits.TX9D = 0; // Set the TX9D bit according to the
          if(USART_Status.TX_NINE) // USART Tx 9th bit in status reg
          TXSTAbits.TX9D = 1;
          }
          TXREG = data; // Write the data byte to the USART
          }
          #endif
          寫一個(gè)字符串
          #include
          #include
          /**********************************************************************
          * Function Name: putsUSART *
          * Return Value: void *
          * Parameters: data: pointer to string of data *
          * Description: This routine transmits a string of characters *
          * to the USART including the null. *
          **********************************************************************/
          #if defined (AUSART_V1) || defined (EAUSART_V3) || defined (EAUSART_V4) || defined (EAUSART_V5)
          void putsUSART( char *data)
          {
          do
          { // Transmit a byte
          while(BusyUSART());
          putcUSART(*data); //=WriteUSART
          } while( *data++ );
          }
          #endif



          關(guān)鍵詞: PIC串口程

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();