Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Вопросы начинающих

Вопросы начинающих Прежде чем задать вопрос, стоит воспользоваться поиском

Ответ
 
Опции темы Опции просмотра
Старый 28.09.2008, 13:21   #1
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
Red face Сделать строку для LCD из массива или числа в RAM...

Че то туплю... Воюю с графическим, TIC120.
Вывести строку "Бла-бла..." получается. Просто сделал функцию
putstr("Бла-бла...") по примерам к HT. Все работает.
А вот как в нее передать какое нить число, или значение переменной, никак не соображу... Т.е. надо преобразование в строковую переменную. Ткните носом плз, в пример или доку где это почитать...
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 28.09.2008, 13:24   #2
Alex B.
Super Moderator
 
Аватар для Alex B.
 
Регистрация: 25.02.2007
Адрес: Russia, SPb
Сообщений: 1,674
Вес репутации: 1729/83
Alex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant future
Отправить сообщение для Alex B. с помощью Skype™
По умолчанию Ответ: Сделать строку для LCD из массива или числа в RAM...

(s)printf(), входящий в состав хай-тека или самописный (оптимизированный)
__________________
даташит читать до того , а не после
Alex B. вне форума   Ответить с цитированием
Старый 28.09.2008, 13:35   #3
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
По умолчанию Ответ: Сделать строку для LCD из массива или числа в RAM...

Цитата:
Сообщение от Alex B. Посмотреть сообщение
(s)printf(), входящий в состав хай-тека или самописный (оптимизированный)
С sprintf() никак не въеду в параметры форматирования , да и ресурсов она вроде сожрет немеряно...
Имеешь ввиду тот Abivan-ский пример со старого форума?
Спрошу по другому. В ASCII, допустим, я "вручную" преобразую. Получу массив в памяти, скажем LCDOut[5]={34,35,38,30,31}. Как мне к нему обратиться как строке, точнее передать в мою функцию, как строку?
P.S. Я понимаю, что все запущено но мож на пальцах кто разжует...
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 28.09.2008, 13:50   #4
vitalka
Super Moderator
 
Аватар для vitalka
 
Регистрация: 19.03.2007
Адрес: Львов
Возраст: 45
Сообщений: 3,334
Вес репутации: 2341/106
vitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond repute
По умолчанию Ответ: Сделать строку для LCD из массива или числа в RAM...

Цитата:
Сообщение от majorPAE Посмотреть сообщение
С sprintf() никак не въеду в параметры форматирования , да и ресурсов она вроде сожрет немеряно...
Имеешь ввиду тот Abivan-ский пример со старого форума?
Спрошу по другому. В ASCII, допустим, я "вручную" преобразую. Получу массив в памяти, скажем LCDOut[5]={34,35,38,30,31}. Как мне к нему обратиться как строке, точнее передать в мою функцию, как строку?
P.S. Я понимаю, что все запущено но мож на пальцах кто разжует...
Код:
unsigned char buf[6];

m = 12345;
sprintf (&buf[0], "%d", m);
этот буфер и есть строка, заканчивающаяся на '\0'
передаешь &buf[0] в функцию, а далее memcpy, strcpy...

жрет, конечно......

Последний раз редактировалось vitalka; 28.09.2008 в 13:56.
vitalka вне форума   Ответить с цитированием
Старый 28.09.2008, 14:13   #5
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
Thumbs up Ответ: Сделать строку для LCD из массива или числа в RAM...

Спасибо! Получилось! Теперь буду пытаться понять "физику" процесса. Давно надо было с указателями разобраться...
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 28.09.2008, 15:26   #6
Alex B.
Super Moderator
 
Аватар для Alex B.
 
Регистрация: 25.02.2007
Адрес: Russia, SPb
Сообщений: 1,674
Вес репутации: 1729/83
Alex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant futureAlex B. has a brilliant future
Отправить сообщение для Alex B. с помощью Skype™
По умолчанию Ответ: Сделать строку для LCD из массива или числа в RAM...

вот, где-то взял, а где не помню, то ли на электрониксе, то ли еще где
оптимизированный sprintf
__________________
даташит читать до того , а не после
Alex B. вне форума   Ответить с цитированием
Старый 28.09.2008, 15:59   #7
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
По умолчанию Ответ: Сделать строку для LCD из массива или числа в RAM...

Цитата:
Сообщение от Alex B. Посмотреть сообщение
вот, где-то взял, а где не помню, то ли на электрониксе, то ли еще где
оптимизированный sprintf
Им подменяют стандартный?
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 28.09.2008, 18:52   #8
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/105
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Ответ: Сделать строку для LCD из массива или числа в RAM...

Для хайтека константы писать так удобнее.
Код:
sprintf ("12345");
Но посмотрел, что генерирует Хайтек, написал своё получилось раз в 10 менее хотя использую 4 функции.

Последний раз редактировалось DL36; 28.09.2008 в 19:09.
DL36 вне форума   Ответить с цитированием
Старый 28.09.2008, 18:58   #9
vitalka
Super Moderator
 
Аватар для vitalka
 
Регистрация: 19.03.2007
Адрес: Львов
Возраст: 45
Сообщений: 3,334
Вес репутации: 2341/106
vitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond repute
По умолчанию Ответ: Сделать строку для LCD из массива или числа в RAM...

Цитата:
Сообщение от DL36 Посмотреть сообщение
Для хайтека так удобнее.
Код:
sprintf ("12345", "%d", m);
в смысле?
vitalka вне форума   Ответить с цитированием
Старый 28.09.2008, 19:08   #10
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/105
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Ответ: Сделать строку для LCD из массива или числа в RAM...

Цитата:
Сообщение от vitalka Посмотреть сообщение
в смысле?
Если надо вывести символьную строку
sprintf ("12345");
DL36 вне форума   Ответить с цитированием
Старый 29.09.2008, 01:23   #11
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
Post Кстати, упомянутый пример от Abivan-а со старого форума. Мож кому из новичков сгодится.

Пример Abivan-а. Чуток окультуренный по оформлению. Ссылка на тред: http://www.microchip.ru/phorum/read....&i=4829&t=4829

Код:
typedef unsigned char     BYTE;
/* На всякий случай
typedef unsigned char     BOOL;
typedef unsigned int      WORD;
typedef unsigned int      UINT;
typedef unsigned long     DWORD;
*/

static const unsigned uDimDenom[]={1, 10, 100, 1000, 10000};

static void  Cvtutoa(unsigned uSrc, char *Str)
    {
        BYTE  i,j;
        unsigned uDenom;
        BYTE  bQnt;
        for(i=4, j=0; i; i--)
        {
            uDenom=uDimDenom[i];
            bQnt=0;
            while( uSrc >= uDenom)
            {
                bQnt++ ;
                uSrc -= uDenom ;
            }
            if( bQnt || j&0x1)
            {
                *Str=bQnt +'0';
                Str++;
                j|=1;
            }
        }
        *Str = uSrc +'0';
        *(Str+1)='\0';
    }    //

static void Cvtftoa( double dValue, char *Str, BYTE bSize)
    {
        BYTE  bLen;
        ptr pStr;
        union t_union_Value
        {
            unsigned uValue;
            double  dValue;
        } unValue;
        pStr=Str;
        --bSize;
        if(dValue<0)
        {
            *Str='-';
            ++Str;
            dValue=fabs(dValue);
        }
        unValue.dValue=modf(dValue,&dValue);
        Cvtutoa((unsigned)dValue, Str);
        Str+=strlen(Str);
        *Str++='.';
        bSize-=(Str-pStr);
        bLen=bSize;
        while(bSize>4)
        {
            unValue.dValue*=uDimDenom[4];
            bSize-=4;
        }
        if(bSize) unValue.dValue*=uDimDenom[bSize];
        unValue.uValue=(unsigned)unValue.dValue;
        Cvtutoa(unValue.uValue, Str);
        bSize=strlen(Str);
        *(Str+bLen)='\0';
        for(; bSize; --bSize)
        {
            --bLen;
            *(Str+bLen)=*(Str+bSize-1);
        }
        for(; bSize<bLen; ++bSize)  *(Str+bSize)='0';

    }    //
Мне, для int-ов вполне хватило только Cvtutoa()...
287 циклов, 67 слов.
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 29.09.2008, 14:59   #12
IceS
Super Moderator
 
Регистрация: 01.03.2007
Адрес: St. Petersburg
Возраст: 41
Сообщений: 3,246
Вес репутации: 3684/118
IceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond repute
Отправить сообщение для IceS с помощью ICQ
По умолчанию Ответ: Сделать строку для LCD из массива или числа в RAM...

Цитата:
Сообщение от majorPAE Посмотреть сообщение
В ASCII, допустим, я "вручную" преобразую. Получу массив в памяти, скажем LCDOut[5]={34,35,38,30,31}. Как мне к нему обратиться как строке, точнее передать в мою функцию, как строку?
в переменной (вернее в массиве) добавить еще один элемент, и записать туда ноль, потом этот массив передать в функцию вывода текста на ЖКИ.
Код:
  LCDOut[6]={ '34', '35', '38', '30', '31', 0x00};
  print( LCDOut );
или
Код:
  print( &LCDOut[0] );
IceS вне форума   Ответить с цитированием
Старый 03.10.2008, 13:52   #13
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
По умолчанию Продолжам разбираться...

Теперь столкнулся с такой фишкой. Отлаженная в НТ для 16-х функция вывода строки:
Код:
void putstr(const char *s, unsigned char X, unsigned char Y)
{
     SetXY(X,Y);
    while(*s) putchar(*s++);                // Points to one ASCII to be written one at a time.
}    //    end putstr
использующая
Код:
void putchar(char character)    // помещаем символ ch (в ASCII) для фонта 8х8
{
    char tablept, char_column;
    signed char count;
    
    if ((character<0x20)||(character>0x7f)) return;        // Exit function if character is not found.
    tablept = (character - 32);                            // Point to the columns of the character in the table.

    I2CStart();
    I2COutByte(LCD_ADR);
    I2COutByte(COM2);    
       for (count=5;count>0;count--)                       // Draw the columns to print the character.
        {
            char_column = table[tablept][5-count];
            char_column <<=1;                            // сдвигаем символ вниз
            I2COutByte(char_column);
        }
    I2COutByte(0x00);                                      // 1 pixel spacing per character.
    I2CStop();
    CLRWDT();    
}    //    end putchar
вызывалась:
Код:
 putstr("Test TIC48",1,0);        // A test message.
Напрочь отказывается работать в MCC18...
putchar(char character) при задании ей кода символа все отрабатывает правильно.
При компиляции выдаются варнинги:
Код:
D:\PIC Project\USB\Liht_4550\user\PhisioLiht.c:252:Warning [2054] suspicious pointer conversion
D:\PIC Project\USB\Liht_4550\user\PhisioLiht.c:263:Warning [2066] type qualifier mismatch in assignment
D:\PIC Project\USB\Liht_4550\user\PhisioLiht.c:264:Warning [2066] type qualifier mismatch in assignment
на вызов putstr. Похоже что-то не устраивает с преобразованием типов.
Разъясните кто нить, плз!
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 03.10.2008, 15:24   #14
IceS
Super Moderator
 
Регистрация: 01.03.2007
Адрес: St. Petersburg
Возраст: 41
Сообщений: 3,246
Вес репутации: 3684/118
IceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond repute
Отправить сообщение для IceS с помощью ICQ
По умолчанию Ответ: Продолжам разбираться...

Код:
 putstr("Test TIC48",1,0);        // A test message.
а если:
Код:
 const  unsigned char STR0 = "Test TIC48";
 putstr( STR0,1,0);        // A test message.
IceS вне форума   Ответить с цитированием
Старый 03.10.2008, 15:58   #15
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
По умолчанию Ответ: Продолжам разбираться...

Цитата:
Сообщение от IceS Посмотреть сообщение
а если:
Код:
 const  unsigned char STR0 = "Test TIC48";
 putstr( STR0,1,0);        // A test message.
Код:
D:\PIC Project\USB\Liht_4550\user\PhisioLiht.c:263:Error: syntax error
Halting build on first failure as requested.

Да вроде как в моем случае с размерностью указателей на RAM и ROM проблема. Как ее обойти MCC18? Вариант из доки на компилятор не очень нравится..
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 03.10.2008, 16:02   #16
AVB
Senior Member
 
Регистрация: 03.03.2008
Сообщений: 107
Вес репутации: 102/48
AVB will become famous soon enoughAVB will become famous soon enough
По умолчанию Ответ: Продолжам разбираться...

Процессор то какой? Могут возникнуть трудности с выводом char *, или const char *, или const char [], или оптимальность будет не на высоте.
AVB вне форума   Ответить с цитированием
Старый 03.10.2008, 16:05   #17
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
По умолчанию Ответ: Продолжам разбираться...

Цитата:
Сообщение от AVB Посмотреть сообщение
Процессор то какой? Могут возникнуть трудности с выводом char *, или const char *, или const char [], или оптимальность будет не на высоте.
18F4550
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 03.10.2008, 17:23   #18
pal1222@yandex.ru
Senior Member
 
Регистрация: 30.09.2008
Сообщений: 1,600
Вес репутации: 3789/97
pal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond repute
По умолчанию вероятно стоит посмотреть раздел MCC18 ram/rom qualifiers...

const == rom только у HT. А в примере почему то пропали квадратные скобки, массив там должен был инициализироваться.
pal1222@yandex.ru вне форума   Ответить с цитированием
Старый 03.10.2008, 23:03   #19
vitalka
Super Moderator
 
Аватар для vitalka
 
Регистрация: 19.03.2007
Адрес: Львов
Возраст: 45
Сообщений: 3,334
Вес репутации: 2341/106
vitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond repute
По умолчанию Ответ: Продолжам разбираться...

Цитата:
Сообщение от majorPAE Посмотреть сообщение
Напрочь отказывается работать в MCC18...
ну, чтоб без ворнингов, то
Код:
putstr( (const char *)"Test TIC48",1,0 );
vitalka вне форума   Ответить с цитированием
Старый 03.10.2008, 23:09   #20
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
Red face Итак, результат. Поправьте, если бред...

Кое как победил. Кому нить из начинающих пригодиться.
Получается, в соответствии с доками и в реале, что для MCC18 без двух различных функций не обойтись.
Для вывода константной строки (из ROM) фунция должна быть объявлена так:
Код:
void putstr_rom(auto const rom char *s, unsigned char X, unsigned char Y)
и вызываться может как мне хотелось. Т.е.:
Код:
putstr("Test TIC48",1,0);        // A test message.
Для вывода переменной строки (из RАM) фунция должна быть объявлена так:
Код:
void putstr(unsigned char *s, unsigned char X, unsigned char Y)
и вызывается. как тут уже говорилось, через указатель:
Код:
putstr(&LCDOut1[0],31,1);
Остался непонятным вопрос: по документации, указатель на строку в RАM должен быть объявлен как const unsigned char *s. Однако работает и так, как у меня...
Чем это может быть чревато?
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 03.10.2008, 23:13   #21
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
По умолчанию Ответ: Продолжам разбираться...

Попробую, но боюсь, что вопрос глубже. И просто явным преобразованием типов не обойтись... Я ниже запостил, как удалось победить все ворнинги.
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 03.10.2008, 23:44   #22
vitalka
Super Moderator
 
Аватар для vitalka
 
Регистрация: 19.03.2007
Адрес: Львов
Возраст: 45
Сообщений: 3,334
Вес репутации: 2341/106
vitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond repute
По умолчанию Ответ: Итак, результат. Поправьте, если бред...

Цитата:
Сообщение от majorPAE Посмотреть сообщение
Остался непонятным вопрос: по документации, указатель на строку в RАM должен быть объявлен как const unsigned char *s. Однако работает и так, как у меня...
Чем это может быть чревато?
если память не изменяет, то в С const unsigned char означет указание на то, что сей чар изменяться не будет (т.е. при попытке или случайном изменении, компилятор выдаст ошибку), ну а в данном случае - указатель, вроде так
vitalka вне форума   Ответить с цитированием
Старый 03.10.2008, 23:47   #23
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
По умолчанию Ответ: Продолжам разбираться...

Цитата:
Сообщение от vitalka Посмотреть сообщение
ну, чтоб без ворнингов, то
Код:
putstr( (const char *)"Test TIC48",1,0 );
Ворнингов действительно, нет. Но и не работает...
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Старый 03.10.2008, 23:53   #24
vitalka
Super Moderator
 
Аватар для vitalka
 
Регистрация: 19.03.2007
Адрес: Львов
Возраст: 45
Сообщений: 3,334
Вес репутации: 2341/106
vitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond reputevitalka has a reputation beyond repute
По умолчанию Ответ: Продолжам разбираться...

Цитата:
Сообщение от majorPAE Посмотреть сообщение
Ворнингов действительно, нет. Но и не работает...
согласен
нужно квалификатор rom добавить, иначе чтения из прогр. памяти не будет, а именно там "Test TIC48" и находится
vitalka вне форума   Ответить с цитированием
Старый 03.10.2008, 23:57   #25
majorPAE
Super Moderator
 
Аватар для majorPAE
 
Регистрация: 26.02.2007
Возраст: 58
Сообщений: 2,221
Вес репутации: 2214/94
majorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond reputemajorPAE has a reputation beyond repute
Отправить сообщение для majorPAE с помощью ICQ Отправить сообщение для majorPAE с помощью Skype™
По умолчанию Ответ: Итак, результат. Поправьте, если бред...

Цитата:
Сообщение от vitalka Посмотреть сообщение
если память не изменяет, то в С const unsigned char означет указание на то, что сей чар изменяться не будет (т.е. при попытке или случайном изменении, компилятор выдаст ошибку), ну а в данном случае - указатель, вроде так
Ну когда это для ROM, то вроде понятно. Забитая строка будет лежать по определенному адресу. А вот указатель на строку из RAM будет разным. Какой смысл в этом квалификаторе? Причем, и в доке по НТ так же объявлять требуют...
__________________
ЗАКОH ТРУДHОСТЕЙ БИЛЛИHГСА: Большинство тpyдностей пpоисходит оттого, что мы слишком быстpо говоpим ДА и недостаточно быстpо - НЕТ.(с)
"Очередной шаг вперед, как правило, результат хорошего пинка в зад!"(С)
majorPAE вне форума   Ответить с цитированием
Ответ

Метки
float2ascii, int2ascii, mcc18, rom, sprintf, числов в строку


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблемка с PIC16F628A bereg_ok Продукция MICROCHIP 72 07.09.2007 11:00


Часовой пояс GMT +3, время: 05:16.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot