Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Оптимальный старт в программировании МК на С

Непрочитано 16.04.2013, 21:36  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: FlowCode это оптимальный старт в програмировании AVR+PIC

oleg110592, Не проще вам будет здесь же задать вопрос ?
Похоже чтение литературы вам в прок не идет, видимо вы обучались по "кухаркиным" статьям и методом тыка. Отсюда и не понимание понятий , определений .
Заметьте я не обс...ю , не унижаю, вам точно нужна помощь.
Хотя бы та же структура сишного проекта , колоссальные грабли новиков...
Реклама:
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 16.04.2013 в 21:45.
dosikus вне форума  
Непрочитано 16.04.2013, 21:51  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: FlowCode это оптимальный старт в програмировании AVR+PIC

Ну зря вы Кернигана и Ричи назвали кухарками
Вот этого не могу понять: Длина массива S не указана, так как она определена в MAIN. И где она определена?
Извините за такой текст - как было
Код:
#DEFINE  MAXLINE  1000 /* MAXIMUM INPUT
       LINE SIZE */
 MAIN()  /* FIND LONGEST LINE */
 {
 INT LEN; /* CURRENT LINE LENGTH */
 INT MAX; /* MAXIMUM LENGTH SEEN SO FAR */
 CHAR LINE[MAXLINE]; /* CURRENT INPUT LINE */
 CHAR SAVE[MAXLINE]; /* LONGEST LINE, SAVED */

 MAX = 0;
 WHILE ((LEN = GETLINE(LINE, MAXLINE)) › 0)
     IF (LEN › MAX) {
    MAX = LEN;
    COPY(LINE, SAVE);
     }
     IF (MAX › 0)   /* THERE WAS A LINE */
    PRINTF("%S", SAVE);
 }
 GETLINE(S,LIM) /* GET LINE INTO S,RETURN LENGTH */
 CHAR S[];
 INT LIM;
 {
    INT C, I;

    FOR(I=0;I‹LIM-1 && (C=GETCHAR())!=EOF && C!='\N';++I)
    S[I] = C;
    IF (C == '\N')  {
  S[I] = C;
  ++I;
    }
    S[I] = '\0';
    RETURN(I);
 }

 COPY(S1, S2)    /* COPY S1 TO S2;
               ASSUME S2 BIG ENOUGH */
 CHAR S1[], S2[];
 {
 INT I;

 I = 0;
 WHILE ((S2[I] = S1[I] != '\0')
    ++I;
 }

    Функция MAIN и GETLINE общаются как через пару аргумен-
тов, так и через возвращаемое значение. аргументы GETLINE
описаны в строках

    CHAR S[];
    INT LIM;

которые указывают, что первый аргумент является массивом, а
второй - целым.
    Длина массива S не указана, так как она определена в
MAIN . функция GETLINE использует оператор RETURN для пере-
дачи значения назад в вызывающую программу точно так же, как
это делала функция POWER. Одни функции возвращают некоторое
нужное значение; другие, подобно COPY, используются из-за их
действия и не возвращают никакого значения.
я обс...ю тоже переведите, я подумал о нехорошем
oleg110592 вне форума  
Непрочитано 16.04.2013, 21:59  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: FlowCode это оптимальный старт в програмировании AVR+PIC

Сообщение от oleg110592 Посмотреть сообщение
Ну зря вы Кернигана и Ричи назвали кухарками
Не я не о них . Имелись ввиду многочисленные бложики .
А внизу именно то что вы подумали, только частица "не" вылетела ...
Уже исправил...
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 16.04.2013, 22:08  
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: FlowCode это оптимальный старт в програмировании AVR+PIC

Сообщение от oleg110592 Посмотреть сообщение
но вы и не доказали обратного
Еще вчера я хотел помочь вам двоим разобраться в этом вопросе, но...
Давайте по порядку...
  1. Отвечая на запрос "ну приведите хоть один пример", я привел два примера, один из них снабдил иллюстрациями, а про второй сказал, где эти иллюстрации можно найти.
  2. Вы оба продолжили спорить, даже не ознакомившись с предложенной мной информацией, не вникая в суть. Если, содержание высказываний, с которыми вы все это время спорите, вас обоих не интересует, значит спорите вы "из прынцыпа", а это мне неинтересно.
  3. Причину, по которой вас не интересуют аргументы оппонентов, можно разглядеть в целом ряде ваших высказываний из серии "у меня тут работает как-то, и ладно":
Сообщение от oleg110592 Посмотреть сообщение
структуры и указатели не применяю
Сообщение от oleg110592 Посмотреть сообщение
с 2006г программа ... включает ... и опрашивает ... без сбоев
Сообщение от akegor Посмотреть сообщение
трудятся контроллеры автономно, закопанные в землю ... со структурами и союзами
Сообщение от oleg110592 Посмотреть сообщение
пока убогого багажа знаний хватает
В целом, становится очевидным вывод, что эта тема вас обоих попросту не интересует - именно поэтому доводы, доказательства и фактические примеры вами даже не рассматриваются ("книги Вашей я не читал, но компетентно заявляю!").

Сообщение от oleg110592 Посмотреть сообщение
ткните хоть носом, какую книгу почитать, может KR устарели
Вы заявили себя знатоком ассемблера недавно, не так ли? Если честно, я не понимаю, как человек, имеющий большой опыт разработки на асме, может не видеть сути в учебнике по Си. И поэтому я затрудняюсь сейчас предложить учебник. Думаю, что сначала Вам нужно сформулировать для себя базис - для чего вообще нужны компиляторы, какие основные задачи они решают. А затем уже читать учебники, все время стремясь понять в прочитанном материале, какие задачи и как должен решать компилятор, чтобы отрабатывать соответствующие языковые конструкции.
____________________________________
Upd:
Сообщение от oleg110592 Посмотреть сообщение
Длина массива S не указана, так как она определена в MAIN
Ну вот и подтверждение тому, что Вы читаете не для того, чтобы понять, а с какой-то иной целью.
Там же русским по белому написано, что S[] - это не переменная, а параметр функции:
Сообщение от oleg110592 Посмотреть сообщение
аргументы GETLINE
описаны в строках
CHAR S[];
INT LIM;
Кстати - Вы уверены, что это вообще Си? Такие вещи, как "CHAR", "RETURN" языку Си не соответствуют.
__________________
There's always more than one way to skin a cat.

Последний раз редактировалось tempora; 16.04.2013 в 22:26.
tempora вне форума  
Непрочитано 16.04.2013, 22:23  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: FlowCode это оптимальный старт в програмировании AVR+PIC

Спасибо за объяснение - думал всегда параметры в круглых скобках.
Ассемблера не знаток - такого не говорил, так не много писал когда си еще не было.
Ну все таки на второй (или первый?) пример CV выдал варнинг. Другой пример пока не понял в чем проблема - попробую разобраться.
ладно признаю: -1 CV
oleg110592 вне форума  
Непрочитано 16.04.2013, 22:34  
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: FlowCode это оптимальный старт в програмировании AVR+PIC

Сообщение от oleg110592 Посмотреть сообщение
Ну все таки на второй (или первый?) пример CV выдал варнинг
Объяснять разницу между предупреждением и ошибкой я сейчас не буду, но она принципиальная.
_______________________________
Сообщение от oleg110592 Посмотреть сообщение
Ассемблера не знаток - ... так не много писал
А тогда зачем и на каком основании было написано это? :
Сообщение от oleg110592 Посмотреть сообщение
самые надежные программы написаны на ассемблере.
__________________
There's always more than one way to skin a cat.

Последний раз редактировалось tempora; 16.04.2013 в 22:48.
tempora вне форума  
Непрочитано 16.04.2013, 22:37  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: FlowCode это оптимальный старт в програмировании AVR+PIC

Сообщение от oleg110592 Посмотреть сообщение
Ну зря вы Кернигана и Ричи назвали кухарками
Вот этого не могу понять: Длина массива S не указана, так как она определена в MAIN. И где она определена?
Извините за такой текст - как было
Код:
#DEFINE  MAXLINE  1000 /* MAXIMUM INPUT
       LINE SIZE */
 MAIN()  /* FIND LONGEST LINE */
 {
 INT LEN; /* CURRENT LINE LENGTH */
 INT MAX; /* MAXIMUM LENGTH SEEN SO FAR */
 CHAR LINE[MAXLINE]; /* CURRENT INPUT LINE */
 CHAR SAVE[MAXLINE]; /* LONGEST LINE, SAVED */

 MAX = 0;
 WHILE ((LEN = GETLINE(LINE, MAXLINE)) › 0)
     IF (LEN › MAX) {
    MAX = LEN;
    COPY(LINE, SAVE);
     }
     IF (MAX › 0)   /* THERE WAS A LINE */
    PRINTF("%S", SAVE);
 }
 GETLINE(S,LIM) /* GET LINE INTO S,RETURN LENGTH */
 CHAR S[];
 INT LIM;
 {
    INT C, I;

    FOR(I=0;I‹LIM-1 && (C=GETCHAR())!=EOF && C!='\N';++I)
    S[I] = C;
    IF (C == '\N')  {
  S[I] = C;
  ++I;
    }
    S[I] = '\0';
    RETURN(I);
 }

 COPY(S1, S2)    /* COPY S1 TO S2;
               ASSUME S2 BIG ENOUGH */
 CHAR S1[], S2[];
 {
 INT I;

 I = 0;
 WHILE ((S2[I] = S1[I] != '\0')
    ++I;
 }

    Функция MAIN и GETLINE общаются как через пару аргумен-
тов, так и через возвращаемое значение. аргументы GETLINE
описаны в строках

    CHAR S[];
    INT LIM;

которые указывают, что первый аргумент является массивом, а
второй - целым.
    Длина массива S не указана, так как она определена в
MAIN . функция GETLINE использует оператор RETURN для пере-
дачи значения назад в вызывающую программу точно так же, как
это делала функция POWER. Одни функции возвращают некоторое
нужное значение; другие, подобно COPY, используются из-за их
действия и не возвращают никакого значения.
я обс...ю тоже переведите, я подумал о нехорошем
Извиняюсь Вас спросить - а ЭТО откуда? Пролистнул книгу, похожее нашел, но только ПОХОЖЕЕ, без дичи, которая в приведенной вырезке. У меня стр 42, параграф 1.9
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 16.04.2013, 23:07  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: FlowCode это оптимальный старт в програмировании AVR+PIC

откуда?http://lib.ru/CTOTOR/kernigan.txt
А тогда зачем и на каком основании было написано это? :
я там писал - это мое личное (ошибочное) имхо
Проверил пример, поскольку нужных функций не было - подкорректировал, не знаю правильно ли
Код:
struct  {
        char value, code;
    } xlattable[16] = {
        {'0',0}, {'1',0}, {'2',0}, {'3',0},
        {'4',0}, {'5',0}, {'6',0}, {'7',0},
        {'8',0}, {'9',0}, {'A',0}, {'B',0},
        {'C',0}, {'D',0}, {'E',0}, {'F',0}
    };
void    BuildXlat()
{
unsigned char   i;

        printf("Initiating XLAT table...\r");
        for(i=0; i ‹ (sizeof(xlattable)/sizeof(*xlattable)); ++i)
        {
            xlattable[i].code = xlattable[i].value;
            
            printf("xlattable[");
            printf("%d",i);
            printf("] = {0x");
            printf("%d",xlattable[i].value);
            printf(";0x");
            printf("%d",xlattable[i].code);
            printf("}\r");
        }
        printf("Initiating XLAT table done.\r");
}
протеус
Код:
Initiating XLAT table...
xlattable[0] = {0x48;0x48}
xlattable[1] = {0x49;0x49}
xlattable[2] = {0x50;0x50}
xlattable[3] = {0x51;0x51}
xlattable[4] = {0x52;0x52}
xlattable[5] = {0x53;0x53}
xlattable[6] = {0x54;0x54}
xlattable[7] = {0x55;0x55}
xlattable[8] = {0x56;0x56}
xlattable[9] = {0x57;0x57}
xlattable[10] = {0x65;0x65}
xlattable[11] = {0x66;0x66}
xlattable[12] = {0x67;0x67}
xlattable[13] = {0x68;0x68}
xlattable[14] = {0x69;0x69}
xlattable[15] = {0x70;0x70}
Initiating XLAT table done.
oleg110592 вне форума  
Непрочитано 16.04.2013, 23:42  
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: FlowCode это оптимальный старт в програмировании AVR+PIC

Сообщение от oleg110592 Посмотреть сообщение
Проверил пример,
К этому, возможно, еще вернемся, но позже. Хотя, если всё же прочтёте то, что я рекомендовал прочесть, может и сами увидите эту "чудесную" картину CV.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 17.04.2013, 00:15  
oleg110592
Гражданин KAZUS.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: FlowCode это оптимальный старт в програмировании AVR+PIC

чуть подправил для проверки - вроде из массива правильные значения берет:
Код:
Initiating XLAT table...
xlattable[0] = {0x0;0x0}
xlattable[1] = {0x1;0x0}
xlattable[2] = {0x2;0x0}
xlattable[3] = {0x3;0x0}
xlattable[4] = {0x4;0x0}
xlattable[5] = {0x5;0x0}
xlattable[6] = {0x6;0x0}
xlattable[7] = {0x7;0x0}
xlattable[8] = {0x8;0x0}
xlattable[9] = {0x9;0x0}
xlattable[10] = {0xA;0x0}
xlattable[11] = {0xB;0x0}
xlattable[12] = {0xC;0x0}
xlattable[13] = {0xD;0x0}
xlattable[14] = {0xE;0x0}
xlattable[15] = {0xF;0x0}
Initiating XLAT table done.
дальше сдаюсь
oleg110592 вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимальный лазерник для ЛУТ Kabron Делимся опытом 187 31.05.2016 10:51
Оптимальный привод тележки весом 200кг d-f-m Производственное оборудование 18 12.07.2010 00:29
[Решено] Оптимальный коттеджный домофон LAVR12 Автоматика и аппаратура связи 0 22.04.2010 20:17
О программировании AVR на C++ neiver Микроконтроллеры, АЦП, память и т.д 55 24.03.2010 19:33
Оптимальный ламинатор для ЛУТ snakesoft Делимся опытом 7 13.01.2010 22:41


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.