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

GPS编程

开发平台:

Others

  1. /*
  2. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3. 说明:MSP430C149
  4. 扩展I/O作为模拟RS232串口(P1口)
  5. 串口2:P1.1----RX ;P1.5-----TX
  6. 串口3:P1.2----RX ;P1.6-----TX
  7. 串口4:P1.3----RX ;P1.7-----TX
  8. 程序变量的说明:SBUFIN2,SBUFIN3,SBUFIN4分别为模拟串口,2,3,4接收数据缓冲
  9.                 SBUFOUT2,SBUFOUT3,SBUFOUT4分别为模拟串口,2,3,4的发送数据缓冲
  10.                 BitCnt2,BitCnt3,BitCnt4分别为发送一个字节的位数,这里加上起始位,和停止位共10位
  11.                 RTI2,RTI3,RTI4分别为存储各个模拟串口的发送和接收标志的变量,一个模块对应一个变量
  12.                  每一个变量占用两个BIT,一个为发送标志,一个为接收标志
  13. 子程序说明:
  14. void TX2_Byte(void);       为发送一个字节的发送子程序,发送每一个BIT位都会进入中断子程序,
  15.                            知道所有的位发送完成,在中断子程序中,每发送完一个字节则设置相应的发送完成标志位,如果发送完所有的字节
  16.                            则在主程序中关闭中断允许位。发送的字节存储在SBUFOUT2变量中
  17. void TX3_Byte(void);
  18. void TX4_Byte(void);       模拟串口3,4在同一个中断子程序中处理的(但仍然是两个捕获模块),即模拟串口的3,4的发送均不能同时进行
  19. 模拟串口每发送完成一个字节,则设置相应的发送完成的标志位。在主程序中,如果发送完所有的字节,则关闭
  20. 中断允许。发送的字节存储在SBUFOUT3,SBUFOUT4变量中
  21. **************************************************************************************
  22. void RX2_Ready(void); 为准备接收数据的准备(寄存器的接收初始化设置,开相应捕获模块的中断允许),每接收完一个字节,不能关闭相应捕获模块
  23. 的中断允许位,否则影响下一个字节的接收,在主程序的接收处理部分,可以采用超过多长时间没接收到字节了,则可以关闭
  24. 此捕获模块的中断允许位则会关闭
  25. 特别注意的是,RTI2中的RECEIVE_FLAG只有在需要贮备接收数据的时候才清0,否则发送不了数据
  26.   RTI2中的在SEND_FLAG只有在发送一个字节的时候情0,在发送完一个字节后,则置1。
  27. void RX3_Ready(void);
  28. void RX4_Ready(void);
  29. 模拟串口2的发送和接收处理在一个中断子程序中,模块2的接收处理采用这样的方式,一旦有接收到一个新的字节数据
  30. 则设置比较器A的中断标志,在主程序部分则进入比较器A的中断,在比较器A的中断子程序中
  31. 处理接收模拟串口2的接收数据。
  32. 模拟串口3,4的发送和接收处理在另外一个中断子程序中,但每个模拟串口对应不同的捕获模块。
  33. 模拟串口3,4,则在接收一个字节数据后,则设置接收中断中设置接收数据标志,具体处理则在主程序里
  34. 做相关处理。
  35. void OFF_RXTXCOM2(void); 关闭关于模拟串口2操作的捕获模块的中断允许
  36. void OFF_RXTXCOM3(void); 关闭关于模拟串口3操作的捕获模块的中断允许
  37. void OFF_RXTXCOM4(void); 关闭关于模拟串口4操作的捕获模块的中断允许
  38.                     这里关闭需要根据实际情况在主程序中应用
  39. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  40. */
  41. #ifndef __TA_Uart_H
  42. #define __TA_Uart_H
  43. #define TXD2    0x20      //100000    TXD2 on P1.5,定义P1.5为TXD2
  44. #define RXD2    0x02      //10        RXD2 on P1.1,定义P1.1为RXD2
  45. #define TXD3 0x40      //1000000   TXD3 on P1.6,定义P1.6为TXD3
  46. #define RXD3 0x04      //100       RXD3 on P1.2,定义P1.2为RXD3
  47. #define TXD4 0x80   //10000000  TXD4 on P1.7,定义P1.7为TXD4
  48. #define RXD4 0x08      //1000      RXD4 on P1.3,定义P1.3为RXD4
  49. /*
  50. //三个模拟串口的为2400波特率
  51. #define Bitime0_5  0x683    // ~ 0.5 bit length 0.5数据位的长度
  52. #define Bitime0    0xD05    //
  53.                             //Bitime的计算方式=8000000/2400=3333.333=3333=0xD05
  54. #define Bitime1_5  0x683    // ~ 0.5 bit length 0.5数据位的长度
  55. #define Bitime1    0xD05    //
  56.                             //Bitime的计算方式=8000000/2400=3333.333=3333=0xD05
  57. #define Bitime2_5  0x683    // ~ 0.5 bit length 0.5数据位的长度
  58. #define Bitime2    0xD05    //
  59.     //BBitime的计算方式=8000000/2400=3333.333=3333=0xD05
  60. */
  61. /*
  62. //三个模拟串口的为4800波特率
  63. #define Bitime0_5  0x341    // ~ 0.5 bit length 0.5数据位的长度
  64. #define Bitime0    0x683    //
  65.                             //Bitime的计算方式=8000000/4800=1666.666=1667=0x683
  66. #define Bitime1_5  0x341    // ~ 0.5 bit length 0.5数据位的长度
  67. #define Bitime1    0x683    //
  68.                             //Bitime的计算方式=8000000/4800=1666.666=1667=0x683
  69. #define Bitime2_5  0x341    // ~ 0.5 bit length 0.5数据位的长度
  70. #define Bitime2    0x683    //
  71.     //Bitime的计算方式=8000000/4800=1666.666=1667=0x683
  72. */
  73. //三个模拟串口的为9600波特率
  74. #define Bitime0_5  0x1A0    // ~ 0.5 bit length 0.5数据位的长度
  75. #define Bitime0    0x341    // 104 us ~ 9596 baud
  76.                             //Bitime的计算方式=8000000/9600=833.333=833=0x341
  77. #define Bitime1_5  0x1A0    // ~ 0.5 bit length 0.5数据位的长度
  78. #define Bitime1    0x341    // 104 us ~ 9596 baud
  79.                             //Bitime的计算方式=8000000/9600=833.333=833=0x341
  80. #define Bitime2_5  0x1A0    // ~ 0.5 bit length 0.5数据位的长度
  81. #define Bitime2    0x341    // 104 us ~ 9596 baud
  82.     //Bitime的计算方式=8000000/9600=833.333=833=0x341
  83. /*
  84. //三个模拟串口的为14400波特率
  85. #define Bitime0_5  0x115    // ~ 0.5 bit length 0.5数据位的长度
  86. #define Bitime0    0x22B    //
  87.                             //Bitime的计算方式=8000000/14400=555.555=556=0x22B
  88. #define Bitime1_5  0x115    // ~ 0.5 bit length 0.5数据位的长度
  89. #define Bitime1    0x22B    //
  90.                             //Bitime的计算方式=8000000/14400=555.555=556=0x22B
  91. #define Bitime1_5  0x115    // ~ 0.5 bit length 0.5数据位的长度
  92. #define Bitime1    0x22B    //
  93.                             //Bitime的计算方式=8000000/14400=555.555=556=0x22B
  94. */
  95. /*
  96. //三个模拟串口的为14400波特率
  97. #define Bitime0_5  0x115    // ~ 0.5 bit length 0.5数据位的长度
  98. #define Bitime0    0x22B    //
  99.                             //Bitime的计算方式=8000000/14400=555.555=556=0x22B
  100. #define Bitime1_5  0x115    // ~ 0.5 bit length 0.5数据位的长度
  101. #define Bitime1    0x22B    //
  102.                             //Bitime的计算方式=8000000/14400=555.555=556=0x22B
  103. #define Bitime2_5  0x115    // ~ 0.5 bit length 0.5数据位的长度
  104. #define Bitime2    0x22B    //
  105.                             //Bitime的计算方式=8000000/14400=555.555=556=0x22B
  106. */
  107. /*
  108. //三个模拟串口的为19200波特率
  109. #define Bitime0_5  0x0D0    // ~ 0.5 bit length 0.5数据位的长度
  110. #define Bitime0    0x1A0    //
  111.                             //Bitime的计算方式=8000000/19200=416.555=417=0x1A0
  112. #define Bitime1_5  0x0D0    // ~ 0.5 bit length 0.5数据位的长度
  113. #define Bitime1    0x1A0    //
  114.                             //Bitime的计算方式=8000000/19200=416.555=417=0x1A0
  115. #define Bitime2_5  0x0D0    // ~ 0.5 bit length 0.5数据位的长度
  116. #define Bitime2    0x1A0    //
  117.                             //Bitime的计算方式=8000000/19200=416.555=417=0x1A0
  118. */
  119. #define SEND_FLAG                (0x0001) //各个模拟串口发送标志的BIT位
  120. #define RECEIVE_FLAG             (0x0002) //各个模拟串口接收标志的BIT位
  121. #define TAUART_VECTOR 11*2       //比较器A的中断向量
  122. #define TAUARTIFG     0x01       //比较器A的中断标志
  123. #define TAUARTIE      0x02       //比较器A的中断允许位
  124. sfrb    TAUARTCTL = 0x0059;      //比较器A的控制寄存器1
  125. extern unsigned char SBUFIN2,SBUFIN3,SBUFIN4;
  126. extern unsigned char SBUFOUT2,SBUFOUT3,SBUFOUT4;
  127. extern unsigned char BitCnt2,BitCnt3,BitCnt4;
  128. extern unsigned char RTI2,RTI3,RTI4;
  129. extern unsigned char RIE;
  130. //void TX2_Byte(void);
  131. //void TX3_Byte(void);
  132. //void TX4_Byte(void);
  133. void RX2_Ready(void);
  134. void RX3_Ready(void);
  135. void RX4_Ready(void);
  136. //void OFF_RXTXCOM2(void);
  137. //void OFF_RXTXCOM3(void);
  138. //void OFF_RXTXCOM4(void);
  139. void Send_COM2_Byte(unsigned char Input);
  140. void Send_COM2_String(unsigned char *Point,unsigned int Count);
  141. void Send_COM3_Byte(unsigned char Input);
  142. void Send_COM3_String(unsigned char *Point,unsigned int Count);
  143. void Send_COM4_Byte(unsigned char Input);
  144. void Send_COM4_String(unsigned char *Point,unsigned int Count);
  145. #endif