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

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

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

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

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

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

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

 
Опции темы

УЧЕБНЫЙ ПРОЭКТ.

Непрочитано 29.11.2008, 05:20  
picavr
Почётный гражданин KAZUS.RUN
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,815
Сказал спасибо: 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
Сообщений: 219
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 14 сообщении(ях)
Grey_Cat на пути к лучшему
По умолчанию

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

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

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

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

Для себя уже начал Собирать примеры в файл...
picavr вне форума  
Непрочитано 29.11.2008, 20:05  
avr123-nm-ru
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,552
Сказал спасибо: 75
Сказали Спасибо 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.RUN
 
Регистрация: 24.06.2005
Сообщений: 530
Сказал спасибо: 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.RUN
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,815
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

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

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

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

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

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


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

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

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

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


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.