Например TDA7294

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





Текущее время: Пт июл 04, 2025 15:53:22

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


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



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 26 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Помогите с подпрограммами на СИ
СообщениеДобавлено: Пт сен 18, 2009 16:02:41 
Встал на лапы
Аватар пользователя

Зарегистрирован: Сб ноя 29, 2008 19:34:25
Сообщений: 99
Откуда: Нальчик
Рейтинг сообщения: 0
Здрасти ВСЕМ!!!
Помогите пожалуйста советом.
Я написал программу в которой часто повторяются одинаковые куски кода (опрос ТМ и сравнивание полученного кода , код для работы зумера и др.....) .Всё что хотелось написать не помещается в память контроллера. На асме писать неумею, а си знаю не весь.
У меня такой вопрос - Можно-ли написать эти коды один раз и с помощью оператора RETURN в нужных местах программы обращаться к ним , а после выполнения возвращаться в исходное место?
Если ДА- то как это сделать?
Если НЕТ- то :cry:
Заранее СПАСИБО!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 18, 2009 16:35:15 
Грызет канифоль

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пт мар 20, 2009 12:25:47
Сообщений: 289
Откуда: Ivanovo
Рейтинг сообщения: 0
может для начала стоит забыть бейсик и изучить основы с?
есть такое понятие как функция.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 18, 2009 16:40:35 
Встал на лапы
Аватар пользователя

Зарегистрирован: Сб ноя 29, 2008 19:34:25
Сообщений: 99
Откуда: Нальчик
Рейтинг сообщения: 0
Если не трудно киньте пример программы с RETURN или сылку где можно разобраться.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 18, 2009 17:15:05 
Опытный кот

Карма: 1
Рейтинг сообщений: 52
Зарегистрирован: Чт мар 12, 2009 16:31:05
Сообщений: 804
Рейтинг сообщения: 0
То что вам,скорее всего надо,в С называется функцией.
Формат типа того
тип вощзвращаемого аргумента _имя функции (параметр_1,параметр_2,...);

Пример вот личный,если хотите можете пользоваться

void write_data_24C08(unsigned int adr_rom,unsigned char data)
{
unsigned int adr; //адрес куда будем записывать с учётом банка
unsigned char bank;//номер банка куда будем записывать данные (0-3)
unsigned char SLA_W;//CONTROL BYTE(4 бита-физический адрес,3 бита-номер банка,последний 0-направление (на запись)
if(adr_rom<256>255)&&(adr_rom<512>511)&&(adr_rom<768>767){bank=3;(char)adr=adr_rom-768;} //переключатели взависимости от номера ячейки памяти
SLA_W=0xA0 | (bank*2); //с преобразованием типа(из INT в CHAR)
Start;
while(BUSY);
TWDR=SLA_W; //адрес по даташиту (4-бита) и 3-бита это номер банка (4 банка по 256 бит)
ACK; //адресные ножки микросхемы (A0-A2)физически внутренне не подключены
while(BUSY);
TWDR=adr; //адрес в EEPROM(с учётом банка,одного из четырёх,для 24C08
ACK;
while(BUSY);
TWDR=data; //сами данные,которые будем записывать в EEPROM
ACK;
while(BUSY);
Stop;
delay_us(20);
}
Эта функция записывает ваши данные в нужный вам адрес микросхемы памяти 24C08 по I2C.
Здесь данные и адреса могут быть разными,а функция одна.

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


Вложения:
24C08.rar [983 байт]
Скачиваний: 204


Последний раз редактировалось Vov123 Пт сен 18, 2009 17:37:53, всего редактировалось 3 раз(а).
Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 18, 2009 17:17:12 
Модератор
Аватар пользователя

Карма: 14
Рейтинг сообщений: 37
Зарегистрирован: Чт дек 11, 2008 14:52:26
Сообщений: 11492
Откуда: град Нижний
Рейтинг сообщения: 0
А на ассемблере это называется - вызов подпрограммы...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 18, 2009 17:17:20 
Встал на лапы
Аватар пользователя

Зарегистрирован: Сб ноя 29, 2008 19:34:25
Сообщений: 99
Откуда: Нальчик
Рейтинг сообщения: 0
Vov123 писал(а):
То что вам,скорее всего надо,в С называется функцией.
Формат типа того
тип вощзвращаемого аргумента _имя функции (параметр_1,параметр_2,...);


а можно маленький пример на си


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 18, 2009 17:19:41 
Опытный кот
Аватар пользователя

Зарегистрирован: Вт янв 20, 2009 14:49:08
Сообщений: 890
Откуда: Гондурас, Мурманск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Советую для начала почитать какой-нибудь учебник для начинающих по Си (но не С++ или С# а именно просто С).

_________________
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 18, 2009 17:19:42 
Модератор
Аватар пользователя

Карма: 14
Рейтинг сообщений: 37
Зарегистрирован: Чт дек 11, 2008 14:52:26
Сообщений: 11492
Откуда: град Нижний
Рейтинг сообщения: 0
Tigra..
Будите у нас на Калыме!
Так всё-таки будИте или будЕте ?
А то - мы разбудим, кто там у вас спит ? :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с подпрограммами на СИ
СообщениеДобавлено: Пт сен 18, 2009 17:34:45 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Вт июл 08, 2008 12:24:17
Сообщений: 1148
Рейтинг сообщения: 0
Tigra писал(а):
... и с помощью оператора RETURN ... обращаться к ним ...
Вызовы оператором RETURN не осуществляются даже в бейсике. Думаю, пока не следует браться за Си.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с подпрограммами на СИ
СообщениеДобавлено: Пт сен 18, 2009 17:44:24 
Встал на лапы
Аватар пользователя

Зарегистрирован: Сб ноя 29, 2008 19:34:25
Сообщений: 99
Откуда: Нальчик
Рейтинг сообщения: 0
Yellow Tiger писал(а):
Tigra писал(а):
... и с помощью оператора RETURN ... обращаться к ним ...
Вызовы оператором RETURN не осуществляются даже в бейсике. Думаю, пока не следует браться за Си.



А я думал, что этот форум существует для помощи начинающим в изучении работы с контроллерами , а тут вместо полезных для дела советов вставляют палки в колёса!
Вы лучше напишите как ркшить мою проблемму,если знаете как?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 18, 2009 17:45:15 
Мучитель микросхем
Аватар пользователя

Зарегистрирован: Ср ноя 21, 2007 14:14:37
Сообщений: 438
Откуда: Краснодар
Рейтинг сообщения: 0
Вот примерный порядок использования функций.


Вложения:
0117_0001.djvu [45.12 KiB]
Скачиваний: 271

_________________
Electronikus mente prius et oculis agat, quam armata manu.
Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 18, 2009 17:52:09 
Встал на лапы
Аватар пользователя

Зарегистрирован: Сб ноя 29, 2008 19:34:25
Сообщений: 99
Откуда: Нальчик
Рейтинг сообщения: 0
Владимир К. писал(а):
Вот примерный порядок использования функций.


Спасибо ,буду разбираться.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с подпрограммами на СИ
СообщениеДобавлено: Пт сен 18, 2009 21:07:54 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Вт июл 08, 2008 12:24:17
Сообщений: 1148
Рейтинг сообщения: 0
Tigra писал(а):
а тут ... вставляют палки в колёса!
Напротив - совет не писать на Си тебе сейчас будет очень кстати, язык Си противопоказан при таких обстоятельствах, в которых ты находишься. Начни с чего-нибудь попроще.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 18, 2009 21:37:01 
Встал на лапы

Зарегистрирован: Ср авг 26, 2009 15:59:39
Сообщений: 87
Рейтинг сообщения: 0
Да дайте вы уже простой пример использования функций которые возвращают значение :)

Код:
int some_func(int x) {
    int t = x+3;
    return t*t;
}

int main(void) {
   int b = 2;
   int c, d;
   c = some_func(b);
   d = some_func(c);
   return 0;
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 18, 2009 21:46:15 
Встал на лапы
Аватар пользователя

Зарегистрирован: Сб ноя 29, 2008 19:34:25
Сообщений: 99
Откуда: Нальчик
Рейтинг сообщения: 0
izmmisha писал(а):
Да дайте вы уже простой пример использования функций которые возвращают значение :)

Код:
int some_func(int x) {
    int t = x+3;
    return t*t;
}

int main(void) {
   int b = 2;
   int c, d;
   c = some_func(b);
   d = some_func(c);
   return 0;
}



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


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 18, 2009 21:51:23 
Встал на лапы

Зарегистрирован: Ср авг 26, 2009 15:59:39
Сообщений: 87
Рейтинг сообщения: 0
Tigra писал(а):
мне нужно не возвращать значение, а уходить в подпрограмму,а после её выполнения возвращаться на следующую строчку основной программы откда была вызванна подпрограмма.


Код:
void do_something() {
    PORTB = (PINB & _BV(PB6))?_BV(PB3):0;
}

int main(void) {
   /*тут делается чего то*/
   // вызываем функцию которая делает что-то часто используемое
   do_something();
   /*опять чего нить делаем*/
   // вызываем функцию которая делает что-то часто используемое
   do_something();
   return 0;
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 18, 2009 21:54:02 
Встал на лапы
Аватар пользователя

Зарегистрирован: Сб ноя 29, 2008 19:34:25
Сообщений: 99
Откуда: Нальчик
Рейтинг сообщения: 0
izmmisha писал(а):
Tigra писал(а):
мне нужно не возвращать значение, а уходить в подпрограмму,а после её выполнения возвращаться на следующую строчку основной программы откда была вызванна подпрограмма.


Код:
void do_something() {
    PORTB = (PINB & _BV(PB6))?_BV(PB3):0;
}

int main(void) {
   /*тут делается чего то*/
   // вызываем функцию которая делает что-то часто используемое
   do_something();
   /*опять чего нить делаем*/
   // вызываем функцию которая делает что-то часто используемое
   do_something();
   return 0;
}


Спасибо огромное - теперь понял!!!!!!!!

Побольше-бы таких людей в форумы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 18, 2009 22:24:01 
Мучитель микросхем
Аватар пользователя

Зарегистрирован: Вс янв 07, 2007 01:45:48
Сообщений: 491
Откуда: Российская Федерация, будь она неладна...
Рейтинг сообщения: 0
И всё же не стоит задавать подобных вопросов не ознакомившись с базовой теорией. Вам уже советовали, ну почитайте учебник, иначе этот вопрос будет далеко не последним. Процедуры и функции - это базовые понятия, и использование оных практически не зависит от того, для чего Вы пишите, будь то МК, ПК, ... .

_________________
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 18, 2009 22:47:11 
Встал на лапы
Аватар пользователя

Зарегистрирован: Сб ноя 29, 2008 19:34:25
Сообщений: 99
Откуда: Нальчик
Рейтинг сообщения: 0
Pooher писал(а):
И всё же не стоит задавать подобных вопросов не ознакомившись с базовой теорией. Вам уже советовали, ну почитайте учебник, иначе этот вопрос будет далеко не последним. Процедуры и функции - это базовые понятия, и использование оных практически не зависит от того, для чего Вы пишите, будь то МК, ПК, ... .


Програмирование микроконтроллеров не является моим основным занятием . Я занимаюсь установкой противоугонных систем на автомобили и там поверьте мне на слово есть чем занять голову, и к сожалению времени на изучение с нуля программированию микроконтроллеров, без чьей либо помощи является для меня сложной задачей. Я по возможности читаю учебники, но книга не всегда может помочь так, как человек в этом деле разбирающийся.
К сожалению большая часть людей в этом форуме готова строчить по три листа мелким шрифтом кто и что где-то недочитал, неже-ли просто НАПИСАТЬ 2 СТРОЧКИ КОДА С ПОЯСНЕНИЯМИ!
Извеняюсь если я кого-то этим письмом обидел, но это так.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб сен 19, 2009 01:19:55 
Мучитель микросхем
Аватар пользователя

Зарегистрирован: Вс янв 07, 2007 01:45:48
Сообщений: 491
Откуда: Российская Федерация, будь она неладна...
Рейтинг сообщения: 0
Цитата:
Програмирование микроконтроллеров не является моим основным занятием

Вы здесь не один такой :)
Цитата:
К сожалению большая часть людей в этом форуме готова строчить по три листа мелким шрифтом кто и что где-то недочитал, неже-ли просто НАПИСАТЬ 2 СТРОЧКИ КОДА С ПОЯСНЕНИЯМИ!

Мда. Ну не скажу что утверждение неожиданное.

_________________
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 26 ]  1,  

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


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 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