alm_ 0 16 февраля, 2006 Опубликовано 16 февраля, 2006 · Жалоба Потому что оригинал требует много памяти в data_group. Пробуешь вызывать printf/sprintf из особо глубокого вложения - сразу segment overflow. Еще бы этот - сегмент забит под завязку, осталься один свободный байт. Процессор DS80C400 - для тех кто понимает :). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vet 0 16 февраля, 2006 Опубликовано 16 февраля, 2006 · Жалоба есть, например, в составе библиотек avrlib/armlib. http://hubbard.engr.scu.edu/embedded/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 16 февраля, 2006 Опубликовано 16 февраля, 2006 (изменено) · Жалоба Есть исходники 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 в приложенном файле frmwri.rar Изменено 16 февраля, 2006 пользователем KRS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
afe 0 27 февраля, 2006 Опубликовано 27 февраля, 2006 · Жалоба Вот еще вариант упрощенный без библиотек sprintf.c.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Regbist 0 28 февраля, 2006 Опубликовано 28 февраля, 2006 · Жалоба что делаешь на этом процессоре ? если не секрет конечно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
afe 0 1 марта, 2006 Опубликовано 1 марта, 2006 · Жалоба 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 ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GSK 0 3 марта, 2006 Опубликовано 3 марта, 2006 · Жалоба Исходник функций на ассемблере можно найти при установке компилятора С (Borland, Watcom и т.д.) для платформы PC. Только необходимо вырать пункт: установить исходники. А дальше выкидывай лишнее и модифицируй под свой процессор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shandy 0 3 марта, 2006 Опубликовано 3 марта, 2006 · Жалоба Я в свое время перестал пользоваться sprintf-ом. Вместо этого написал свои функции IntToStr, UintToStr, LongToStr, UlongToStr, FloatToStr, скомпилил их в библиотеку и цепляю ко всем своим проектам. Они просто преобразуют соотв. число в строку в xdata, вывод в UART делаю через прерывания. Выигрыш по скорости/памяти - в разы. Тем более, что программа со sprintf иногда необъяснимо подглючивала. Компиляторы- Keil51, Keil166 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться