Страница 1 из 1

Обработчик прерывания UART MCS-51 - ошибка приема

Добавлено: Пн май 17, 2010 07:16:05
FUZZY_
void serial_int(void) interrupt 4 using 1
{ char idata index;


if(!UART_TX) {
//----------------------------------------------------------
if( _testbit_(TI) ){
....
} //end UART_TX
//--------------------------------------------------------
/* прием байта */
else {
if( _testbit_(RI) ){

/* из приемного буфера */
RxBuffer[reciv_ctr]=SBUF;
reciv_ctr++;

}
}//end UART_RX

}



Основная программы

/*тут прошла успешная передача байтов

проверяется по количеству реально переданных байт
*/



// принимаем ответ
reciv_ctr=0; //

/* #define UART_TX_DIS() {REN=1; TI=0;RI=0; 0= UART_TX=1; } */

UART_TX_DIS(); // передача запрещена (осуществляется только прием информации)

//1 milisec_counter = 25 mc
/************************************************************************************/

milisec_counter=P2MAX/25;

do{ } while( (milisec_counter>0)&&(!reciv_ctr) );

/* тут уже reciv_ctr=1 -- неизвестно где меняется реальной приема - передачи нет */

Как отследить и почему меняется ведь RI был сброшен в UART_TX_DIS()