
Hi-tech PICC printf проблем
Здравейте,
Пиша програма за PIC16F876A и използвам Hi-Tech PICC в средата на MPLAB.
Използвам серийния интерфейс за контролиране на някои от параметрите и най - общо за debug на софта.
Проблема възникна когато реших да изпратя long число - числото, което получих не беше това което очаквах
и започнах да изследвам проблема.
Естественно, че грешката беше моя

бях задал %u вместо %l, оправих го и тук беше голямата изненада - при компилацията получих следното: "Warning[000] D:\.....: error in format string", викам си - сигурно не е %l, (макар че в manual-а изрично си го пише %l) a %L - същия ефект. При това в Build Options съм избрал "Integer & long", пробвах и с "integer, long & float" - няма ефект. Проконтролирах ключа който MPLAB-а включва в командния ред на линкера и видях, че съвпада, а именно -LL или -LF. Викам си сигурно процесора ми е в "Baseline" според тяхната класификация а за тях се поддържа само integer printf, отворих \lib\picinfo.ini и видях че проца е в highend, т.е. printf-а поддържа long и float.
После за да съм сигурен, че числото, което подавам на printf-а е наистина това което очаквам, го преобразувах в char-ове и ги изпратих последователно с putch - числото е вярно а printf-а изкарва само една част от него.
Викам си - както и да е, ама чакай да си подредя малко числата на екрана. Имам едно число, което се изменя от 1 до 999 и му слагам %3.3u и
следва страхотна изненада - получавам следното 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, 10, 11 и т.н. като това се повтаря на всяка 10-ца. Гледам и не вярвам на очите си

. Сменям форматиращия параметър на %3.2u и сега поредицата стига до 'C', което означава че с числото след точката се сменя основата на бройната система - старшен ефект

. А инъче числото преди точката наистина отделя необходимия брой позиции.
Та такива ми ти работи с Hi-tech PICC.
Някой знае ли нещо по въпроса?
P.S. Между другото бях с 9.5 и върнах 8.05 обаче все едно и също...
Истината е, че при 9.5 ми даваше че използвам стари ключове в командния ред, ама не ми се играеше да ги оправям.
Интересно защо от майкрочип не са сложили съответното управление в MPLAB-а, може би в някоя от следващите версии?!..