?? uart.c
字號:
/******************************************************
* 文件名稱:uart.c
* 文件說明:
* RS232通迅使用的UART0 模塊
*****************************************************/
#include <msp430x16x.h>
#define UART_BUF_SIZE 6
/*****************************************************/
/* 數據定義 */
/*****************************************************/
char uart_RBuf[UART_BUF_SIZE]; //接收緩沖區
char uart_TBuf[UART_BUF_SIZE]; //發送緩沖區
unsigned char uart_RDataPos, //用于指示下一個存放接收數據的緩沖區位置
uart_RFlag, // 接收緩沖區緩存的數據數目(單位字符)
uart_TNum, // 發送緩沖區緩存的數據數目(單位字符)
uart_TPos; // 標識 uart 下一個要發送的數據的位置
/*******************************************************
* 模塊初始化
*******************************************************/
void init_UART(void)
{
unsigned char tmpv;
// FLL_CTL0 &= 0xbf;
UCTL1 |=SWRST;
UCTL1 |=CHAR; // 8-bit 字符
UTCTL1= 0x10; // UCLK=ACLK
UBR01 = 0x0d; // 在32768下進行 2400波特率通信
UBR11 = 0x00; // 在32768下進行 2400波特率通信
UMCTL1= 0x57; // 調整寄存器
/* UCTL1|=SWRST;
UCTL1|=CHAR; // 8-bit 字符
UTCTL1=SSEL0+SSEL1; // UCLK=SMCLK
UBR01=0xa0; // 在4MHz下進行 9600波特率通信
UBR11=0x01; // 在4MHz下進行 9600波特率通信 4M/0x01a0 = 9600
*/
UMCTL1=0x5e; // 調整寄存器
UCTL1&=~SWRST;
ME2|= (UTXE1 + URXE1); // 使能 USART0 TXD/RXD
IE2|= URXIE1 ;
IFG2 = 0x00;
#if 0
//p1.1,p2.2 = USART0 TXD/RXD
P1SEL |= 0x02;
P2SEL |= 0x04;
P1DIR |= 0x02;
#else
P3SEL |= 0x40;
P3DIR |= 0x40;
P3SEL |= 0x80;
P3DIR &= 0x7F;
#endif
// P2SEL |= 0x30; // P2.4,P2.5 = USART0 TXD/RXD
// P2DIR |= 0x10;
uart_RDataPos = 0;
uart_TNum =0 ;
for(tmpv=0;tmpv<UART_BUF_SIZE;tmpv++)
{
uart_RBuf[tmpv] = 0;
}
}
/****************************************************
* 數據發送
****************************************************/
void uart_Start(void)
{
IE2 |= UTXIE1 ;
while((UTCTL1 & 0x01 )!=0x01); //等待直到沒有數據發送
TXBUF1 = uart_TBuf[0]; //發送數據
while((UTCTL1 & 0x01 )!=0x01); //等待直到沒有數據發送
TXBUF1 = uart_TBuf[1]; //發送數據
while((UTCTL1 & 0x01 )!=0x01); //等待直到沒有數據發送
TXBUF1 = uart_TBuf[2]; //發送數據
}
#pragma vector = UART1TX_VECTOR
__interrupt void __uart_Send(void)
{
IE2 &= 0x7f; //disable UTXIE1
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -