这边有一段代码,有一部分(红 {MOD}标识的)不太清楚,希望有大神能指点一二啦~
- void R_S_Byte(uchar R_Byte)
- {
- while((IFG1&UTXIFG0)==0); //是否上一个串口数据发送完成
- TXBUF0=R_Byte;
- }
- unsigned char printArr(unsigned char* array, unsigned char len)
- {
- unsigned char i=0;
- if(array==NULL)
- return PRINTTOOLARGE;
- for(i=0;i<len;i++)
- {
- R_S_Byte(array);
- }
- return PRINTSUCCESS;
- }
- unsigned char printStr(unsigned char* string)
- {
- unsigned char i=0;
- if(string==NULL)
- return PRINTNULL;
- while(1)
- {
- R_S_Byte(string);
- delay_us(100);
- i++;
- if(string==0x00)
- return PRINTSUCCESS;
- if(i==255)
- return PRINTTOOLARGE;
- }
- }
- /*接收中断函数,将接收到的字符放在uart_Buf中,收到$表示一条命令接收完成*/
- #pragma vector = UART0RX_VECTOR
- __interrupt void UART0_RXISR(void)
- {
- //LPM3_EXIT;//退出低功耗模式。
- if(finishFlag==0)
- {
- uart_Buf[buf_count]=RXBUF0;
- buf_count++;
- if(uart_Buf[buf_count-1]=='$'||buf_count>=UARTBUFLEN)//实际buffer的可用空间是UARTBUFLEN-1
- {
- buf_count=0;
- finishFlag=1;
- //printStr(uart_Buf);
- //memset(uart_Buf, 0, sizeof(uart_Buf));
- }
- }
-
- }
#pragma vector = UART0RX_VECTOR //这一句我也不太懂
__interrupt void UART0_RXISR(void) //中断服务程序入口
{
//LPM3_EXIT;//退出低功耗模式。
if(finishFlag==0) //标志位,不用解释了吧
{
uart_Buf[buf_count]=RXBUF0; //RXBUF0应该是接收数据的缓冲寄存器
buf_count++; //计收多少字节的
if(uart_Buf[buf_count-1]=='$'||buf_count>=UARTBUFLEN)//实际buffer的可用空间是UARTBUFLEN-1 //收到$,表示对方发送完了
{
buf_count=0; //计数清零
finishFlag=1; //标志位,不用解释了吧
//printStr(uart_Buf);
//memset(uart_Buf, 0, sizeof(uart_Buf));
}
}
}
一周热门 更多>