4.1-4.3异步(UART)通信全解.pptVIP

  • 152
  • 0
  • 约 47页
  • 2017-01-26 发布于湖北
  • 举报
4.1-4.3异步(UART)通信全解

UCA1CTL1 |= UCSWRST; UCA1CTL1 |= UCSSEL_1; UCA1BR0 = 0x03; UCA1BR1 = 0; UCA1MCTL = UCBRS_3+UCBRF_0; UCA1CTL1 = ~UCSWRST UCA1IE |= UCRXIE; 主机——UART模块初始化 USCI_Bx模块逻辑复位 CLK = ACLK 配置波特率, 32kHz/9600=3.41 调制UCBRSx=3, UCBRFx=0 USCI_Bx复位释放 使能UART模块接收中断 时钟配置 while(BAKCTL LOCKIO) BAKCTL = ~(LOCKIO); UCSCTL6 = ~(XT1OFF); UCSCTL6 |= XCAP_3; do { UCSCTL7 = ~(XT2OFFG + XT1LFOFFG + DCOFFG); SFRIFG1 = ~OFIFG; }while (SFRIFG1OFIFG); 打开XT1 解锁XT1引脚 选择内接电容大小 清除XT2,XT1,DCO错误标志 清除晶振错误中断标志 测试晶振错误标志 主机——接收中断 #pragma vector=USCI_ B1_VECTOR __interrupt void USCI_ B1_ISR(void) { switch(__even_in_range(UC B1IV,4)) { case 0: break; case 2: while (!(UC B1IFGUCTXIFG)); if (UC B1RXBUF==SLV_Data) P1OUT |= 0x01; else P1OUT = ~0x01;? MST_Data++; SLV_Data++; UCB1TXBUF = MST_Data; __delay_cycles(500); break; case 4: break; default: break; } } 判断发送缓冲是否为空,如果为空, 标志位置位,则说明上个数据未发送完毕, 等待直到数据发送完毕 如果接收与发送相同,点亮LED 发送下一个字符 从机——端口初始化 P8SEL |= BIT4+BIT5+BIT6; P8DIR |= BIT4+BIT5+BIT6; P1REN |= BIT4; P1OUT |= BIT4; P1IES =~BIT4; P1IFG =~BIT4; P1IE |= BIT4; 使能P1.4内部电阻 P1.4输出为1 选择P8.4~P8.6为外设功能 选择P8.4~P8.6端口方向为输出 P1.4上升沿捕获,进入中断 P1.4 IFG 清零 P1.4中断使能 主机——SPI模块初始化 UCB1CTL1 |= UCSWRST; UCB1CTL0 |= UCSYNC+UCCKPL+UCMSB; UCB1CTL1 = ~UCSWRST USCI_Bx模块逻辑复位 3线,8位,主机模式, 时钟极性高,MSB先发送 USCI_Bx复位释放 从机——接收中断 #pragma vector=USCI_ B1_VECTOR __interrupt void USCI_ B1_ISR(void) { switch(__even_in_range(UC B1IV,4)) { case 0: bre

文档评论(0)

1亿VIP精品文档

相关文档