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

📄 usarttest.c

📁 主要是用430单片机的一些程序
💻 C
字号:
/****************************************************************************
文件:usarttest.c
名称:USART 演示程序
功能:USART串口演示
操作:用MUCTool.exe进行串口收发操作,接收用非二进制显示,发送用二进制方式
联系:QQ:463136018,圈圈数码店 http://shop35182015.taobao.com/
****************************************************************************/
#include "msp430x14x.h"
//#include "msp430x16x.h"

void ComInit(void);

char welcome[50]="串口接收数据成功!欢迎光临shop35182015.taobao.com";
  
void InitSystemClock(void)  // 初始化系统时钟
{
  unsigned char i;
  WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
  BCSCTL1=0x00;//Set 430 clk  开启XT2,DOC的标称频率为最低 且不分频;XT1为低速晶体(32.768K)
  BCSCTL2=SELM_2+SELS;//选择MCLK SCLK的时钟源为高速时钟 不分频,均为8M
  do
  {
    IFG1&=~OFIFG;
    for(i=0xff;i>0;i--);
  }
  while ((IFG1&OFIFG)!=0);
  P5DIR=BIT4+BIT5+BIT6;
  P5SEL|=BIT4+BIT5+BIT6;//将MCLK SCLK ACLK分别输出至P5.4 5 6口
}


void SendInteg(unsigned int data)//发送一个整数

{
  unsigned char i;
  i=data>>8;
  TXBUF1=i;
  while((UTCTL1&0X01)==0);
  i=data%256;
  TXBUF1=i;
  while((UTCTL1&0X01)==0);
}



void main(void)
{
  int i;
  InitSystemClock();  // 初始化系统时钟
  ComInit();
  //InitLCD();
  P4SEL=0x00;
  P4DIR=0xff;
  P4OUT=0x00;
  _EINT();
  for(i=0;i<50;i++)
  {
    TXBUF1=welcome[i];
    while((UTCTL1&0X01)==0);
  }
  while(1)
  {
    LPM0;
  }
}

void ComInit(void)  //串口初始化
{
  //UCTL1|=SWRST;
  UCTL1&=~SWRST;
  UCTL1 = CHAR;                         // 8-bit 字符 无校验 1位停止位 UART模式 无反馈 线路空闲多机模式 
  
  /*******************波特率为1200*******************/ 
  /* UTCTL1=SSEL0;                        //选择ACLK为波特率发生器时钟源(32.768K), UCLKI与UCLK极性相同
  UBR01 = 0x1B;                         // 波特率设置寄存器    波特率为1200
  UBR11 = 0x00;                         // // 波特率设置寄存器
  UMCTL1 = 0x11;                           //波特率 调整寄存器
  */
  /**************************************/ 
  
  
  /*******************波特率为2400*******************/ 
  /* UTCTL1=SSEL0;                        //选择ACLK为波特率发生器时钟源(32.768K), UCLKI与UCLK极性相同
  UBR01 = 0x0D;                         // 波特率设置寄存器    波特率为2400
  UBR11 = 0x00;                         // // 波特率设置寄存器
  UMCTL1 = 0x6D;                           //波特率 调整寄存器
  */
  /**************************************/ 
  /*******************波特率为9600*******************/ 
  UTCTL1=SSEL0;                        //选择ACLK为波特率发生器时钟源(32.768K), UCLKI与UCLK极性相同
  UBR01 = 0x03;                         // 波特率设置寄存器
  UBR11 = 0x00;                         // // 波特率设置寄存器
  UMCTL1 = 0x4A;                           //波特率 调整寄存器
  
  /**************************************/ 
  /*******************波特率为19200*******************
  UTCTL1=SSEL0+SSEL1;                        //选择SMCLK为波特率发生器时钟源(8M), UCLKI与UCLK极性相同
  UBR01 = 0xA0;                         // 波特率设置寄存器    8M 下波特率为19200
  UBR11 = 0x01;                         // // 波特率设置寄存器
  UMCTL1 = 0x6d;                           //波特率 调整寄存器  
  **************************************/ 
  
  /*******************波特率为115200*******************
  UTCTL1=SSEL0+SSEL1;                        //选择SMCLK为波特率发生器时钟源(8M), UCLKI与UCLK极性相同
  UBR01 = 0x45;                         // 波特率设置寄存器   SMCLK为8M下波特率为115200
  UBR11 = 0x00;                         // // 波特率设置寄存器
  UMCTL1 = 0x55;                           //波特率 调整寄存器  
  **************************************/ 
  
  ME2|= UTXE1 + URXE1;                  // 使能 USART1 TXD/RXD
  IE2|= URXIE1+UTXIE1;                         // 使能 USART1 接收和发送 中断
  P3SEL |= BIT6+BIT7;                        // P3.6,7 = USART1 TXD/RXD 选择第二功能
  
}



#pragma vector=USART1RX_VECTOR           //接收中断向量表的位置
__interrupt void OnRecieve(void)        
{ 
  P4OUT=U1RXBUF;//在8bit LED显示收到字符
}



#pragma vector=USART1TX_VECTOR           //发送中断向量表的位置
__interrupt void OnTransmit(void)      
{ 
//LcdWriteOneLineString(1,1,"电子科技大学");
}

⌨️ 快捷键说明

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