Вопросы по С/С++ (СИ)
Re: Вопросы по С/С++ (СИ)
demiurg301, битовые операции я читал.........., ты лучше скажи толком откуда это число 
Tell Me The Truth
- Реклама
Re: Вопросы по С/С++ (СИ)
BCluster, я уже понял откуда это число 
значит этому числу 01111000 мы присваиваем имя MASK_BUTTONS с помощью вот этой операции
#define MASK_BUTTONS ((1<<DOWN)|(1<<CANCEL)|(1<<UP)|(1<<ENTER))
так ????
значит этому числу 01111000 мы присваиваем имя MASK_BUTTONS с помощью вот этой операции
#define MASK_BUTTONS ((1<<DOWN)|(1<<CANCEL)|(1<<UP)|(1<<ENTER))
так ????
Tell Me The Truth
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Плохо читал.
На данном этапе понятно?
Если да, идем далее...
надеюсь так понятно
Код: Выделить всё
#define DOWN 3
#define CANCEL 4
#define UP 5
#define ENTER 6
Код: Выделить всё
#define MASK_BUTTONS ((1<<DOWN)|(1<<CANCEL)|(1<<UP)|(1<<ENTER))
В данном контексте это все равно что написать
#define MASK_BUTTONS ((1<<3)|(1<<4)|(1<<5)|(1<<6))
Если да, идем далее...
Код: Выделить всё
((1<<3)|(1<<4)|(1<<5)|(1<<6))
1 двигаем влево на 3 разряда. ЧТо получаем? 1000
на 4 раздяра - 10000
на 5 разрядов - 100000
на 6 разрядов - 1000000
потом выполняем битовое ИЛИ.
1000 ИЛИ 10000 ИЛИ 100000 ИЛИ 1000000 что получаем? 1111000
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Идея правильная но слово присвоить тут не годится )FreshMan писал(а):BCluster, я уже понял откуда это число
значит этому числу 01111000 мы присваиваем имя MASK_BUTTONS с помощью вот этой операции
#define MASK_BUTTONS ((1<<DOWN)|(1<<CANCEL)|(1<<UP)|(1<<ENTER))
так ????
- Реклама
Re: Вопросы по С/С++ (СИ)
меня еще путает вот этот код
насколько я понял то 3, 4, 5 и 6 это выводы порта А к которым подключены кнопки
ну а разве не правильней было бы написать
ведь так логичнее будет.............., тут я явно узазываю какаму пину, какого порта какое присвоить имя......., а так как кампилятор поймет что значат цифры 3,4,5,и 6 ?????
Код: Выделить всё
#define DOWN 3
#define CANCEL 4
#define UP 5
#define ENTER 6ну а разве не правильней было бы написать
Код: Выделить всё
#define DOWN PINA.3
#define CANCEL PINA.4
#define UP PINA.5
#define ENTER PINA.6Tell Me The Truth
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
ЗАМЕНЯЕМ:FreshMan писал(а):а какое же слово тут уместней применять ?
с помощью вот этой операции
#define MASK_BUTTONS ((1<<DOWN)|(1<<CANCEL)|(1<<UP)|(1<<ENTER))
мы заменяем в тексте программы длинное ((1<<DOWN)|(1<<CANCEL)|(1<<UP)|(1<<ENTER)) коротким MASK_BUTTONS
битва с дураками проиграна, победители торжествуют. слава победителям!
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
в языке Си нет такого PINA.3 - это происки и бредни CVAVR. нормальный компилятор не поймет как раз этой записиFreshMan писал(а):ну а разве не правильней было бы написатьведь так логичнее будет.............., тут я явно узазываю какаму пину, какого порта какое присвоить имя......., а так как кампилятор поймет что значат цифры 3,4,5,и 6 ?????Код: Выделить всё
#define DOWN PINA.3 ...
битва с дураками проиграна, победители торжествуют. слава победителям!
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Мастер Ломастер прав, это специфика CVAVR. В IAR тоже есть подобная запись, много где есть в общем ) Бредни бреднями, но удобно, однако не переносимо )
А та запись что приведена в вашем примере универсальна и будте работать в любом компиляторе )
А та запись что приведена в вашем примере универсальна и будте работать в любом компиляторе )
Re: Вопросы по С/С++ (СИ)
Код: Выделить всё
#define INIT_Timer() TIMSK = (1<<OCIE0);\
TCCR0 = (1<<WGM01)|(0<<WGM00)|(1<<WGM00);\
TCNT0 = 0;\
OCR0 = 0x7dпример взят отсюда http://chipenable.ru/index.php/programm ... efine.html
Tell Me The Truth
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
так будет еще не логично, потому что более чем для pin эти дефайны уже не использовать.А есть еще и PORTx и DDRxFreshMan писал(а):меня еще путает вот этот коднасколько я понял то 3, 4, 5 и 6 это выводы порта А к которым подключены кнопкиКод: Выделить всё
#define DOWN 3 #define CANCEL 4 #define UP 5 #define ENTER 6
ну а разве не правильней было бы написатьведь так логичнее будет.............., тут я явно узазываю какаму пину, какого порта какое присвоить имя......., а так как кампилятор поймет что значат цифры 3,4,5,и 6 ?????Код: Выделить всё
#define DOWN PINA.3 #define CANCEL PINA.4 #define UP PINA.5 #define ENTER PINA.6
Код: Выделить всё
DDRx&=~(MASK_BUTTONS);
PORTx|=MASK_BUTTONS;
В поисках истины человек развивается.
- sachok
- Опытный кот
- Сообщения: 849
- Зарегистрирован: Сб янв 05, 2008 11:05:15
- Откуда: Україна м.Луцьк
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Помогите разобраться с avr-size. Компилирую элементарную программку, выдает
flash получается .text + .data и это сдесь Program?
А Data это RAM?
Просто программа маленькая и 72% flash это как то много. Приложу исходник, попробуйте скомпилировать, на компьютере где работает avr-size.
P. S. оптимизация отключена
Код: Выделить всё
avr-size --format=avr --mcu=atmega8 irStation.elf
AVR Memory Usage
----------------
Device: atmega8
Program: 5902 bytes (72.0% Full)
(.text + .data + .bootloader)
Data: 280 bytes (27.3% Full)
(.data + .bss + .noinit)А Data это RAM?
Просто программа маленькая и 72% flash это как то много. Приложу исходник, попробуйте скомпилировать, на компьютере где работает avr-size.
P. S. оптимизация отключена
- Вложения
-
- main.c
- (3.53 КБ) 206 скачиваний
Я не Сашок!!!
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
начну с конца: если оптимизация отключена, то фраза "Просто программа маленькая и 72% flash это как то много" попросту неуместна: компиляция без оптимизации, как сущность, вообще должна быть забыта. это, можно сказать, экзотический режим, нужный для поиска грубейших ошибок в программе. подчеркиваю - грубейших.sachok писал(а):flash получается .text + .data и это сдесь Program?
А Data это RAM?
Просто программа маленькая и 72% flash это как то много. Приложу исходник, попробуйте скомпилировать, на компьютере где работает avr-size.
P. S. оптимизация отключена
а по поводу .text, .data и т.п. секций очень рекомендую почитать документацию WinAVR - там все достаточно популярно и доходчиво объясняется, что тут к чему.
битва с дураками проиграна, победители торжествуют. слава победителям!
- sachok
- Опытный кот
- Сообщения: 849
- Зарегистрирован: Сб янв 05, 2008 11:05:15
- Откуда: Україна м.Луцьк
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Мастер Ломастер Спасибо за рекомендацию. Включил оптимизацию -Os Про секции я читал до этого и тут всё ясно. Просто это моя первая попытка писать на gcc под Linux'ом до этого был CVAVR.
Я не Сашок!!!
Re: Вопросы по С/С++ (СИ)
наткнулся на книжку C# для новичков................, в данном случае имеется обычний Си или это разновидность ???
Tell Me The Truth
- sachok
- Опытный кот
- Сообщения: 849
- Зарегистрирован: Сб янв 05, 2008 11:05:15
- Откуда: Україна м.Луцьк
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
C# это отдельный язык программирования, построен на принципах ООП, и поддерживается платформой .NET FrameWork. Базовые операции и теория общие с всеми языками программирования. Если Вы будете знать с++ то на C# перейти не проблема. А вот в моем случае наоборот, знаю C# перехожу на с++, непривычно...
Под МК программировать не выйдет
Под МК программировать не выйдет
Я не Сашок!!!
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
да, знакомая историяsachok писал(а):знаю C# перехожу на с++, непривычно...
Re: Вопросы по С/С++ (СИ)
Расскажите как сделать знакогенератор. Скажем, я определяю
пока всё хорошо. Далее я хочу вычислить константу для символа "1":
На что компилятор замечает, что seg_b - это не константное выражение.
Как сделать, чтобы оно вычислялось только на этапе компиляции и не сьедало ОЗУ?
Как это принято делать?
Код: Выделить всё
const int seg_a = 1 << 0;
const int seg_b = 1 << 1;Код: Выделить всё
const int let_1 = seg_b + seg_c;Как сделать, чтобы оно вычислялось только на этапе компиляции и не сьедало ОЗУ?
Как это принято делать?
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
uldemir писал(а):Как это принято делать?
Код: Выделить всё
#define seg_a (1<<0)
#define seg_b (1<<1)
#define let_1 seg_a | seg_bбитва с дураками проиграна, победители торжествуют. слава победителям!
Re: Вопросы по С/С++ (СИ)
Не получается, не выходит каменный цветок.
Ругается на seg_a. Я так понимаю, #define это просто подстановка. строка
компилируется без проблем. Где я еще не въезжаю?
Код: Выделить всё
#define seg_a (1<<0);
#define seg_b (1<<1);
#define seg_c (1<<2);
unsigned int charset[] = { seg_a , (1<<2) };
Код: Выделить всё
unsigned int charset[] = { (1<<0), (1<<2) };А люди посмотрят и скажут: "Собаки летят. Вот и осень."


