Вс апр 05, 2015 13:24:11
Вс апр 05, 2015 14:48:33
Вс апр 05, 2015 15:02:38
unsigned char x;
unsigned int a;
x = a >> 8; // старший байт
x = a & 0xFF; // младший байт
unsigned char b[2]; // буфер, куда приняли байты
a = b[0]; // старший байт
a = a << 8; // сдивнули
a |= b[1]; // младший байт
Вс апр 05, 2015 16:35:57
-=Vovka=- писал(а):Например, так:
- Код:
unsigned char x;
unsigned int a;
x = a >> 8; // старший байт
x = a & 0xFF; // младший байт
По такому же принципу можно передавать/принимать любую разрядность
igor-x писал(а):как вариант -передать в текстовом виде посимвольно : пример "123" три байта
Вс апр 05, 2015 16:52:02
Ellissar писал(а):Может быть есть готовые?
Вс апр 05, 2015 17:24:10
unsigned char a, buf[5];
unsigned int x; // тут наше число
for( a=0; a<5; a++ ) buf[a] = '0';
while( x>10000 ) { buf[0]++; x = x-10000; }
while( x>1000 ) { buf[1]++; x = x-1000; }
while( x>100 ) { buf[2]++; x = x-100; }
while( x>10 ) { buf[3]++; x = x-10; }
buf[4] = x;
Вс апр 05, 2015 18:21:29
-=Vovka=- писал(а):
- Код:
unsigned char a, buf[5];
unsigned int x; // тут наше число
for( a=0; a<5; a++ ) buf[a] = '0';
......
buf[4] = x;
Вс апр 05, 2015 18:37:57
Вс апр 05, 2015 18:58:20
Вс апр 05, 2015 21:45:38
Вс апр 05, 2015 22:02:04
Пн апр 06, 2015 07:26:45
buf[a] = '0'
Пн апр 06, 2015 18:45:07
int a = 1234, i = 0;
unsigned char ch[10];
while (a > 0)
{
ch[i] = (a % 10) + 0x30;
i++;
a /= 10;
};
Пн апр 06, 2015 18:51:44
Пн апр 06, 2015 19:21:15
ARV писал(а):вообще-то для этого есть функция itoa
Пн апр 06, 2015 19:31:25
int chilso = 1234, num = 10;
char chr[17];
unsigned char chr1[17];
int i = 0;
itoa (chislo, chr, num);
while (chr[i] != NULL)
{
chr1[i] = (unsigned char)chr[i];
i++;
}
chr1[i] = NULL;
Пн апр 06, 2015 19:41:57
Вт апр 07, 2015 09:04:52
Ну вот откуда такие берутся, которые свои догадки выдают за реальность ?Ellissar писал(а):Она принимает тип char
Что тут может быть непонятного ? Русским по белому всё разжёвано.void* itoa(int input, char *buffer, int radix)
itoa принимает передаваемое целое число input и конвертирует его в число в основании корня radix. Полученное число (последовательность цифр основания radix) записывается в буфер вывода buffer.
Вт апр 07, 2015 15:14:02
ARV писал(а):что у вас вызывает затруднения?
void USART_Transmit( unsigned char *data, unsigned char sz)
{
cli();
for (unsigned char i = 0; i<=sz; i++)
{
/* Ожидаем когда буфер станет пустым */
while ( !( UCSRA & (1<<UDRE)) );
/* Поместить данные в буфер, отправка данных */
UDR = data[i];
}
sei();
}
Вт апр 07, 2015 16:35:55
А Вы, когда писали в аргументе тип unsigned char, задумывались о подводных камнях ? Почему этот вопрос именно при переходе на char у вас возник ?Ellissar писал(а):может есть какие-то подводные камни если поменяю тип на char в этой функции.