1. тоесть если я собираюсь в подпрограмме работать с переменной "a" которая гдето, например в основном цикле программы, установилась, то это будет подпрограма с передаваемой в нее параметром, и описываться а должно в скобках этой подпрограммы и больше нигде. тоесть так:
void dopprograma (char a), а если переменная 16 разрядная то соответственно:
void dopprograma (int a). в скобках надо описать все переменные которые меняются вне подпрограммы? правильно я понял?
2. в третем примере где написано что функция получает переменную параметром именно char?
3. в моем примере: void write(eeprom char *kuda) перед kuda стоит * - зачем?
void dopprograma (char a) делают так для того чтобы при вызове подпрограммы одновременно передать в подпрограмму значение переменной "а". Тоесть если написать dopprograma(5); в основном цыкле например, тогда по достижению этой строки МК перейдёт к выполнению подпрограммы и в нутри подпрограммы переменная "а" будет иметь значение а=5;
1) В скобках надо писать параметры, которые ты передаешь функции.
Представь что функция (подпрограмма) - это черный ящик. туда какие-то данные приходят, и на их основании она выдает какие-то данные. Вот входные параметры пишутся в скобках.
Пример - ты пишешь функцию, которая ждет заданный интервал времени.
То есть, входными данными будет как раз таки интервал времени - если ты хочешь его сделать изменяемым, конечно.
Т.е:
void Delay(int Seconds); //в функцию передаем int-число секунд, сколько ждать. Т.е. Delay(5); для 5 сек, Delay(10) - для десяти.
Если же ты пишешь функцию которая ждет именно 10 секунд, допустим - то ей не нужны параметры. тогда она будет
void DelayTenSec();
Более того, если уже реализовано Delay, то можно написать так:
void DelayTenSec()
{
Delay(10);
}
Только я бы не рекомендовал, это все таки контроллер а не комп, лишние вызовы жрут выч. мощности.
2) Опечатался, извиняюсь, поправил.
3)Ооо... это указатель. Если ты с ними не знаком, лучше тебе почитать книжку по С, это довольно обширная тема...
Если коротко - то это не сама переменная, а адрес памяти, по которому она расположена. В данном случае, видимо, используется указатель, потому что в функцию передается массив данных, т.е. передается указатель на его первый байт.
Последний раз редактировалось Ra Вт дек 02, 2008 01:25:41, всего редактировалось 1 раз.
для меня асм сейчас вобще такой черный дремучий неизведаный лес что заходить страшно... но чувствую что надо будет. мне надо разобраться как заставить работать микроконтроллер с пультом ду от телевизора, апликухи по этому поводу я только на асме понаходил. а по поводу функций. как вводить в фунлцию переменную я понял. а как возврвщать, и в каких случаях это может понадобится - не очень.
Krik99 - делаю сенсорный включатель с пультом ду и регулированием мощности. в нете есть подобные схемы но прошивки к ним платные. на данном этапе удачно использовал две функции: плавного включения и плавного выключения по прикасанию к сенсорной кнопке. в моем примере не понядобилось выводить ничего из функции, а в каком может понадобиться? прсто хочется на будущее уже до конца разобраться, все узнать.
В ASM'е нет ничего сложного. Это просто стереотип: "ASM - сложно!" Нужно просто взять хороший учебник и изучить его досканально, поняв каждую строчку, которую пишет автор.
kvark85, Вы пытались прежде чем задавать вопросы открыть любой учебник основ Си? Судя по элементарным вопросам - нет.
Понятно, что форум удобен и там подскажут, но нужно начинать задвать вопросы после изучения литературы и если там что-то не понятно.
PS. Да, я такой плохой и пишу часто "гадости", но все же - учитесь читать не форумы, а книги!
АСМ использовать, скажем так, не всегда целесообразно =)
Когда проект большой, его будет потруднее развивать и поддерживать, если он на языке ассемблера, особенно, если отложил его на месяц-другой, а потом вернулся и пытаешься вспомнить, что там наваял =)
Компиллеры сейчас хорошие, дают неплохой код (по скорости и размеру) - поэтому можно и на С писать и горя не знать.
(Правда, не КодеВиженский, там он на редкость тормознутый)
Оптимальный вариант - рутина всякая на С, а там где требуется скорость, а Сишный компиллер ее не обеспечивает - ассемблерные вставки.
Но книжку по С в самом деле стоит почитать - эти вопросы (про функции) - элементарные, обсуждаются в самом начале.
Ищите в поисковиках что-нибудь типа "Керниган Ричи Язык С"
А книги с приведенным выше и аналогичными названиями действительно не стоит читать, а то тем и вопросов на форуме еще небось только увеличится.
я тоже подумал бы что это издевательство, если бы не слышал раньше уже отзывов о этой статье. очень мне пмогла. я разобрался во всех вопросах. а Керниган Ричи Язык С тоже гляну, тлько впринципе незачем уже...