реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Символьные перемменые
sergey sva
сообщение Nov 24 2007, 08:59
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Еще одна не задача, как из инт значения сделать символы? стандартых таких функций в keil я не нашел,

Цитата
unsigned char dat = 105;
unsigned char dat_arr[4];
unsigned char len = 4;
while(len--)
{

dat_arr[len] = '5';
dat_arr[len] = '0'; // вместо этого чтобы получилось что то вроде этого |
dat_arr[len] = '1'; |
|
|
dat_arr[len] = '/dat++/'; вот как извернуться, чтобы получилось что то *

наподобие = '/dat++/'; ?

}


print(1,10,dat_arr,6);
Go to the top of the page
 
+Quote Post
uriy
сообщение Nov 24 2007, 09:05
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



скорее всего keil поддерживает форматированный вывод. Например у вас есть своя функция printf. Тогда я делаю следующим образом
char tmp[30];
sprintf(tmp, "line = %4d", line);
printf(tmp);

или для каждой тетрады по отдельности

ch<10? (ch+='0') : (ch+='A' - 10)
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Nov 24 2007, 15:47
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Цитата(urasinov @ Nov 24 2007, 12:05) *
скорее всего keil поддерживает форматированный вывод. Например у вас есть своя функция printf. Тогда я делаю следующим образом
char tmp[30];
sprintf(tmp, "line = %4d", line);
printf(tmp);

или для каждой тетрады по отдельности

ch<10? (ch+='0') : (ch+='A' - 10)



нужна функция которая будет преобразовывать, строку символов, и инт значения в (массив символов).
например: аргумент функции с ацп = 100

Цитата
int acp = 100 ; // 100
unsigned char str "Здрасте";
unsigned char buf[100];


void IntToStr(unsigned char str,int acp )
{
int d = 100;
while(d--)
{
buf[d] = //не знай что сдесь делать

}

}


после вызова функции в массиве должно быть

buf[1] = 'З';
buf[2] = 'Д';
buf[3] = 'Р';
buf[4] = 'А';
buf[5] = 'С';
buf[6] = 'Т';
buf[7] = 'Е';

buf[8] = '1';

buf[9] = '0';

buf[10] = '0';


если это можно сделать функцией принт, не пойму как. Извеняте за такие ребусы smile.gif

Сообщение отредактировал sergey sva - Nov 24 2007, 16:00
Go to the top of the page
 
+Quote Post
DASM
сообщение Nov 24 2007, 16:04
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



int acp = 100 ; // 100
unsigned char str "Здрасте";
unsigned char buf[100];
sprintf (buf, "%s%u", str, acp);
И я так понял Вы хотите после вызова функции в массиве должно быть

buf[0] = 'З'; а не buf[1] = 'З'; (индексация от нуля идет)
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 24 2007, 21:34
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



У Keil неплохой справочник по функциям Си на сайте, что же вам еще нужно?
http://www.keil.com/support/man/docs/c51/c51_sprintf.htm
Go to the top of the page
 
+Quote Post
alvol
сообщение Nov 28 2007, 22:47
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 153
Регистрация: 15-05-06
Из: Николаев
Пользователь №: 17 119



Цитата(sergey sva @ Nov 24 2007, 17:47) *
ужна функция которая будет преобразовывать, строку символов, и инт значения в (массив символов).
например: аргумент функции с ацп = 100


int acp = 100 ; // 100
unsigned char str "Здрасте";
unsigned char buf[100];

Не знаю, может поможет, я заранее заготавливаю себе ASCII строки текста примерно так:

//----- type defenitions ======
typedef unsigned char byte;
typedef unsigned int word;
//===== type defenitions ======

xdata byte TestBuf[16] = {'H','E','L','L','0','_','W','O','R','L','D','!',' ',':','-',')'};

а потом это все выдается на куда нужно без злобных преобразований)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 20:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01387 секунд с 7
ELECTRONIX ©2004-2016