找回密码
 立即注册

QQ登录

只需一步,快速开始

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

MSP430单片机接收PC机十六进制数据后回传至PC机

[复制链接]
跳转到指定楼层
楼主
ID:226756 发表于 2017-8-10 21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MSP430单片机接收PC机十六进制数据后回传至PC机

单片机源程序如下:
  1. ******************************************************
  2. 程序功能:接收PC机十六进制数据后回传至PC机
  3. 数据格式:十六进制

  4. 帧头:FD

  5. 帧尾: FE


  6. *******************************************************/
  7. #include <msp430x14x.h>


  8. unsigned char RecBuf[255]; //接收数据缓存
  9. unsigned char *SDat;     //指向要发送的数据
  10. unsigned char Rindex;      //接收数据计数
  11. unsigned char Tindex;      //发送数据计数
  12. unsigned char SendLen;     //发送数据长度


  13. /*************************************************
  14. 函数名称:ConfigUart0
  15. 功    能:配置UART0,使用SMCLK,N.8.1, 9600
  16.           无校验,8个数据位,1个停止位,波特率9600
  17. 参    数:无
  18. 返回值 :无
  19. **************************************************/
  20. void ConfigUart0()
  21. {
  22.     P3SEL |= 0x30;                            // 选择P3.4和P3.5做UART通信端口
  23.     ME1 |= UTXE0 + URXE0;                     // 使能USART0的发送和接受
  24.     UCTL0 |= CHAR;                            // 选择8位字符
  25.    
  26.     UTCTL0 |= SSEL1;                          // UCLK = SMCLK
  27.     UBR00 = 0xD0;                             // 波特率9600
  28.     UBR10 = 0x00;                             //
  29.     UMCTL0 = 0x40;                            // Modulation
  30.     UCTL0 &= ~SWRST;                          // 初始化UART状态机
  31.     IE1 |= URXIE0 + UTXIE0;                   // 使能USART0的收发中断   
  32. }

  33. /********************主函数********************/
  34. void main(void)
  35. {
  36.     unsigned int i;
  37.    
  38.     WDTCTL = WDTPW + WDTHOLD;     // 关闭看门狗
  39.     BCSCTL1 &= ~XT2OFF;           //使TX2有效,TX2上电默认是关闭的
  40.     do
  41.     {
  42.       IFG1 &= ~OFIFG;             //清除振荡器失效标志
  43.       for(i=0xff;i>0;i--);        //延时,待稳定
  44.     }
  45.     while((IFG1 & OFIFG)!=0);     //若振荡器失效标志有效
  46.     BCSCTL2 |= SELM1;             //使MCLK=XT2
  47.     BCSCTL2 |= SELS+DIVS1;        //SMCLK=XT2,4分频,即2MHZ
  48.    
  49.     BoardConfig(0xb8);            // 关闭数码管、流水灯和电平转换
  50.     ConfigUart0();                //配置UART0
  51.     _EINT();                      //打开全局中断
  52.       
  53.     while(1)
  54.     {
  55.         LPM1;
  56.     }
  57. }


  58. /*******************************************
  59. 函数名称:UART0_RXISR
  60. 功    能:UART0的接收中断服务函数,在这里唤醒
  61.           CPU,使它退出低功耗模式
  62. 参    数:无
  63. 返回值 :无
  64. ********************************************/
  65. #pragma vector = UART0RX_VECTOR
  66. __interrupt void UART0_RXISR(void)
  67. {
  68.     RecBuf[Rindex++] = RXBUF0;
  69.     if(RecBuf[Rindex-1]==0xfe) //接收完毕
  70.     {
  71.         SendLen = Rindex;
  72.         Rindex=0;
  73.         if(RecBuf[0]==0xfd) //帧头正确
  74.         {
  75.             LPM1_EXIT;
  76.             SDat = RecBuf;
  77.             IFG1 |= UTXIFG0; // 设置中断标志,进入发送中断程序
  78.         }
  79.     }
  80. }

  81. /*******************************************
  82. 函数名称:UART0_TXISR
  83. 功    能:UART0的发送中断服务函数
  84. 参    数:无
  85. 返回值 :无
  86. ********************************************/
  87. #pragma vector = UART0TX_VECTOR
  88. __interrupt void UART0_TXISR(void)
  89. {

  90. ……………………

  91. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
MSP430单片机接收PC机十六进制数据后回传至PC机.zip (1.46 KB, 下载次数: 13)


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

使用道具 举报

沙发
ID:279187 发表于 2018-1-24 12:15 | 只看该作者
能给我发一份吗?谢谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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