Дело в следующем, есть схема на aduc814, нужно в нее "вдохнуть душу".
Одна из функций - связь с сервером, грубо говоря нужно выплюнуть пакет из 8 байт по запросу. Но выплюнуть быстро, то есть задержка как в коде ниже неприемлема.
Тут у меня затык и случился, aduc выплевывает первые 3 байта и последний, остальные теряются где-то у него в недрах.
Уже практически на асме пишу (код ниже), но не могу понять, куда теряются байты.
Кстати,
1. дело не в приемнике(сервере), т.к. судя по осциллографу выплевываются а) именно 4 байта и б) без разрыва между ними.
2. при изменении длины посылки ситуация не меняется - теряются байты м-у 3-м и последним
3. пробовал "вестись" от T0/T1 - та же фигня.
4. симулятор ничего такого не обнаруживает.
Что это за фокусы?? Помогите, плз!!!

Склоняюсь к мысли написать эмулятор хотя это смахивает на мазохизм

тестовый код:
------------
void main (void)
{
char i;
//частота 16М
PLLCON = 0;
//таймер2, данные из даташита, стр.56
RCAP2H = 0xFF;
RCAP2L = 0xC9;
TH2 = 0xFF;
TL2 = 0xC9;
//запуск таймера2
T2CON = 0x34;
//таймер1
SCON = 0x52; //почему без него не работает???
//прерывания
ES = 1;
EA = 1;
for (i=0;i<8;i++)
{
SBUF = i;
while(!TI);
}
while(1);
}
void UART_INT(void) interrupt 4
{
// unsigned int i;
TI=0;
//если тут ввести задержку ~0.1с, работает нормально
// for (i = 0; i < 1500; i++);
}
------------