msp430的一些常用的C語言控制程序---RS232
#include<msp430x14x.h>
//
void OSC_Init(void);
void USATR0_Init(void);
//
void main(){
WDTCTL = WDTPW + WDTHOLD;
OSC_Init();
USATR0_Init();
_BIS_SR(GIE);//用調(diào)試助手可以檢測,也可以結(jié)合按鍵觀察到數(shù)據(jù)的傳輸
}
//
void OSC_Init(void){
BSCTL1 &= ~XT2OFF;//XT2振蕩器開啟
do //清OSCFault標(biāo)志
{
IFG1 &= ~OFIFG;
for (i=0xFF;i>0;i--);
} while((IFG1&OFIFG));
BSCTL2 |= (SELM_1 + SELS);//MCLK = XT2CLK,SMCLK = XT2CLK
}
//
void USATR0_Init(void){
P3SEL |= (BIT4 + BIT5);//選擇端口的第二功能
ME1 |= (UTXE0 + URXE0);//工作模式1,UART0 使能
UCTL0 |= CHAR ;//發(fā)送字長,八位
UTCTL0 |= (SSEL0 + SSEL1);//選擇時鐘源,用于確定波特率發(fā)生器的時鐘源,選擇輔助時鐘ACLK,子系統(tǒng)時鐘SMCLK
UBR00 = 0x9F;//波特率選擇寄存器低位
UBR10 = 0x01;//波特率選擇寄存器高位
UMCTL0 = 0xB5;//波特率調(diào)整寄存器
UCTL0 &= ~SWRST;//USATR狀態(tài)機初始化復(fù)位
IE1 |= URXIE0;//允許USATR中斷
}
#pragma vector=UART0RX_VECTOR
__interrupt void uart0_rx(void){
while(!(IFG1 & UTXIFG0));//等待,看看接收寄存器里面是不是有數(shù)據(jù)
TXBUF0 = RXBUF0;//將接收過來的數(shù)據(jù)在發(fā)出去
}
評論