roboforum.ru

Технический форум по робототехнике.

AVR на C/C++ программирование - вводный курс

Re: Вводный курс для программирования МК AVR на языке C/C++

Виталий » 25 июл 2008, 20:10

Мигание...
Код: Выделить всёРазвернуть
unsigned long a = 0;
unsigned char c = 0x00;

while(1){
     if (a == 0) {
         PORTB = c;
         c = 0xFF - c; //Вместо if (c == 0xFF) c == 0x00; else c == 0xFF;
     }
     a++;  //Переполнится и станет нулем.
}


Не знаю так сработает или нет:
Код: Выделить всёРазвернуть
unsigned long a = 0;

while(1){
     if (a == 0) PORTB = 0xFF - PORTB;
     a++;
}

Re: Вводный курс для программирования МК AVR на языке C/C++

Кирилл » 25 июл 2008, 23:01

я конечно извиняюсь заранее, ибо на Си никогда не писал, но чем плох вот этот код:
Код: Выделить всёРазвернуть
#include <90s2313.h>
#include <delay.h>

void main()
{

DDRD=0xff;
PORTD=0x00;

while(1)
{
PORTD.1=0;
delay_ms(1000);
PORTD.1=1;
delay_ms(1000);
}

}

имхо нагляднее :)

Re: Вводный курс для программирования МК AVR на языке C/C++

=DeaD= » 25 июл 2008, 23:28

Виталий писал(а):Мигание...
a++; //Переполнится и станет нулем.

Это из серии "очумелые ручки", а не из того программирования которому надо учить. Я бы повешался потом код разбирать в котором такие вещи используются, да и через месяц сам будешь сидеть и гадать что вообще в коде происходит. :)

Кирилл писал(а):я конечно извиняюсь заранее, ибо на Си никогда не писал, но чем плох вот этот код:

Тем что туда по-моему только до 255 можно передавать. Черт, ничего не успел сегодня посмотреть и сделать на эту тему.

Re: Вводный курс для программирования МК AVR на языке C/C++

Сергей » 25 июл 2008, 23:35

И давайте определимся каким компилятором пользуемся. У Кирилла насколько я понял CV, а Дед пишет под avr-gcc..
=DeaD= писал(а):PS: Не вижу смысла чтобы начинать программить под МК изучить весь си\си++, из него (особенно из си++) реально пользуется под МК процентов 10-20 в подавляющем числе случаев.

А зачем учить весь Си да еще и С++? Можно просто почитать основы Си без всяких примудростей, как раз эта база и использеца при программировании МК

Re: Вводный курс для программирования МК AVR на языке C/C++

Myp » 25 июл 2008, 23:35

=DeaD= писал(а):Черт, ничего не успел сегодня посмотреть и сделать на эту тему.

теперь ты должен себя убить!!!
Давайте всетаки без флуда. <Сергей>

Re: Вводный курс для программирования МК AVR на языке C/C++

Сергей » 25 июл 2008, 23:36

Виталий писал(а):Не знаю так сработает или нет:
Код: Выделить всёРазвернуть
unsigned long a = 0;

while(1){
     if (a == 0) PORTB = 0xFF - PORTB;
     a++;
}

Сработает.

Re: Вводный курс для программирования МК AVR на языке C/C++

Victorovych » 27 июл 2008, 16:46

Чет какой-то стремный Си ваш :no: Из простешего примера проблему создали.

Re: Вводный курс для программирования МК AVR на языке C/C++

=DeaD= » 27 июл 2008, 20:08

Это не си стрёмный, это из нас учителя стрёмные :) а си он хороший, белый и пушистый.

ps: как там в соседней ветке мне сказали - в отпуск пора, сегодня поставил себе AVRStudio, WinAVR на недавно освеженный комп и не смог скомпилить пример, чего-то с makefile'ом намутил умудрился на ровном месте, хотя до этого раз 10 ставил всё и нормуль было :) ппц, переработал :)

Re: Вводный курс для программирования МК AVR на языке C/C++

EdGull » 27 июл 2008, 20:50

но-но!!! хороший, белый и пушистый всегда был васик!
а Си он для суровых хакеров! :D

Re: Вводный курс для программирования МК AVR на языке C/C++

Сергей » 27 июл 2008, 22:36

Суровые хакеры на Асме пишут!!

Re: Вводный курс для программирования МК AVR на языке C/C++

Alex Gritsenko » 27 июл 2008, 23:44

Простые хакеры на асме пишут, суровые хакеры пишут в бинарном коде @_@

Re: Вводный курс для программирования МК AVR на языке C/C++

Victorovych » 27 июл 2008, 23:56

Сергей писал(а):Суровые хакеры на Асме пишут!!

Эт променя :ROFL:
Если серьезно, мужики, вы в личке перетрите, прийдете к общему мнению тогда что-то постите, а то хотелось Ся изучить, а вижу здесь 3.14ЗДЕЦ, мб топик лучше поправить или дрокнуть до лучших времен

Re: Вводный курс для программирования МК AVR на языке C/C++

AlexCH » 28 июл 2008, 08:03

Вобщем дело было так:
Изучал я в свое время дельфи, а до этого паскаль. Естественно под пк.
А когда добрался сюда, почитал про мк и все такое, понял, что для программирования мк надо учить си и ничто другое. Асм не в счет, т.к. он является "тонким инструментом" для критических секций кода.
(Эффективная разработка программ подразумевает также и время разработки, поэтому умные люди придумали языки высокого уровня, и писать на асме весь код имхо неправильно.)
Для меня переход на си был довольно простым, т.к. написание программы это в первую очередь составление и понимание алгоритма, по которому она должна работать, и только потом написание непосредственно кода в соответствии с правилами синтаксиса языка.
Поэтому я не полез в гугл искать микропаскаль и тому подобную ерунду.
Немало помог курс, сами знаете какой, там реально описаны все основы.

Вобщем я считаю что си. (точка). :D
Куча материалов, наработанных годами по всему миру, исходников, библиотек, и т.д.
Разве этим может похвастаться тот-же васик?

Вот эта конструкция кажется совсем убогой:
Код: Выделить всёРазвернуть
For A = 1 To 100
Next A

Хотя первоначально она более понятна чем эта:
Код: Выделить всёРазвернуть
for(i = 0; i < 100; i++){
}

Но насколько я понимаю (поправьте плиз если я не прав), "Next A" это жестко "A++"
А в случае с СИ можно написать так:
Код: Выделить всёРазвернуть
for(i = 0; i < 100; i+=2){
}

Или так:
Код: Выделить всёРазвернуть
for(i = 0; i < 100; func(i)){
}

Вот Васик так умеет? Или на нем придется извращаться?

Re: Вводный курс для программирования МК AVR на языке C/C++

EdGull » 28 июл 2008, 08:36

Разве этим может похвастаться тот-же васик?

может
"Next A" это жестко "A++"

шаг можно указывать

Re: Вводный курс для программирования МК AVR на языке C/C++

=DeaD= » 28 июл 2008, 08:45

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

Короче чего спорить - лучший аргумент - это распространенность промышленного применения си\си++, на нем пишутся ОС, игры, большинство серьезных программ и т.п.


Rambler\'s Top100 Mail.ru counter