|
Главное прерывание не генериться.
Стоящий флаг не будет Вам мешать при такой записи.
if(TXIE && TXIF){ // при передаче по UART
static BOOL Fl_UARTAllMsgTransmit=0;
bIntTmp=RSBuff[UARTCurrRxTxBuff];
if( bIntTmp=='\0'){
if(!Fl_UARTAllMsgTransmit){
TXREG=0xFF;
Fl_UARTAllMsgTransmit=1;
}else{
TXEN=0; // Stop sending 0xFF
ETx=1;
TXIE=0;
UARTCurrRxTxBuff=0;
RCREG;
RCREG;
CREN=1;
Fl_UARTAllMsgTransmit=0;
Fl_UARTAllMsgSend=1;
}
}else{
TXREG=bIntTmp;
++UARTCurrRxTxBuff;
}
}
if( RCIE && RCIF){
static BOOL Fl_UARTColonCome;
if( UARTCurrRxTxBuff==sizeof(RSBuff) || FERR || OERR){
RCREG; // Error
CREN=0;
CREN=1;
UARTCurrRxTxBuff=0;
Fl_UARTColonCome=0;
}else {
RSBuff[UARTCurrRxTxBuff]=RCREG;
if(RSBuff[UARTCurrRxTxBuff]==':'){
Fl_UARTColonCome=1;
UARTCurrRxTxBuff=0;
}else if(Fl_UARTColonCome){
if(RSBuff[UARTCurrRxTxBuff]=='\r') {
RSBuff[UARTCurrRxTxBuff]='\0';
Fl_UARTColonCome=0;
Fl_UARTAllMsgCome=1;
CREN=0; //int. recive disable
}
++UARTCurrRxTxBuff;
}
}
}
E-mail: info@telesys.ru