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

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

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

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

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

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


 
Опции темы
Непрочитано 26.07.2013, 19:33  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Оптимальный старт в программировании МК на С

спасибо за труды - выкачаю сайто качалкой, книжка на андроиде - должна читать
Реклама:
oleg110592 вне форума  
Непрочитано 26.07.2013, 19:46  
elesy
Прописка
 
Регистрация: 14.09.2009
Адрес: Екатеринбург
Сообщений: 116
Сказал спасибо: 14
Сказали Спасибо 31 раз(а) в 15 сообщении(ях)
elesy на пути к лучшему
По умолчанию Re: Оптимальный старт в программировании МК на С

Сообщение от oleg110592 Посмотреть сообщение
читал я - не было там uint8_t
http://lib.ru/CTOTOR/kernigan.txt
Там как раз char, int. Использование типов в таком виде говорит о том что человек привык писать для РС. А у МК немного по другому, поэтому лучше использовать uint8_t, int8_t и так далее


Вот выдержка из керигана
Цитата:
2.2. Типы и размеры данных




Языке "C" имеется только несколько основных типов дан-
ных:
CHAR один байт, в котором может находиться один символ из
внутреннего набора символов.
INT Целое, обычно соответствующее естественному размеру це-
лых в используемой машине.
FLOAT С плавающей точкой одинарной точности.
DOUBLE С плавающей точкой двойной точности.
Кроме того имеется ряд квалификаторов, которые можно ис-
пользовать с типом INT: SHORT (короткое), LONG (длинное) и
UNSIGNED (без знака). Квалификаторы SHORT и LONG указывают
на различные размеры целых. Числа без знака подчиняются за-
конам арифметики по модулю 2 в степени N, где N - число би-
тов в INT; числа без знаков всегда положительны. Описания с
квалификаторами имеют вид:

Последний раз редактировалось elesy; 26.07.2013 в 19:48.
elesy вне форума  
Непрочитано 26.07.2013, 19:56  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Оптимальный старт в программировании МК на С

век живи - век учись:
Неправильное использование беззнаковых целых может приводить к неочевидным ошибкам из-за возникающего переполнения. В приведённом ниже примере использование беззнаковых целых в цикле в C и C++ превращает этот цикл в бесконечный:
Код:
char ar[N];
for (unsigned int i = N-1; i ›= 0; --i)
      ar[i] = i;
спасибо человеку и пароходу - заставил мозги шевелится
oleg110592 вне форума  
Непрочитано 26.07.2013, 20:00  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Оптимальный старт в программировании МК на С

Сообщение от oleg110592 Посмотреть сообщение
спасибо человеку и пароходу
Скажи проще - адмиралу ...
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 26.07.2013, 20:16  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: Оптимальный старт в программировании МК на С

Сообщение от oleg110592 Посмотреть сообщение
Неправильное использование беззнаковых целых может приводить к неочевидным ошибкам из-за возникающего переполнения.
http://www.pic24.ru/doku.php/osa/art...without_errors
Цитата:
В программе следует избегать любых конструкций, которые при прочтении могут быть истолкованы двояко, или которые смогут при определенных условиях повести себя неправильно. Самые частые допуски, которые позволяют себе программисты, - это несоблюдение границ использованных типов, путаница со знаковыми и беззнаковыми переменными, пренебрежение приведением типов. Эти допуски рассмотрим в первую очередь.

Типы данных
Нужно определять переменные тем типом, который соответствует их назначению. Например, не следует переменную, которая будет использована как числовая, определять типом char. Число может быть либо signed char либо unsigned char. Сам же char определяет символьную переменную. Понятно, что для контроллера все эти переменные – одно и то же, но для компилятора, а также для человека, читающего текст программы, - это разные вещи.

Например, типичная ошибка:

Неправильно:

char Counter;
Counter = 10;
if (Counter ›= 0) ...;

Это выражение будет правильно обрабатываться в MPLAB C18, в то время как в HT-PICC18 оно всегда будет возвращать true. Все из-за того, что в стандарте языка не оговаривается знаковость типа char, и каждый разработчик компиляторов вправе толковать его по-своему. В приведенном примере переменная должна быть определена так:

Правильно:

signed char Counter;
Counter = 10;
if (Counter ›= 0) ...;
Цитата:
переопределять типы данных. Стоит учитывать, что знаковость и размерность в стандарте языка определены для каждого типа довольно расплывчато (например, в HT-PICC18 тип char по умолчанию беззнаковый, в то время как в MPLAB C18 – знаковый; или в CCS тип int – 8-битный беззнаковый, а в остальных компиляторах – 16-битный знаковый). Поэтому в каждом проекте хорошо бы иметь h-файл с переопределениями типов
nahimovv вне форума  
Непрочитано 26.07.2013, 20:36  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Оптимальный старт в программировании МК на С

все понял - надо учится, учится..., как завещал нам великий, все о нем больше ни слова
off:
— Мальчик, ты опрокинул снежком наши стаканы.
— Дяденьки, я больше не буду!
— Да, мальчик, больше ты уже не будешь...
oleg110592 вне форума  
Непрочитано 26.07.2013, 21:41  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Оптимальный старт в программировании МК на С

Сообщение от oleg110592 Посмотреть сообщение
как завещал нам великий, все о нем больше ни слова
Да это не его - он у Сократа передрал.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 28.07.2013, 18:43  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Оптимальный старт в программировании МК на С

Сообщение от alvadep Посмотреть сообщение
Вы что-то имеете против дворников?
Нет, конечно. Но дворнику, если его уровень знаний — три класса ЦПШ, — не стоит заниматься программированием...
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 28.07.2013, 19:04  
Grey_Cat
Прописка
 
Регистрация: 31.03.2005
Сообщений: 223
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 14 сообщении(ях)
Grey_Cat на пути к лучшему
По умолчанию Re: Оптимальный старт в программировании МК на С

Цитата:
Там как раз char, int. Использование типов в таком виде говорит о том что человек привык писать для РС. А у МК немного по другому, поэтому лучше использовать uint8_t, int8_t и так далее
Попробуйте посмотреть AN ATMEL AVR315. ТАМ почему-то по другому происходит объявление переменных...
Grey_Cat вне форума  
Непрочитано 28.07.2013, 19:22  
elesy
Прописка
 
Регистрация: 14.09.2009
Адрес: Екатеринбург
Сообщений: 116
Сказал спасибо: 14
Сказали Спасибо 31 раз(а) в 15 сообщении(ях)
elesy на пути к лучшему
По умолчанию Re: Оптимальный старт в программировании МК на С

Сообщение от Grey_Cat Посмотреть сообщение
Попробуйте посмотреть AN ATMEL AVR315. ТАМ почему-то по другому происходит объявление переменных...
там юзают uchar , что гоаорит о том что он где то определен.
те же яйца только в профиль, или вы хотели сказать что то другое?
elesy вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимальный лазерник для ЛУТ Kabron Делимся опытом 187 31.05.2016 10:51
Оптимальный привод тележки весом 200кг d-f-m Производственное оборудование 18 12.07.2010 00:29
[Решено] Оптимальный коттеджный домофон LAVR12 Автоматика и аппаратура связи 0 22.04.2010 20:17
О программировании AVR на C++ neiver Микроконтроллеры, АЦП, память и т.д 55 24.03.2010 19:33
Оптимальный ламинатор для ЛУТ snakesoft Делимся опытом 7 13.01.2010 22:41


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


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