Все нормально в 18. Прога работает и на16 и на 18 без изменения(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено abivan 11 августа 2003 г. 18:12
В ответ на: Кто имел дело с UARTом на PIC18? (+) отправлено yuragv 11 августа 2003 г. 13:55

Главное прерывание не генериться.
Стоящий флаг не будет Вам мешать при такой записи.


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