На форуме 90% новых тем "от начинающих", раздел смысла делать нет.
Прошу прощения, Вы что, их считали? Хотя бы не пускать в серьезные разделы новичков и разгоряченных малолеток Shift-ящих на всех и вся, если им чей-нибудь ответ не угодил. Ввести проверку на глупость, например 10 вопросов по теме форума (Например, чтобы активировать возможность писать что-либо в форуме "Микроконтроллеры и ПЛИС", нужно правильно ответить на 10 вопросов по этой теме. Вопросы не сложные, ответы на которые могут формировать основу для начинающего программиста МК и ПЛИС), если не прошел проверку - отправлять в раздел для новичков, а серьезные разделы для них read-only. Ну или на крайний случай помечать подобную тему особым значком. Мол здесь малыши возятся.
Я вообще забанил бы 0259 на пару деньков. Для профилактики.
Переменная в языке си - это именованная область памяти, в которой содержится определенное значение.
тип имя переменной [= значение];
Рассмотри подробнее каждый элемент синтаксиса переменной:
тип: размер выделяемой памяти; имя переменной: любое английское название; значение: (необязательный параметр) можно сразу присвоить определенное значение для нашей переменной;
int a,b,c; /* Объявляем три переменные типа int без указания имени */
float d = 2.01, f; /* Одну переменную просто объявляем, а вторую инициализируем значением */
дальше описывается какие бывают типы переменных и многое другое
непонятно? открывай другую ссылку, изучай, потом сформулируй что конкретно тебе непоятно - помогут а насильно впихивать в твою голову то, что тебе самому лень впихнуть никто не должен
ну а если после всего этого до тебя не дошло - бросай программирование и иди пасти баранов
_________________ Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Я ПОНЯЛ ХОЧЕШЬ ДОБИТЬСЯ ИЩИ САМ ДОЛЬШЕ БУДИТ НО НАВЕРНЯКА
Можно считать верхом грамотности.
Цитата:
Код:
delay_ms(100);
ВОТ И МОЙ КОД БЕЗ ВСЯКИХ ПЕРЕМЕННЫХ
Нет переменных? Вы уверены? Вы знаете, что кроется за этой строчкой? Все-таки начинайте читать. Учебник русского языка. Программирование оставьте "на потом".
Помогите, не могу додуматься. Есть код, при нажатии на кнопку начинает мигать светодиод. Как сделать так чтобы при мигающем светодиоде нажать кнопку и тем самым прекратить процесс мигания?
Если я я правильно понял вопрос: в вашем коде по умолчанию светодиод горит(потушен), при нажатии на кнопку - мигает. А вы хотите наоборот, по умолчанию мигает, при нажатии горит(потушен). Тогда это будет так:
Я просто в шоке. Честно говоря, я и до встречи этого персонажа был немного в шоке от количества тем вида "Памогите нероботает кодне зопускается атмега хэлп". Все-таки технический форум, программирование, электроника, а тут такое, что кровь из глаз течет. Но он просто меня добил. Какое там программирование микроконтроллеров, там даже до программирования на PHP - как до Пекина раком! Черт, да моя бабушка уже давно бы поняла, как объявлять переменную.
Ну не знаю... Пойду протру стол от крови, которая из ушей и глаз натекла.
, первый элемент - текущий день недели. Сдвиг адреса на 1 и текущий день - текст дня недели. Умнжение адреса на 8*переменная языка - текст в другом языке..
Так вы уже создали фактически тип данных Weekdays, создайте еще и тип Week, тогда можно создать массив из недель и указатель уже на этот тип данных делать.
Последний раз редактировалось vitalik_1984 Пт фев 15, 2013 18:12:43, всего редактировалось 1 раз.
Ваша организация меню как-то не похожа на то, что вы хотите получить. Что некрасивого в структуре? Менюшка менюшкой, а язык языком. Язык это смещение к нулевому элементу перечисления адресов для строк пункта меню. А структура создается для более удобного смещения.
Это то же самое, что и в первоначальном варианте. Нужно разделить дни разных языков,
Код:
typedef struct WeekDays ={ {(uint8_t*)Today, // это спорный элемент, как его вообще можно было дать ему имя 1? //и как им пользоваться, если он во флеш? //при смене языка будет всегда меняться на понедельник? (uint8_t*) Monday, (uint8_t*)Tuesday, (uint8_t*)Wednesday, (uint8_t*)Thursday, (uint8_t*)Friday, (uint8_t*)Saturday, (uint8_t*)Sunday, }
Порядковый номер языка помнить не придется, если заблаговременно создать соответствующее перечисление (enum). "Магические" константы вообще отнюдь не украшают программу, а перечисление легко расширяется при необходимости добавления новых языков.
Если инкапсулировать словарь в отдельном модуле, достаточно реализовать в этом модуле свойство (вроде CurrentLanguage), устанавливать его при инициализации программы и дальше вообще не заморачиваться языковыми проблемами (ну или переключать по ходу выполнения программы, если вдруг реально потребуется смена языка "на ходу").
_________________ Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет. J. Ganssle
Порядковый номер языка помнить не придется, если заблаговременно создать соответствующее перечисление (enum). "Магические" константы вообще отнюдь не украшают программу, а перечисление легко расширяется при необходимости добавления новых языков.
Если инкапсулировать словарь в отдельном модуле, достаточно реализовать в этом модуле свойство (вроде CurrentLanguage), устанавливать его при инициализации программы и дальше вообще не заморачиваться языковыми проблемами (ну или переключать по ходу выполнения программы, если вдруг реально потребуется смена языка "на ходу").
Спасибо. У меня в принципе так и реализовано.
Плюс - каждый пункт меню имеет указатель на переменную и знает тип переменной для манипуляции с оной (как читать, изменит, отобразит итд..)
Дни недели - ARRAYOFSTRINGS, в раме держу саму переменную дня недели и указатели на тектст во флеш памяти. Но хочется держать только указатель на переменную, а дни недели во флеше. Да и боле читабельно сделать, а не через двухмерный массив.
...и боле читабельно сделать, а не через двухмерный массив.
Я бы вообще спрятал массив от клиента внутри модуля календаря как деталь реализации. Наружу предоставил бы только минимальный интерфейс вроде такого:
- typedef enum Language ... - собственно тип для выбора языка; - typedef enum DayOfWeek ... - тип для дней недели; - void setCurrentLanguage(Language l) / Language getCurrentLanguage(void) - пара мутатор/аксессор для установки и определения свойства текущего языка; - const char *DayOfWeekToString(DayOfWeek dw) - получить текстовое представление данного дня недели (для текущего языка).
IMHO программа должна достаточно легко читаться, если клиент будет взаимодействовать с модулем календаря только через этот интерфейс (само собой, подправить в случае хранения строк во FLASH/EPROM).
_________________ Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет. J. Ganssle
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения