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

 
 
> ищу исходники функции printf/sprintf, для применения в Keil для 51
alm_
сообщение Feb 16 2006, 08:09
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 25
Регистрация: 2-02-06
Пользователь №: 13 904



Потому что оригинал требует много памяти в data_group. Пробуешь вызывать printf/sprintf из особо глубокого вложения - сразу segment overflow. Еще бы этот - сегмент забит под завязку, осталься один свободный байт. Процессор DS80C400 - для тех кто понимает smile.gif.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 7)
vet
сообщение Feb 16 2006, 10:02
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



есть, например, в составе библиотек avrlib/armlib.
http://hubbard.engr.scu.edu/embedded/


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 16 2006, 10:43
Сообщение #3


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Есть исходники IAR библиотеки
Код
/*                      - PRINTF.C -

   The ANSI "printf" function.

   $Name: Tyrone3b Tyrone3 Tyrone2 Tyrone1b Tyrone1 V3_34O V3_34N Spiff7 V3_34M V3_34L V3_34K V3_34J V3_34I V3_34H V3_34G $    

   Copyright 1986 - 1999 IAR Systems. All rights reserved.
*/

#include "stdarg.h"
#include "stdio.h"
#include "icclbutl.h"

static void put_one_char(char c, void *dummy)
{
  putchar (c);
  (void)dummy;  /* Warning on this line OK (Optimized Away) */
}

int printf(const char *format, ...)                    /* Our main entry */
{
  va_list ap;
  int nr_of_chars;

  va_start(ap, format);      /* Variable argument begin */
  nr_of_chars = _formatted_write(format, put_one_char, (void *) 0, ap);
  va_end(ap);                /* Variable argument end */
  return nr_of_chars;        /* According to ANSI */
}


исходник _formatted_write в приложенном файле

Сообщение отредактировал KRS - Feb 16 2006, 10:51
Прикрепленные файлы
Прикрепленный файл  frmwri.rar ( 3.91 килобайт ) Кол-во скачиваний: 86
 
Go to the top of the page
 
+Quote Post
afe
сообщение Feb 27 2006, 14:13
Сообщение #4


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

Группа: Свой
Сообщений: 94
Регистрация: 4-05-05
Из: Харьков
Пользователь №: 4 740



Вот еще вариант упрощенный без библиотек
Прикрепленные файлы
Прикрепленный файл  sprintf.c.txt ( 25.27 килобайт ) Кол-во скачиваний: 311
 


--------------------
SY AfE
Go to the top of the page
 
+Quote Post
Regbist
сообщение Feb 28 2006, 17:34
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 20
Регистрация: 8-09-05
Пользователь №: 8 357



что делаешь на этом процессоре ? если не секрет конечно
Go to the top of the page
 
+Quote Post
afe
сообщение Mar 1 2006, 02:33
Сообщение #6


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

Группа: Свой
Сообщений: 94
Регистрация: 4-05-05
Из: Харьков
Пользователь №: 4 740



Esli eto ko me, to eto absolutno rabochiy isxodnik perepaxaniy s IAR'vskoy libi (?) (kotoriy ya ispol'zoval na chipax AVR 8515, i mega103), project ~1998-1999 goda, uprosheniy po prichine ne xvatki mesta, a chto eto bilo:

Uchet po 24 liniyam potrebleniya electroinergii s podstancii (krupnogo zavoda),
logalos' kazhdie 3 minuti v flash (AT49DBxxx), s RS232 mozhno bilo v luboe vremya poluchit' informaciyu za poslediy god (tarifi v raznoe vremya dlya predpriyatiy raznie, eto nuzhno dlya togo chtobi mozhno bilo bi planirovat' kogda chego puskat'), i v tozhe vremya posmotret' na LCD chego da kak , on eshe reaktivnuyu energiyu mog regulirovat' chtobi obrratno otdavat' , chtobi lishnix kilovat ne nashitali i tak dalee, vsego ne upomnish' proexali ...


--------------------
SY AfE
Go to the top of the page
 
+Quote Post
GSK
сообщение Mar 3 2006, 10:18
Сообщение #7


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

Группа: Свой
Сообщений: 157
Регистрация: 1-03-06
Пользователь №: 14 835



Исходник функций на ассемблере можно найти при установке компилятора С (Borland, Watcom и т.д.) для платформы PC. Только необходимо вырать пункт: установить исходники. А дальше выкидывай лишнее и модифицируй под свой процессор.
Go to the top of the page
 
+Quote Post
Shandy
сообщение Mar 3 2006, 16:08
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 3-03-06
Пользователь №: 14 931



Я в свое время перестал пользоваться sprintf-ом. Вместо этого написал свои функции IntToStr, UintToStr, LongToStr, UlongToStr, FloatToStr, скомпилил их в библиотеку и цепляю ко всем своим проектам. Они просто преобразуют соотв. число в строку в xdata, вывод в UART делаю через прерывания. Выигрыш по скорости/памяти - в разы. Тем более, что программа со sprintf иногда необъяснимо подглючивала. Компиляторы- Keil51, Keil166
Go to the top of the page
 
+Quote Post

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

 


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


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