找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4402|回复: 0
打印 上一主题 下一主题
收起左侧

基于msp430实现的串口通信

[复制链接]
跳转到指定楼层
楼主
以上是基于msp430实现的单片机与电脑之间的串口通信。


下载:
wirecommunications.zip (29.83 KB, 下载次数: 22)

  1. #include  "LibraryHead.h"
  2. unsigned char MST_Data, SLV_Data;
  3. //master
  4. #ifdef MASTER_MODE
  5. unsigned char MST_Data, SLV_Data;

  6. int main(void)
  7. {
  8.   volatile unsigned int i;
  9.   WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  10.   UART_Init();
  11.   SPI_Init();
  12.   MST_Data = 0x00;                          // Initialize data values
  13.   SLV_Data = 0x00;
  14.   //UCB0TXBUF = MST_Data;                     // Transmit first character
  15.   __bis_SR_register(LPM0_bits + GIE);       // CPU off, enable interrupts
  16. }

  17. // Test for valid RX and TX character
  18. #pragma vector=USCIAB0RX_VECTOR
  19. __interrupt void USCIA0RX_ISR(void)
  20. {
  21.         if(IFG2 & UCA0RXIFG)
  22.         {
  23.                 MST_Data = UCA0RXBUF;
  24.                 while (!(IFG2 & UCB0TXIFG));              // USCI_A0 TX buffer ready?
  25.                 UCB0TXBUF = MST_Data;                     // Send next value
  26.                   __delay_cycles(75);                     // Add time between transmissions to
  27.                                                                                                          // make sure slave can keep up
  28.         }
  29.         else if(IFG2 & UCB0RXIFG)
  30.         {
  31.         }
  32.         else
  33.         {}
  34. }



  35. #else

  36. //slave
  37. int main(void)
  38. {
  39.   WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  40.   UART_Init();
  41.   SPI_Init();
  42.   __bis_SR_register(LPM4_bits + GIE);       // Enter LPM4, enable interrupts
  43. }

  44. // Echo character
  45. #pragma vector=USCIAB0RX_VECTOR
  46. __interrupt void USCI0RX_ISR (void)
  47. {
  48.         if(IFG2 & UCA0RXIFG)
  49.         {
  50.         }
  51.         else if(IFG2 & UCB0RXIFG)
  52.         {
  53.                   volatile unsigned int i;
  54.                   MST_Data = UCB0RXBUF;

  55.                   while (!(IFG2 & UCB0TXIFG));              // USCI_A0 TX buffer ready?

  56.                   if (MST_Data == 0x30)                // Test for correct character RX'd
  57.                         P1OUT |= BIT0;                          // If correct, light LED
  58.                   else
  59.                         P1OUT &= ~BIT0;                         // If incorrect, clear LED

  60.                   while (!(IFG2 & UCA0TXIFG));              // USCI_A0 TX buffer ready?
  61.                   UCA0TXBUF = MST_Data;

  62.         }
  63.         else
  64.         {}
  65. }
  66. #endif
复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表