×
单片机 > 单片机程序设计 > 详情

PIC18f8772 串口通讯

发布时间:2020-05-16 发布时间:
|
  1. /***************************************************
  2. **
  3. ** MCU:PIC18f8772
  4. ** 功能:串口接收
  5. ** 说明:轮询方式
  6. ** 时间:2012-5-28     Lzy
  7. **
  8. *****************************************************/
  9.  
  10. #include
  11.  
  12. /* 串口初始化 */
  13. void UartInit(void)
  14. {
  15.     RCSTA1bits.SPEN = 1;    // 串口使能
  16.  
  17.     TRISCbits.TRISC7 = 1;    // 异步串行接收数据输入
  18.     TRISCbits.TRISC6 = 0;// 异步和同步主模式,TRISC<6> 零(= 0)
  19.         
  20.     // TXSTA1:发送状态和控制寄存器
  21.     TXSTA1bits.SYNC = 0;    // 异步模式
  22.     TXSTA1bits.TX9 = 0;     // 选择8 位发送
  23.     TXSTA1bits.TXEN = 1;     // 禁止发送
  24.     TXSTA1bits.BRGH = 1;     // 高速
  25.     TXSTA1bits.TXEN = 1; // 使能发送
  26.  
  27.     // RCSTA1:接收状态和控制寄存器
  28.     RCSTA1bits.RX9 = 0; // 选择8 位接收
  29.     RCSTA1bits.CREN = 1; // 使能接收器
  30.  
  31.     // BAUDCON1:波特率控制寄存器
  32.     BAUDCON1bits.BRG16 = 0; // 8位波特率发生器——SPBRGHx 和SPBRGx
  33.     SPBRG1 = 25; 
  34.  
  35.     TRISF = 0;
  36. }
  37.  
  38. void main()
  39. {
  40.     UartInit();
  41.     
  42.     if(PIR1bits.RC1IF)    // 已接收数据
  43.     {
  44.         PORTF = RCREG1; // 读取接收到的数据 
  45.     }
  46. }

 

  1. /***************************************************
  2. **
  3. ** MCU:PIC18f8772
  4. ** 功能:串口发送
  5. ** 说明:
  6. ** 时间:2012-5-28     Lzy
  7. **
  8. *****************************************************/
  9.  
  10. #include
  11.  
  12. /* 串口初始化 */
  13. void UartInit(void)
  14. {
  15.     RCSTA1bits.SPEN = 1;    // 串口使能
  16.  
  17.     TRISCbits.TRISC7 = 1;    // 异步串行接收数据输入
  18.     TRISCbits.TRISC6 = 0;// 异步和同步主模式,TRISC<6> 零(= 0)
  19.         
  20.     // TXSTA1:发送状态和控制寄存器
  21.     TXSTA1bits.SYNC = 0;    // 异步模式
  22.     TXSTA1bits.TX9 = 0;     // 选择8 位发送
  23.     TXSTA1bits.TXEN = 1;     // 禁止发送
  24.     TXSTA1bits.BRGH = 1;     // 高速
  25.     TXSTA1bits.TXEN = 1; // 使能发送
  26.  
  27.     // RCSTA1:接收状态和控制寄存器
  28.     RCSTA1bits.RX9 = 0; // 选择8 位接收
  29.     RCSTA1bits.CREN = 1; // 使能接收器
  30.  
  31.     // BAUDCON1:波特率控制寄存器
  32.     BAUDCON1bits.BRG16 = 0; // 8位波特率发生器——SPBRGHx 和SPBRGx
  33.     SPBRG1 = 25; 
  34.  
  35.     TRISE = 0xff;
  36.     TRISA = 0;
  37. }
  38.  
  39. void main()
  40. {
  41.     UartInit();
  42.  
  43.     if(TXSTA1bits.TRMT)    // 发送完毕
  44.     {
  45.         TXREG1 = PORTE;    // 发送数据 
  46.     }
  47. }



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析