找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3292|回復(fù): 0
收起左側(cè)

MSP430F149的USART0的UART方式

[復(fù)制鏈接]
ID:105323 發(fā)表于 2016-2-13 00:36 | 顯示全部樓層 |閱讀模式
   MSP430F149的USART0的UART方式(UCTL0中的SYNC位清0)用于串口通信,以下是一段初始化過程:

P3SEL |= 0x30;
P3DIR |= BIT4;
ME1 |= UTXE0 + URXE0; //允許USART0接受和發(fā)送
UCTL0 |= CHAR;
U0TCTL|=SSEL1;
UBR00 = 0x68;//波特率9600
UBR10 =0x00;                           
UMCTL0 = 0x40;
UCTL0 &= ~SWRST;
IE1|=URXIE0;
__enable_interrupt();

  首先是設(shè)置引腳的方向,RX為輸入,TX為輸出,所以TX的DIR位應(yīng)設(shè)為1。ME1是功能模塊,即允許UART的接收和發(fā)送,CHAR置1是設(shè)置數(shù)據(jù)為8位,SSELx選擇UART的時(shí)鐘源,波特率的設(shè)置可以用MSP430波特率計(jì)算器來算。IE1中的UTXIE0和URXIE0分別用來使能接收和發(fā)送中斷,中斷標(biāo)志分別為UTXIFG0和URXIFG0,UTXIFG0置1表示等待新的數(shù)據(jù)寫入發(fā)送寄存器,即上一次發(fā)送已完成,而URXIFG0置1表示已接收到數(shù)據(jù)并裝入接收緩存寄存器中
void main()
{
  Init();
  while(1)
  {
   for(num=0;num<5;num++)
    {//發(fā)數(shù)組
     TXBUF0=T[num];//數(shù)據(jù)被寫入發(fā)送緩沖寄存器,發(fā)送中斷標(biāo)志清0
     while ((IFG1 &UTXIFG0)!=0x80);//等待中斷標(biāo)志置1,即等待接收完成
    }
    num=0;
   while(1);
  }
}

#pragma vector=USART0RX_VECTOR
__interrupt void UART0RX (void)
{
  R[num]=RXBUF0;//當(dāng)讀接收寄緩沖存器時(shí),接收中斷標(biāo)志清0
  num++;
  if(num==5) num=0;
}

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表