MSP430串行外设题库.pptVIP

  • 2
  • 0
  • 约1.25万字
  • 约 79页
  • 2017-07-21 发布于湖北
  • 举报
* 一个字符一个字符地传输,每个字符一位一位地传输, 传输一个字符时,以起始位开始,然后传输字符本身的各位, 接着传输校验位,最后以停止位结束该字符的传输。 一次传输的起始位、字符各位、校验位、停止位构成一组完整的信息,称为帧(Frame) 帧与帧之间可有任意个空闲位。 线路在不传送字符时,保持“1”; 起始位为逻辑“0”, 占用1位,用来通知接收设备通信开始; 接收端不断检测线路的状态,若连续为“1”以后检测到“0”, 知道发来一个数据,马上准备开始接收; 停止位为逻辑“1”,可以是1位、1.5位或2位,用来表示字符的结束,。 接收端收到停止位后,知道上一个字符已传送完毕, 同时为接收下一个字符做好准备,只要再收到“0”就是新字符的起始位。 若停止位以后不是紧接着传送下一个字符,则让线路上保持为“1”。 字符的起始位还被用作同步接收端的时钟,以保证以后接收能正确进行。 * 例: 时钟选用SMCLK(SSELx=11) 禁止起始沿接收功能(URXSE=0) 发送数据字符(TXWAKE=0) 0 0 1 1 0 0 0 x MOV.B #SSEL_3 , U0TCTL UxTCTL USART 接收控制寄存器(UxRCTL)编程 状态 状态 URXEIE=0: 若接收到错误字符,则不存入 UxRXBUF , 并且不置位 URXIFGx URXEIE=1: 接收到的字符无论错对,都存入 UxRXBUF, 并置位 URXIFGx URXWIE=0: 接收到的字符无论是地址还是数据, 都置位 URXIFGx( URXEIE=1 ) URXWIE=1: 仅接收到地址字符, 才置位 URXIFGx ( URXEIE=1 ) 1 0 BIS.B #URXEIE , U0RCTL 5). USART 波特率控制寄存器编程 BRCLK=SMCLK=6MHz/8=750,000Hz baud rate=1200bps N= 6MHz/8/1200bps=625=0271h UxBR1=02h, UxBR0=71h UxMCTL=00h UBR00 = 0x71; UBR10 = 0x02; UMCTL0 = 0x00; 6). 编程ME1 SFR,使能USART0模块 ME1 |= UTXE0 + URXE0; // 使能 UART0_INIT: UCTL0 = ~SWRST; // 初始化UART0 P3SEL |= 0x30; // P3.4,5为UART收发端口 0011 UCTL0 |= CHAR; // 8-bit UTCTL0 |= SSEL0; // UCLK = ACLK 32768Hz UBR00 = 0x0D; // 32k/2400 - 13.65 UBR10 = 0x00; // 高位表示整数分频, UMCTL0 = 0x6B; // Modulation, 0110 1011 ME1 |= UTXE0 + URXE0; // 使能USART0收发 USART0初始化子程序 判断发送缓冲器空: Tcheck while (!(IFG1 UTXIFG0)); 判断接收缓冲器满: Rcheck while (!(IFG1 URXIFG0)); 0: U0RXBUF has not received a complete character 1: U0RXBUF has received a complete character 0: U0TXBUF is not empty 1: U0TXBUF is empty UTXIFG0 URXIFG0 IFG1 7 6 5 4 3 2 1 0 rw-1 rw-0 串口查询方式 发送数据流程 N Y N 向发送缓冲器写1字节 已发送完所有数据? 结束 开始 发送缓冲器空? 串口初始化 Y 超时等待判断 串口查询方式 接收数据流程 N Y N 读接收缓冲器 已接收完所有字符? 结束 开始 接收缓冲器满? 串口初始化 Y 超时等待判

文档评论(0)

1亿VIP精品文档

相关文档