
技术总监
  
- 积分
- 26133
- 在线时间
- 151 小时
- 精华
- 0
- 注册时间
- 2011-6-15
- 最后登录
- 2021-1-18
|
#include <msp430g2353.h>
void CLK_INIT(void);
void USCI_UART_INIT(void);
int flag=1;
void main(void)
{
volatile unsigned int i;
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
CLK_INIT(); // SMCLK=1.6MHz
_EINT()
USCI_UART_INIT();
void CLK_INIT(void)
{
BCSCTL1 = 0X00; // 将寄存器的内容清零; XT2震荡器开启; LFTX1工作在高频模式; ACLK的分频因子为1
DCOCTL |= DCO1+DCO0;
BCSCTL1 |= RSEL3; // DCO Rsel=8,DC0=3,MOD=0(Freq=1.6MHz)
BCSCTL2 |= 0x00; // MCLK和SMCLK的时钟源为DCOCLK,分频因子为1
}
void USCI_UART_INIT(void)
{
P1SEL |= 0x06; // P1.1,1.2作为UART的RXD/TXD
P1SEL2 |= 0x06;
UCA0CTL0=0x00; // 默认设置:无校验位、8位字符、1位停止位、UART模式
UCA0CTL1 |= UCSSEL1; // UCLK = SMCLK
//ME1 |= UTXE0 + URXE0; // 使能USART0的TXD/RXD,ME1为使能寄存器
//9600
UCA0BR1 = 0x00;
UCA0BR0 = 0xA6; // 1.6MHz/9600 = 1600000/9600=166.67 ≈ 166 (00A6h)
// UCA0MCTL = 0x57; // 波特率调整控制寄存器 */
UCA0CTL1 &= ~UCSWRST; // Initialize USCI state machine
IE2 |= UCA0RXIE; // IE1 |= UCA0TXIE+UCA0RXIE; 只使能USART0 RX中断,否则会发生乱码
UCA0TXBUF=0x03;
}
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = UCA0RXBUF; // TX -> RXed character
} |
|