?? usarttest.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 + -