TA_Uart.C
上传用户:zanguozi01
上传日期:2014-02-19
资源大小:155k
文件大小:19k
源码类别:

GPS编程

开发平台:

Others

  1. /********************************************************
  2. * 文件名:  TA_Uart.C
  3. * 创建时间:2004年12月7日
  4. * 创建人:  
  5. * 版本号:  1.00
  6. * 功能:   根据MSP430的特点,这部分实现MSP430三个模拟串口的功能
  7.   包括三个模拟串口的发送和接收
  8. * 文件属性:公共文件
  9. * 修改历史:(每条详述)
  10. ********************************************************/
  11. #include <msp430x14x.h>
  12. #include "TA_Uart.h"
  13. #include "General.h"
  14. #include "Sub_C.h"
  15. #include "Define_Bit.h"
  16. #define SEND_DELAY_TIME  3
  17. unsigned char SBUFIN2,SBUFIN3,SBUFIN4;
  18. unsigned char SBUFOUT2,SBUFOUT3,SBUFOUT4;
  19. unsigned char BitCnt2,BitCnt3,BitCnt4;
  20. unsigned char RTI2,RTI3,RTI4;
  21. unsigned char RIE;
  22. unsigned int  RXTXData2,RXTXData3,RXTXData4;
  23. void TX2_Byte(void);
  24. void TX3_Byte(void);
  25. void TX4_Byte(void);
  26. /********************************************************
  27. * 函数名:TX2_Byte
  28. 作用域:本文件调用
  29. * 功能:  模拟串口2发送一个字节子程序
  30. * 参数:  SBUFOUT2
  31. * 返回值:无
  32. * 创建人:
  33. *
  34. * 修改历史:(每条详述)
  35. ********************************************************/
  36. void TX2_Byte (void)
  37. {
  38. RXTXData2=(int)SBUFOUT2;
  39. BitCnt2=0x0A;     // Load Bit counter, 8data + ST/SP,装10个BIT位
  40. RTI2 |= ~SEND_FLAG; //清除相应的发送标志位
  41. TACCR0 = TAR;        // Current state of TA counter,清空记数器
  42. TACCR0 += Bitime0;         // Some time till first bit
  43. RXTXData2 |= 0x100;         // Add mark stop bit to RXTXData 1为停止位
  44. RXTXData2 = RXTXData2 << 1; // Add space start bit  0为开始位(位左移1位)
  45. TACCTL0 = OUTMOD0+CCIE;  // TXD先设置1,中断允许
  46. //while ( TACCTL0 & CCIE );  // Wait for TX completion,等待所有的位都发送完成
  47. while ( (~RTI2)&SEND_FLAG );
  48. gDelay_Com_Timer=0;
  49. while(gDelay_Com_Timer<SEND_DELAY_TIME);
  50. }
  51. /********************************************************
  52. * 函数名:RX2_Ready
  53. 作用域:外部文件调用
  54. * 功能:  模拟串口2准备接收数据子程序(捕获模式0)
  55. * 参数:  无
  56. * 返回值:无
  57. * 创建人:
  58. *
  59. * 修改历史:(每条详述)
  60. ********************************************************/
  61. void RX2_Ready (void)
  62. {
  63. TA_Init();
  64. RTI2 &= ~RECEIVE_FLAG;
  65. BitCnt2=0x08;                      //Load Bit counter,装8个BIT位
  66. TACCTL0=SCS+OUTMOD0+CM1+CAP+CCIE;  //同步捕获Sync
  67.                   //CCIS0=0,在捕获模式中,定义捕获事件的输入源为CCI0A
  68.                                 //OUTMOD0=1,输出模式为置位
  69.                                 //CM1=1,设置捕获模式1,下降沿捕获
  70.                                     //CAP=1,设置为捕获模式
  71.                                    //CCIE=1,中断允许
  72. } //SCS同步捕获,(CCIS0=1,CCIS1=0)定义提供捕获事件的输入源
  73. /********************************************************
  74. * 函数名:TX3_Byte
  75. 作用域:本文件调用
  76. * 功能:  模拟串口2发送一个字节子程序
  77. * 参数:  SBUFOUT3
  78. * 返回值:无
  79. * 创建人:
  80. *
  81. * 修改历史:(每条详述)
  82. ********************************************************/
  83. void TX3_Byte (void)
  84. {
  85. TACCTL0 &=~ CCIE;
  86. TBCCTL0 &=~ CCIE;
  87. IE2&=~URXIE1;
  88. RXTXData3=(int)SBUFOUT3;
  89. BitCnt3 = 0xA;             // Load Bit counter, 8data + ST/SP,装10个BIT位
  90. RTI3 |= ~SEND_FLAG; //清除相应的发送标志位
  91. TACCR1 = TAR;              // Current state of TA counter,清空记数器
  92. TACCR1 += Bitime1;           // Some time till first bit
  93. RXTXData3 |= 0x100;          // Add mark stop bit to RXTXData 1为停止位
  94. RXTXData3 = RXTXData3 << 1;   // Add space start bit    0为开始位(位左移1位)
  95. TACCTL1 = OUTMOD0+CCIE;       // TXD先设置1,中断允许,设置CCIFG能进入中断
  96. //while (TACCTL1 |= CCIE);       // Wait for TX completion,等待所有的位都发送完成
  97. while( (~RTI3)&SEND_FLAG  );
  98. gDelay_Com_Timer=0;
  99. while(gDelay_Com_Timer<SEND_DELAY_TIME);
  100. }
  101. /********************************************************
  102. * 函数名:RX3_Ready
  103. 作用域:外部文件调用
  104. * 功能:  模拟串口3准备接收数据子程序(捕获模式1)
  105. * 参数:  无
  106. * 返回值:无
  107. * 创建人:
  108. *
  109. * 修改历史:(每条详述)
  110. ********************************************************/
  111. void RX3_Ready (void)
  112. {
  113. TA_Init();
  114. RTI3 &= ~RECEIVE_FLAG;
  115. BitCnt3=0x8;                     //Load Bit counter,装8个BIT位
  116. TACCTL1=SCS+OUTMOD0+CM1+CAP+CCIE;   //同步捕获Sync,