|
一段书中的例子,工程设置如下,用串口调试助手给单片机发字符的时候,使终进不去接收中断的断点,而串行接收中断已经使能了。。。晶振3.6864MHz,波特率9600,8N1,请大家帮看一眼。
程序如下:- #include <msp430x14x.h>
- #define uint unsigned int
- #define uchar unsigned char
- void init_clk()
- {
- uchar i;
- BCSCTL1&=~XT2OFF;
-
- BCSCTL2|=SELM1+SELS;
- do
- {
- IFG1 &= ~OFIFG; // Clear OSCFault flag
- for (i = 0xFF; i > 0; i--); // Time for flag to set
- }
- while ((IFG1 & OFIFG)); // OSCFault flag still set?
- IFG1&=~OFIFG;
- }
- void init_uart()
- {
- U0CTL|=SWRST;
- U0CTL|=CHAR;
- U0TCTL|=SSEL1;
-
- U0BR0=0x80; // 3.6864Mhz,9600
- U0BR1=0x01; // 3.6864Mhz,9600
- UMCTL0=0x00; // 3.6864Mhz,9600
-
- ME1|=UTXE0+URXE0;
-
- U0CTL&=~SWRST;
- IE1|=URXIE0;
- P3SEL|=BIT4;
- P3SEL|=BIT5;
- P3DIR|=BIT4;
- }
- void sent_byte(uchar data)
- {
- while((IFG1&UTXIFG0)==0);
- U0TXBUF=data;
- }
- #pragma vector=UART0RX_VECTOR
- __interrupt void usart0_rx (void)
- {
- uchar data;
- data=U0RXBUF;
- sent_byte(data);
- }
- void main()
- {
- WDTCTL = WDTPW + WDTHOLD; // Stop WDT
-
- init_clk();
-
- init_uart();
-
- _EINT();
-
- while(1);
- }
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
该献的血还是要献的。你不献他不献。难道让我去献? --- 出自坛友:lovejp1981
|