void AT_Write(flash char *fStr) { register unsigned char i = 0; if(fStr) strcpyf(buf, fStr); while(buf[i]) putchar(buf[i++]); putchar(0x0D); buf[pos=0]=0; delay_ms(50); } ////////////////////////////// byte c=0, a=0; char *ca[1]; char cap[1]; /////////////// int двухбайтный, putchar выводит только байт есть два выхода - с помощью сдвига вывести сначала старшую, а потом младшую часть пременной, соотв. программа-приемник должна их сложить второй, если значение необходимо в виде строки - преобразовать в строку(itoa, кажется), и вывести каждый символ из строки (long int)12207 что это зачем приводить к 4 байтам то, что помещается в два это на всякий случай, знаю, что немного левак. но оно не мешает, как мне кажется. itoa пробовал, выводит бред. точки, квадратики, крестики и тп. т.е. не те символы, которые должно. со сдвигом строки, на сколько я понял это будет putchar(1<<T_100); putchar(T_100); ?? а программа-приемник, - она должна быть уже на другой стороне, на ПК, например, куда я передаю данные? ибо мне задача не стоит ее писать, но к этому могут придраться. не могут... оперируя переменными, больше 8 бит, сам стандарт UART говорит использовать сдвигвот пример, как разложить на две части и сложить:data[0]=re_time>>8;data[1]=re_time & 0xFF;сложитьTime=data[0]<<8 | data[1];data char array, Time int главное, когда будешь выдавать исходные данные, не забыть указать, где старшая часть, а где младшая. И вообще, неплохо бы протокол создать. Например, стартовый байт 0xAA, далее к-во байт, далее байты, далее CRC упс, после к-ва байт ще указать код операци, команды или данных теперь по поводу itoa.. Код:uchar buffer[6];int T_100; itoa(T_100, buffer);for(int i=0; i < 6; i++)putchar(buffer[i]);putchar('\n'); ну и счетчег лучше uchar'овский) ну это ты и сам знаешь)