|
先贴完整的源程序 #include "ioCC2430.h"
#define uchar unsigned char
uchar dat1[]="Hello,ZigBee!";
void initclk(void) { CLKCON&=~0x40;//选择晶振 while(!(SLEEP & 0x40));//等待晶振稳定 SLEEP|=0x04; }
void initio(void) { P0SEL|=0x0c; }
void inituart(void) { IEN0|=0x84;//总中断,接收中断使能 U0CSR|=0xc0;//UART模式,允许接收 U0GCR=10; U0BAUD=59; }
void UART_send_string(uchar *data,uchar len) { uchar i; for(i=0;i<len;i++) { U0DBUF=*data++; while(!UTX0IF); UTX0IF=0; } }
void main(void) { initio(); initclk(); inituart(); UART_send_string(dat1,13); while(1); }
#pragma vector=URX0_VECTOR __interrupt void UART0_IRQ(void) { URX0IF=0; U0DBUF=U0DBUF; while(!UTX0IF); UTX0IF=0; }
上面的主函数对I/O 晶振等进行了初始化,但在下面的中断程序我就弄不懂了,上面传数据时是一个一个字符传过去的,但中断中给的函数是将发给2430的数据再返回来。问题是怎样读取返回来的数据,还是一个一个字节读回来吗?中断函数是不是一直在运行? 后来我在中断函数里加了一句“while(key);"key对应的是一个按键,不按的时候为1,按的时候是0,问题是我加了这句以后只能返回来头一个字节了,比如我发送的数据时“dredfff”,只能返回来一个d,这是怎么回事 ?为什么?
|
|