Например TDA7294

Форум РадиоКот • Просмотр темы - Вопросы по С/С++ (СИ)
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс апр 05, 2026 10:49:20

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7704 ]     ... , , , 137, , , ...  
Автор Сообщение
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср фев 06, 2013 23:29:35 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 21
Рейтинг сообщений: 143
Зарегистрирован: Сб фев 21, 2009 13:11:40
Сообщений: 1900
Откуда: Москва
Рейтинг сообщения: 0
Спойлер
blackx писал(а):
На форуме 90% новых тем "от начинающих", раздел смысла делать нет.
Прошу прощения, Вы что, их считали?
Хотя бы не пускать в серьезные разделы новичков и разгоряченных малолеток Shift-ящих на всех и вся, если им чей-нибудь ответ не угодил.
Ввести проверку на глупость, например 10 вопросов по теме форума (Например, чтобы активировать возможность писать что-либо в форуме "Микроконтроллеры и ПЛИС", нужно правильно ответить на 10 вопросов по этой теме. Вопросы не сложные, ответы на которые могут формировать основу для начинающего программиста МК и ПЛИС), если не прошел проверку - отправлять в раздел для новичков, а серьезные разделы для них read-only.
Ну или на крайний случай помечать подобную тему особым значком. Мол здесь малыши возятся.

Я вообще забанил бы 0259 на пару деньков. Для профилактики.

_________________
Ставим плюсы: )


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 07, 2013 02:05:55 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 49
Зарегистрирован: Сб авг 25, 2007 22:02:05
Сообщений: 424
Откуда: Германия, Viernheim
Рейтинг сообщения: 0
0259 я фигею
тебе дали ссылку http://yandex.ru/yandsearch?clid=9582&text=%D0%A1%D0%B8+%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5&lr=2

отркрываем первую попавшуюся
http://www.mir-koda.ru/full_leson_cpp.php?id=4

читаем
Цитата:
Переменная в языке си - это именованная область памяти, в которой содержится определенное значение.

тип имя переменной [= значение];

Рассмотри подробнее каждый элемент синтаксиса переменной:

тип: размер выделяемой памяти;
имя переменной: любое английское название;
значение: (необязательный параметр) можно сразу присвоить определенное значение для нашей переменной;

int a,b,c; /* Объявляем три переменные типа int без указания имени */

float d = 2.01, f; /* Одну переменную просто объявляем, а вторую инициализируем значением */

дальше описывается какие бывают типы переменных и многое другое

непонятно? открывай другую ссылку, изучай, потом сформулируй что конкретно тебе непоятно - помогут
а насильно впихивать в твою голову то, что тебе самому лень впихнуть никто не должен

ну а если после всего этого до тебя не дошло - бросай программирование и иди пасти баранов

_________________
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн фев 11, 2013 08:58:48 
Вымогатель припоя

Зарегистрирован: Ср янв 05, 2011 10:03:18
Сообщений: 581
Рейтинг сообщения: 0
0259 писал(а):
Я ПОНЯЛ ХОЧЕШЬ ДОБИТЬСЯ ИЩИ САМ ДОЛЬШЕ БУДИТ НО НАВЕРНЯКА

Можно считать верхом грамотности.
Цитата:
Код:
      delay_ms(100);

ВОТ И МОЙ КОД БЕЗ ВСЯКИХ ПЕРЕМЕННЫХ

Нет переменных? Вы уверены? Вы знаете, что кроется за этой строчкой?
Все-таки начинайте читать. Учебник русского языка. Программирование оставьте "на потом".

_________________
С уважением,
Виктор.


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт фев 12, 2013 09:13:51 
Родился
Аватар пользователя

Зарегистрирован: Вт фев 12, 2013 08:59:56
Сообщений: 11
Рейтинг сообщения: 0
Помогите, не могу додуматься. Есть код, при нажатии на кнопку начинает мигать светодиод. Как сделать так чтобы при мигающем светодиоде нажать кнопку и тем самым прекратить процесс мигания?

Пытаюсь сделать так не получается:
Спойлер
Код:
...
if(PINB==0x00){
         PORTC=0х00;
      }
...

Сам код:
Спойлер
Код:
#include <avr/io.h>
#include <util/delay.h>

int main(void){
   DDRB=0x00;
   PORTB=0xFF;
   DDRC=0xFF;
   PORTC=0x00;
   while(1){
      if(PINB==0xFF){
         PORTC=~PINB;
      }
      else{
         PORTC=0;
         _delay_ms(200);
         PORTC=1;
         _delay_ms(200);
      }
   }
}


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт фев 12, 2013 12:12:14 
Встал на лапы

Карма: -1
Рейтинг сообщений: 4
Зарегистрирован: Пн мар 26, 2012 05:25:06
Сообщений: 106
Рейтинг сообщения: 0
Если я я правильно понял вопрос: в вашем коде по умолчанию светодиод горит(потушен), при нажатии на кнопку - мигает. А вы хотите наоборот, по умолчанию мигает, при нажатии горит(потушен). Тогда это будет так:
Код:
while(1){
      if(PINB!=0xFF){
         PORTC=~PINB;
      }
      else{
         PORTC=0;
         _delay_ms(200);
         PORTC=1;
         _delay_ms(200);
      }
   }


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср фев 13, 2013 08:22:18 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 49
Зарегистрирован: Сб авг 25, 2007 22:02:05
Сообщений: 424
Откуда: Германия, Viernheim
Рейтинг сообщения: 0
а где сказано что в порт С должно выводиться состояние порта B?

Код:
while(1)
{
   if(PINB==0xFF)
   {
      PORTC=0;
      _delay_ms(200);
      PORTC=1;
      _delay_ms(200);
    }
//else ничего не делать вообще
}


PS. Если нужно сделать наоборот, меняй местами содержимое блоков if и else

_________________
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 14, 2013 17:59:47 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 56
Зарегистрирован: Вт авг 28, 2012 22:21:33
Сообщений: 535
Рейтинг сообщения: 0
Я просто в шоке. Честно говоря, я и до встречи этого персонажа был немного в шоке от количества тем вида "Памогите нероботает кодне зопускается атмега хэлп". Все-таки технический форум, программирование, электроника, а тут такое, что кровь из глаз течет. Но он просто меня добил. Какое там программирование микроконтроллеров, там даже до программирования на PHP - как до Пекина раком! Черт, да моя бабушка уже давно бы поняла, как объявлять переменную.

Ну не знаю... Пойду протру стол от крови, которая из ушей и глаз натекла.


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 14, 2013 18:30:20 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
menzoda , вы бы уточняли про какого персонажа говорите, а то тут уже после этого персонажа несколько сообщений появилось.


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт фев 15, 2013 04:58:12 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 49
Зарегистрирован: Сб авг 25, 2007 22:02:05
Сообщений: 424
Откуда: Германия, Viernheim
Рейтинг сообщения: 0
vitalik_1984 писал(а):
menzoda , вы бы уточняли про какого персонажа говорите, а то тут уже после этого персонажа несколько сообщений появилось.

главный кандидат с четырехзначным ником нольдвапятьдевять

_________________
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт фев 15, 2013 16:22:58 
Нашел транзистор. Понюхал.

Карма: 1
Рейтинг сообщений: 8
Зарегистрирован: Вс ноя 06, 2011 20:47:11
Сообщений: 185
Рейтинг сообщения: 0
Помогите советом/покритикуйте такой вариант хранения многоязычного календаря в Си, в для атмеги.

Код:
uint8_t *Weekdays[3][8] ={
      {(uint8_t*)1,
      (uint8_t*)Monday,   
      (uint8_t*)Tuesday,   
      (uint8_t*)Wednesday,   
      (uint8_t*)Thursday,   
      (uint8_t*)Friday,   
      (uint8_t*)Saturday,
      (uint8_t*)Sunday},
      
      {
      (uint8_t*)1,
      (uint8_t*)MondayP,   
      (uint8_t*)TuesdayP,   
      (uint8_t*)WednesdayP,   
      (uint8_t*)ThursdayP,   
      (uint8_t*)FridayP,   
      (uint8_t*)SaturdayP,
      (uint8_t*)SundayP
      },
      
      {
      (uint8_t*)1,
      (uint8_t*)MondayL,   
      (uint8_t*)TuesdayL,   
      (uint8_t*)WednesdayL,   
      (uint8_t*)ThursdayL,   
      (uint8_t*)FridayL,   
      (uint8_t*)SaturdayL,
      (uint8_t*)SundayL
      }
      
      };


Код:
//Weekdays
const uint8_t Monday[] PROGMEM="Mon";  итд..


В программе храню только ссылку на:
Код:
(uint8_t*)&Weekdays
, первый элемент - текущий день недели. Сдвиг адреса на 1 и текущий день - текст дня недели. Умнжение адреса на 8*переменная языка - текст в другом языке..

Имхо работает, но хочется как боле читабельно.


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт фев 15, 2013 17:43:36 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
Так вы уже создали фактически тип данных Weekdays, создайте еще и тип Week, тогда можно создать массив из недель и указатель уже на этот тип данных делать.


Последний раз редактировалось vitalik_1984 Пт фев 15, 2013 18:12:43, всего редактировалось 1 раз.

Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт фев 15, 2013 17:54:01 
Нашел транзистор. Понюхал.

Карма: 1
Рейтинг сообщений: 8
Зарегистрирован: Вс ноя 06, 2011 20:47:11
Сообщений: 185
Рейтинг сообщения: 0
vitalik_1984 писал(а):
Так вы уже создали тип данных Weekdays, создайте еще и тип Week, тогда можно создать массив из и указатель уже на этот тип данных делать.


Но это не красиво... Хочется подобия: http://easyelectronics.ru/organizaciya- ... menyu.html


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт фев 15, 2013 19:08:48 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
Ваша организация меню как-то не похожа на то, что вы хотите получить.
Что некрасивого в структуре?
Менюшка менюшкой, а язык языком. Язык это смещение к нулевому элементу перечисления адресов для строк пункта меню.
А структура создается для более удобного смещения.


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт фев 15, 2013 22:25:51 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 49
Зарегистрирован: Сб авг 25, 2007 22:02:05
Сообщений: 424
Откуда: Германия, Viernheim
Рейтинг сообщения: 0
более читабельно - разные структуры(можно и массивы) для каждого языка

Код:
typedef struct WeekDays
{
   char *Rus[] = {"Понедельник", "Вторник", "Среда", ... };
   char *Eng[] = {"Monday", "Tuesday", ...};
   char *Deu[] = {"Monntag", "Dienstag", ...};
}

_________________
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб фев 16, 2013 00:38:12 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
Это то же самое, что и в первоначальном варианте.
Нужно разделить дни разных языков,
Код:
 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,
}

WeekDays *weekday[3] PROGMEM = { English,Deutsche, Spainish}

display= *weekday[current_lang];

ну или как там правильно нужно
использовать сейчас негде пока посмотреть, а как точно я не знаю.
Можно и макрос оформить, как в ссылке.


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб фев 16, 2013 13:05:14 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 49
Зарегистрирован: Сб авг 25, 2007 22:02:05
Сообщений: 424
Откуда: Германия, Viernheim
Рейтинг сообщения: 0
ИМХО проще обратиться

Код:
myDay = Weekdays.Rus[1]


чем помнить порядковый номер каждого языка и выискивать нужный день в многомерном массиве

_________________
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб фев 16, 2013 15:37:25 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 65
Зарегистрирован: Пн янв 10, 2011 03:06:36
Сообщений: 736
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Порядковый номер языка помнить не придется, если заблаговременно создать соответствующее перечисление (enum). "Магические" константы вообще отнюдь не украшают программу, а перечисление легко расширяется при необходимости добавления новых языков.

Если инкапсулировать словарь в отдельном модуле, достаточно реализовать в этом модуле свойство (вроде CurrentLanguage), устанавливать его при инициализации программы и дальше вообще не заморачиваться языковыми проблемами (ну или переключать по ходу выполнения программы, если вдруг реально потребуется смена языка "на ходу").

_________________
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб фев 16, 2013 19:55:13 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
Goldsmith :beer: , и я о том же


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн фев 18, 2013 02:02:11 
Нашел транзистор. Понюхал.

Карма: 1
Рейтинг сообщений: 8
Зарегистрирован: Вс ноя 06, 2011 20:47:11
Сообщений: 185
Рейтинг сообщения: 0
Goldsmith писал(а):
Порядковый номер языка помнить не придется, если заблаговременно создать соответствующее перечисление (enum). "Магические" константы вообще отнюдь не украшают программу, а перечисление легко расширяется при необходимости добавления новых языков.

Если инкапсулировать словарь в отдельном модуле, достаточно реализовать в этом модуле свойство (вроде CurrentLanguage), устанавливать его при инициализации программы и дальше вообще не заморачиваться языковыми проблемами (ну или переключать по ходу выполнения программы, если вдруг реально потребуется смена языка "на ходу").


Спасибо. У меня в принципе так и реализовано.

Плюс - каждый пункт меню имеет указатель на переменную и знает тип переменной для манипуляции с оной (как читать, изменит, отобразит итд..)

Код:
enum {
    STATIC_TEXT,
VARIABLE_TEXT,
    EPPROM,
    UNSIGNEDNUMBER,
    SIGNEDNUMBER,
ARRAYOFSTRINGS,
EPPROMARRAYOFSTRINGS,
};


Для удобства.

Дни недели - ARRAYOFSTRINGS, в раме держу саму переменную дня недели и указатели на тектст во флеш памяти. Но хочется держать только указатель на переменную, а дни недели во флеше. Да и боле читабельно сделать, а не через двухмерный массив.


Вернуться наверх
 
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн фев 18, 2013 11:25:05 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 65
Зарегистрирован: Пн янв 10, 2011 03:06:36
Сообщений: 736
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Staska писал(а):
...и боле читабельно сделать, а не через двухмерный массив.
Я бы вообще спрятал массив от клиента внутри модуля календаря как деталь реализации. Наружу предоставил бы только минимальный интерфейс вроде такого:

- typedef enum Language ... - собственно тип для выбора языка;
- typedef enum DayOfWeek ... - тип для дней недели;
- void setCurrentLanguage(Language l) / Language getCurrentLanguage(void) - пара мутатор/аксессор для установки и определения свойства текущего языка;
- const char *DayOfWeekToString(DayOfWeek dw) - получить текстовое представление данного дня недели (для текущего языка).

IMHO программа должна достаточно легко читаться, если клиент будет взаимодействовать с модулем календаря только через этот интерфейс (само собой, подправить в случае хранения строк во FLASH/EPROM).

_________________
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7704 ]     ... , , , 137, , , ...  

Часовой пояс: UTC + 3 часа


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y