Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 29.11.2008, 05:20  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию УЧЕБНЫЙ ПРОЭКТ.

Потому как постоянно возникают вопросы у новичков во прсы по Си. (меня например).

Есть идея.

Создать УЧЕБНЫЙ ПРОЭКТ... отдельно для каждого компилятора и по каждому МК (PIC AVR ARM). В котором каждый мог бы добавлять свои участки кода. Описывать не функцию в целом, а только ОТДЕЛЬНЫЕ ПРИЁМЫ применения команд языка или компилятора. С подробными коментариями...

Для примера... (выдрал с форума Микрочип.Su)
Код:
//выборка из 16 битной переменой а, LOW и HIGH части
void LowHigh(unsigned int a)
{
unsigned char l;//объявим переменную для младшей части
unsigned char h;//объявим переменную для старшей части
l=(unsigned char)a;//перегрузим младшую часть
h=(unsigned char)(a››8);//перегрузим старшую часть
}

Можно было бы дописывать в файл ПРОЭКТА вопросы, и по свободе кто то бы мог отвечать на те которые хочет/может. Ответов могло бы быть несколько на каждый. Ведь возможны разные варианты. Выбирать оптимальный.

Может и бредовая идея. Но мне бы сейчас пригодилась...
А сам бы мог писать по АСМ )))
Этот вопрос конечно не к тем кому это было бы, а к тем кто бы мог отвечать.. Будет ли у них желание ))))



А Вот и вопрос 1.
Идея, после вызофа функции проверять флаг Z или С, что бы не организовывать специальный флаг, А по флагу Z или C определять, функция отработала нормально или с ошибкой. Или эт невозможно? Неизвестно как компилятор фрмирует возврат из функции????? флаги Z С могут портится.

Код:
//пример со специальным флагом 
void READINTEEPADRBUSY(address,value,eebusy)//чтение из ячейки внутренней епром, по адресу с проверкой если не занята
{
if(WR=0);
{
EEADR=address;
value=EEPROM_READ(void);
eebusy=0;
}
else eebusy=1;
}

//пример с флагом с(z)
void READINTEEPADRBUSY(address,value)//чтение из ячейки внутренней епром, по адресу с проверкой не занята
{
if(WR=0);
{
EEADR=address;
value=EEPROM_READ(void);
C=0;или Z
}
else C=1;или Z
}
//вызывающая процедура
if READINTEEPADRBUSY(address,value,eebusy)=1
{
cuntereeprom++
}



вопрос 2:
//как правильно написать декремент счётчика с проверкой на 0, так? 
if (cunterroreeprom--)=0;
{
erroreeprom=1
}
С уважением, спасибо за внимание )))))
Реклама:
picavr вне форума  
Непрочитано 29.11.2008, 12:41  
user_ushastyj
Временная регистрация
 
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
user_ushastyj на пути к лучшему
По умолчанию

Вместо этого
Код:
//выборка из 16 битной переменой а, LOW и HIGH части
void LowHigh(unsigned int a)
{
unsigned char l;//объявим переменную для младшей части
unsigned char h;//объявим переменную для старшей части
l=(unsigned char)a;//перегрузим младшую часть
h=(unsigned char)(a››8);//перегрузим старшую часть
}
Код:
unsigned char lo,hi;
union
{
struct{
unsigned char lo;
unsigned char hi;
}bt;
unsigned int a;
}un1;
un1.a=0x1234;
lo=un1.bt.lo;//0x34
hi=un1.bt.hi;//0x12
Если есть необходимость в массиве интовских чисел, то просто объявляете то же самое через массив.
Код:
typedef union
{
struct{
unsigned char lo;
unsigned char hi;
}bt;
unsigned int a;
}un1;
un1 un[5];
un[0].a=0x1234;
un[1].a=0x5678;
lo=un[0].bt.lo;
Очень удобно, когда разнородные данные нужно отправить через уарт.
Далее - битовые переменные для мелкокомпиляторов - это исключение, а не правило. всякие там зеро и карри допускаются только в хайтеке. И обозначаются CARRY и т.д. По-нормальному их лучше не юзать. Если нужно использовать битовые переменные, обозначайте их как часть структуры. Если хотите обнулить сразу все одной командой, опять используйте юнионы
Код:
union
{
struct{
unsigned  flag1:1;
unsigned  flag2:1;
unsigned free:6;
}flag;
unsigned char bit_pole;
}un1;
#define test un1.flag.flag1
#define clear_flagi() un1.bit_pole=0;
test=1;
clear_flagi();
Код:
вопрос 2:
//как правильно написать декремент счётчика с проверкой на 0, так?
if (cunterroreeprom--)=0;
{
erroreeprom=1
}
Неправильно. Я даже не говорю о том, что вместо оператора сравнения стоит присваивание. Дело в том, что переменная уже может быть равна 0, делая декремент, результат сравнения уже не будет равным 0.
Правильнее вначале проверить на равно 0, а затем, в зависимости от результата, что-то делать.
Код не привожу, он тривиальный.
__________________
разум когда-нибудь победит... (с)
user_ushastyj вне форума  
Непрочитано 29.11.2008, 13:16  
user_ushastyj
Временная регистрация
 
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
user_ushastyj на пути к лучшему
По умолчанию

Прошу прощения, я ошибся. Существует такая вещь, как префикс и постфикс - порядок выполнения выражения. В Вашем случае правильно - сначала выполняется сравнение, а затем идет декремент.
Т.е
Код:
unsigned char ta;
    ta=0;
    if(--ta ==0)
    {
    ta=2;
   } 
// неправильно, сначала идет декремент, а затем сравнение
Код:
unsigned char ta;
    ta=0;
    if(ta-- ==0)
    {
    ta=2;
   } 
// правильно, сначала идет сравнение, а затем декремент
__________________
разум когда-нибудь победит... (с)
user_ushastyj вне форума  
Непрочитано 29.11.2008, 13:44  
Grey_Cat
Прописка
 
Регистрация: 31.03.2005
Сообщений: 223
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 14 сообщении(ях)
Grey_Cat на пути к лучшему
По умолчанию

Всем привет! К сожалению пока ничем интересным поделиться не могу, так как программирую весьма средне, но хочу поделиться интересной информацией. На сайте 8052.com в разделе Code Library реализовано нечто подобное. Может быть взять это за основу? Только вот кто этим будет заниматься? Удачи!
Grey_Cat вне форума  
Непрочитано 29.11.2008, 14:35  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

Сообщение от user_ushastyj
Прошу прощения, я ошибся. Существует такая вещь, как префикс и постфикс - порядок выполнения выражения. В Вашем случае правильно - сначала выполняется сравнение, а затем идет декремент.
У меня выполнение процедуры идёт после её инициализации, а нициализация устанавливает счётчик.
Так что не сильно принципиально, хотя, в общем случае это правильнее.. проверка перед декрементом.

Спасибо Вам, изучу. Мне на примерах всегда проще чем выуживать из описания.

Сообщение от Grey_Cat
На сайте 8052.com в разделе Code Library реализовано нечто подобное. Может быть взять это за основу? Только вот кто этим будет заниматься? Удачи!
Те же что и отвечает на ПОСТЫ. Идея в том что бы не разбрасывать по всем веткам, а собирать в ОДНОМ месте, и в том что бы оставлять только ЦЕНУЮ информацию, удаляя расуждения. Например кто то добавил вопрос. А кто то отвечяя, пишет ниже.
Типа FAQ. По каждому МК или компилятору в одном файле. Файл бы находился ПО одной ссылке. Примерно как в ВИКИПЕДИИ. Но наверное движок сайта не позволит так.

Для себя уже начал Собирать примеры в файл...
picavr вне форума  
Непрочитано 29.11.2008, 20:05  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

Сообщение от picavr
Типа FAQ. По каждому МК или компилятору в одном файле.
Одним файлом FAQ по AVR PIC CVAVR WinAVR IAR Си - скачать:

http://avr123.nm.ru/avrfaq.rar
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 29.11.2008, 21:53  
MAXvaLL
Временная регистрация
 
Регистрация: 12.01.2008
Сообщений: 96
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
MAXvaLL на пути к лучшему
По умолчанию

Для начала стоит ответить на вопрос, как писать слово проЕкт...
MAXvaLL вне форума  
Непрочитано 29.11.2008, 22:09  
delay
Гражданин KAZUS.RU
 
Регистрация: 24.06.2005
Сообщений: 535
Сказал спасибо: 262
Сказали Спасибо 216 раз(а) в 118 сообщении(ях)
delay на пути к лучшему
По умолчанию

Сообщение от MAXvaLL
Для начала стоит ответить на вопрос, как писать слово проЕкт...
Как это все круто изменило!
delay вне форума  
Непрочитано 29.11.2008, 23:34  
MAXvaLL
Временная регистрация
 
Регистрация: 12.01.2008
Сообщений: 96
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
MAXvaLL на пути к лучшему
По умолчанию

Кроме шуток. В тексте допустимы любые ошибки, но заголовок должен быть идеален. Иначе с самого начала все это воспринимается как-то не серьезно.

Сорри за оффтоп.

Неужели еще нет нормальных фак'ов по пикам и аврам?!?! 8O
MAXvaLL вне форума  
Непрочитано 30.11.2008, 01:04  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

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

Сообщение от MAXvaLL
Неужели еще нет нормальных фак'ов по пикам и аврам?!?!8O
Нуу.. если уже всё есть в Факах - зачем тогда Форум ?
Читайте факи...

А потому что ВСЁ ТЕЧЁТ - ВСЁ ИЗМЕНЯЕТСЯ..... возникают новые вопросы и новые ответы на старые вопросы....

А Собственно. при чём PIC и AVR?... в них и так понятно

..... было сказано о СИ.


В общем ясно.. народу это не нужно )))))))))
закрываем тему ))))) и мучаемся по одиночке )))
picavr вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 13:36.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot