PIC17单片机通用同步异步接收发送器

2019-04-15 12:07发布

PIC17C7XXX有2个USART模块(USART1,USART2),PIC17C4X有1个USART模块,与PIC17C7XXX的USART1完全相同。                    USART1   USART2 寄存器: RCSTA:      RCSTA1    RCSTA2 TXSTA:      TXSTA1    TXSTA2  SPBRG:     SPBRG1    SPBRG2 RCREG:     RCREG1    RCREG2 TXREG:     TXREG1    TXREG2   中断控制位: RCIE:        RC1IE   RC2IE RCIF:        RC1IF    RC2IF TXIE:        TX1IE    TX2IE TXIF:        TX1IF     TX2IF   引脚: RX/DT:    RA4/RX1/DT1   RG6/RX2/DT2 TX/CK:    RA5/TX1/CK1   RG7/TX2/CK2   PIC17CXXX中USAR有三种模式:异步方式(全双工)、同步主方式(半双工)、同步从方式(半双工)。 ------------------------------------------------------------------------------------- TXSTA: Bit7->Bit0 CSRC   TX9   TXEN  SYNC  --   --   TRMT  TX9D CSRC: =1是同步方式中的主模式(时钟源为BRG)            =0是同步方式中的从模式(外部时钟源)            无关是异步方式 TX9:发送数据长度位 =1是9位,=0是8位 TXEN:发送使能位      =1是使能发送,=0是禁止发送 SYNC:USART模式选择位  =1是同步模式, =0是异步 TMRT:发送移位寄存器(TSR)空标志位 =1空,=0满 TX9D:第9个数据发送位(可用作软件奇偶计算)   RCSTA: Bit7->Bit0 SPEN   RC9   SREN   CREN   FERR-   OERR   --   RX9D SPEN: 串口使能位 =1设置RX/DT和TX/CK为串行口引脚,=0禁止串口功能 RC9:接收数据长度位,=1是9位,=0是8位 SREN:单个接收使能位(在接收一字节数据后,该位自动清除) 同步方式下=1接收使能,=0禁止接收,异步方式无关 CREN:连续接收使能位  异步方式下=1接收使能,=0禁止接收,同步方式下=1连续接收使能直至CREN=0,=0禁止连续接收 FERR:帧错误位 =1帧错误 =0无帧错误 OERR:溢出错误位  =1溢出错误 =0无溢出错误 RC9D:接收数据的第9位   USART有一个8位波特率发生器SPBRG,支持同步与异步通讯。 -------------------------------------------------------------------------------------   USART异步发送步骤: 1. 初始化SPBRG,设置合适的波特率 2. 设置SPEN=1,SYNC=0,使能异步串行口 3. 如需中断,设置TXIE=1 4. 如需发送9位数据,设置TX8/9=1 5. 将数据送入TXREG中 6. 如发送9位数据,第9位数据放入TXD8中 7. 设置TXEN=1,使能发送功能   USART同步主模式发送步骤: 1. 初始化SPBRG,设置合适的波特率 2. 设置SPEN=SYNC=CSRC=1,使能同步主模式功能 3. CREN=SREN=0 4. 如需中断,设置TXIE=1 5. 如需发送9位数据,设置TX8/9=1 6. 将数据送入TXREG中 7. 如需发送9位数据,第9位数据放入TXD8中 8. 设置TXEN=1,使能发送功能   USART同步从模式发送步骤: 1. 设置SYNC=SPEN=1,CSRC=0,使能同步从模式功能 2. CREN=0 3. 如需中断,设置TXIE=1 4. 如需发送9位数据,TX9=1 5. 将数据放入TXREG中 6. 如发送9位数据,第9位数据放入TXD9中 7. 设置TXEN=1,使能发送功能   -------------------------------------------------------------------------------------   USART异步接收步骤: 1. 初始化SPBRG,设置合适的波特率 2. 设置SPEN=1,SYNC=0,使能异步串行口 3. 如需中断,设置RCIE=1 4. 如需接收9位数据,设置RX8/9=1 5. 设置CREN=1,使能接收功能 6. 接收完成后,RCIF=1,如中断使能,这时产生中断 7. 读RCSTA得到第9个数据位(如RX8/9=1)和FERR位 8. 读RCREG寄存器以得到8位接收数据 9. 如有错误发生,清除OERR位   USART同步主模式接收步骤: 1. 初始化SPBRG,设置合适的波特率 2. 设置SPEN=SYNC=CSRC=1,使能同步主模式功能 3. 如需中断,设置RCIE=1 4. 如需接收9位数据,设置RX8/9=1 5. 如需单字接收功能,设置SREN=1,如需连续接收功能,设置CREN=1 6. 接收完成后,RCIF=1,如中断使能,这时产生中断 7. 读RCSTA得到第9个数据位(如RX8/9=1),同步确定接收过程是否正确 8. 读RCREG寄存器以得到8位接收数据 9. 如接收过程有误,清除CREN   USART同步从模式接收步骤: 1. 设置SYNC=SPEN=1,CSRC=0,使能同步从模式功能 2. 如需中断,RCIE=1 3. 如需接收9位数据,RX9=1 4. CREN=1 5. 接收完成后,RCIF=1,中断使能,则产生中断 6. 读RCSTA得到第9个数据位(如RX9=1),确定接收过程是否正确 7. 读RCREG以得到8位数据 8. 如接收过程错误,清除CREN