⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 LT-1B msp430 程序原理图集合
💻 C
字号:
/******************************************************
程序功能:接收来自PC机的字符,然后重新发送给PC机
-------------------------------------------------------
通信格式:N.8.1,  9600
         无校验,8个数据位,1个停止位,波特率9600
------------------------------------------------------
测试说明:打开SSCOM,正确设置通信格式,向学习板发送一个
          字符或者是字符串(字符和字符串结尾必须添加结束
          符'\'),观察PC机是否正确收到回发的字符
*******************************************************/
#include  <msp430x14x.h>
#include  "BoardConfig.h"

uchar  RecBuf[256];
uchar  Windex;
uchar  Rindex; 

void Send1Char(uchar sendchar);
void PutString(uchar *ptr);
/********************主函数********************/
void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;                 // 关闭看门狗
    BoardConfig(0xb8);                        // 关闭数码管、流水灯和电平转换
    
    P3SEL |= 0x30;                            // 选择P3.4和P3.5做UART通信端口
    ME1 |= UTXE0 + URXE0;                     // 使能USART0的发送和接受
    UCTL0 |= CHAR;                            // 选择8位字符
    UTCTL0 |= SSEL0;                          // UCLK = ACLK
    UBR00 = 0x03;                             // 波特率9600
    UBR10 = 0x00;                             //
    UMCTL0 = 0x4A;                            // Modulation
    UCTL0 &= ~SWRST;                          // 初始化UART状态机
    IE1 |= URXIE0;                            // 使能USART0的接收中断
    _EINT();                                  //打开全局中断
    
    Windex = 0;
    Rindex = 0;
    
    PutString("     这是一个测试能够显示中文的串口调试工具SSCOM32的示例程序");
    PutString("请在发送栏输入单个或多个字符(英文字母、数字或者汉字,可以任意组合),\
               但是在字符的结尾必须添加结束符号'\\',点击发送后观察PC机屏幕显示接收结果");
    while(1)
    {
        while(Rindex != Windex)
        {
            Send1Char(RecBuf[Rindex++]);             //将收到的字符发送出去
            Rindex &= 0x3f;
        } 
        Send1Char(0x0d);   //说明0x0d0a是软件SSCOM32的换行指令
        Send1Char(0x0a);
        LPM1;
    }
}
/*******************************************
函数名称:UART0_RXISR
功    能:UART0的接收中断服务函数,在这里唤醒
          CPU,使它退出低功耗模式
参    数:无
返回值  :无
********************************************/
#pragma vector = UART0RX_VECTOR
__interrupt void UART0_RXISR(void)
{
    if(RXBUF0 == '\\')   LPM1_EXIT;
    else
    {
        RecBuf[Windex++] = RXBUF0;
        Windex &= 0x3f;
    }
}
/*******************************************
函数名称:Send1Char
功    能:向PC机发送一个字符
参    数:sendchar--要发送的字符
返回值  :无
********************************************/
void Send1Char(uchar sendchar)
{
      while (!(IFG1 & UTXIFG0));    //等待发送寄存器为空         
      TXBUF0 = sendchar;  
}
/*******************************************
函数名称:PutSting
功    能:向PC机发送字符串
参    数:ptr--指向发送字符串的指针
返回值  :无
********************************************/
void PutString(uchar *ptr)
{
      while(*ptr != '\0')
      {
            Send1Char(*ptr++);                     // 发送数据
      }
      while (!(IFG1 & UTXIFG0));
      TXBUF0 = 0x0d;  
      while (!(IFG1 & UTXIFG0));
      TXBUF0 = 0x0a;                              //发送换行指令
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -