话说发送字符在中断函数里能发,在主程序里就不行了,不知道为什么呀,请教啊,以下是程序,只有字符‘b’发不出去#include<msp430g2553.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uchar x)
{
uchar a,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}
void uart_init()
{
//UCA0CTL1|= UCSWRST;
//UCA0CTL0|=UCMSB;
UCA0CTL1|=UCSSEL_2;
UCA0BR0=104; //波特率为9600
UCA0BR1=0;
UCA0MCTL=UCBRS0;
P1SEL|=BIT1+BIT2; //将P1.1 P1.2设为第二功能
P1SEL2 = BIT1 + BIT2;
P1DIR&=~BIT3;
P1REN|=BIT3;
P1OUT|=BIT3;
P1IES|=BIT3;
P1IFG&=~BIT3;
P1IE|=BIT3;
UCA0CTL1&=~UCSWRST;
IE2|=UCA0RXIE;
}
void send(uchar c)
{
UCA0TXBUF=c;
while(!(IFG2&UCA0TXIFG));
IFG2&=~UCA0TXIFG;
}
void main()
{
WDTCTL=WDTPW+WDTHOLD;
DCOCTL=CALDCO_1MHZ; //将DCO设为1mhz
BCSCTL1=CALBC1_1MHZ;
uart_init();
_BIS_SR(LPM0_bits+GIE);
while(1)
{
send('b');
delay(20);
}
}
#pragma vector=USCIAB0RX_VECTOR
__interrupt void get()
{
uchar c;
c=UCA0RXBUF;
IFG2&=~UCA0RXIFG;
//UCA0TXBUF=c;
//while(!(IFG2&UCA0TXIFG));
//IFG2&=~UCA0TXIFG;
send(c);
send('m');
}
#pragma vector=PORT1_VECTOR
__interrupt void key()
{
send('k');
send('e');
send('y');
P1IFG&=~BIT3;
} |