智能车笔记5 SCI 串口

SCI = Serial Communiation Interface

SCI baud rate = SCI bus clock / (16 * SCIBR[12:0])

1.SCI Control Register 2(SCICR2)

寄存器编号 描述
7 TIE Transmitter Interrupt Enable Bit  TIE enables the transmit data register empty flag, TDRE, to generate
  interrupt requests.
  0 TDRE interrupt requests disabled
  1 TDRE interrupt requests enabled
6 TCIE Transmission Complete Interrupt Enable Bit—TCIE enables the transmission complete flag, TC, to generate
  interrupt requests.
  0 TC interrupt requests disabled
  1 TC interrupt requests enabled
5 RIE Receiver Full Interrupt Enable Bit—RIE enables the receive data register full flag, RDRF, or the overrun flag,
  OR, to generate interrupt requests.
  0 RDRF and OR interrupt requests disabled
  1 RDRF and OR interrupt requests enabled
4 ILIE Idle Line Interrupt Enable Bit  ILIE enables the idle line flag, IDLE, to generate interrupt requests.
  0 IDLE interrupt requests disabled
  1 IDLE interrupt requests enabled
3 TE Transmitter Enable Bit  TE enables the SCI transmitter and configures the TXD pin as being controlled by
  the SCI. The TE bit can be used to queue an idle preamble.
  0 Transmitter disabled
  1 Transmitter enabled
2 RE Receiver Enable Bit  RE enables the SCI receiver.
  0 Receiver disabled
  1 Receiver enabled
1 RWU Receiver Wakeup Bit  Standby state
  0 Normal operation.
  1 RWU enables the wakeup function and inhibits further receiver interrupt requests. Normally, hardware wakes
  the receiver by automatically clearing RWU.
0 SBK Send Break Bit  Toggling SBK sends one break character (10 or 11 logic 0s, respectively 13 or 14 logics 0s
  if BRK13 is set). Toggling implies clearing the SBK bit before the break character has finished transmitting. As
  long as SBK is set, the transmitter continues to send complete break characters (10 or 11 bits, respectively 13
  or 14 bits).
  0 No break characters
  1 Transmit break characters
// 串口初始化
 void SCI_Init ( void )
 {
     SCI0CR2=0x2c ; // 允许中断,发送允许,接收允许
     SCI0BDH=0x00 ; // 出口波特率为9600
     SCI0BDL=0x23 ; // SCI0BDL = busclk / ( 16 * SCI0BDL )
 		// busclk 8MHz, 9600 bps , SCI0BD=0 x34
 		// busclk 16MHz, 9600 bps , SCI0BD=0 x68
		// busclk 24MHz, 9600 bps , SCI0BD=0x9C
		// busclk 32MHz, 9600 bps , SCI0BD=0xD0
 }

// 发送数据
 void SciWrite ( byte t_data )
 {
 	while ( ! ( SCI0SR1&0x80 ) ) ;
 	SCI0DRL= t_data ;
 }

 // 接收数据
 byte SciRead ( void )
 {
     if ( SCI0SR1_RDRF==1)
     {
 	SCI0SR1_RDRF = 0 ;
 	return SCI0DRL ;
     }
     return 5 ;
 }
接收中断
#pragma CODE_SEG NON_BANKED
 void interrupt 20 SCIO_re ( )
 {
     //	 byte temp ;
     // temp = SciRead ( ) ;
     //	SciWrite ( temp ) ;
 }


你可能感兴趣的:(智能车)