|
Вопросы по изучению Си |
|
|
|
Mar 8 2009, 07:13
|
Частый гость
 
Группа: Участник
Сообщений: 120
Регистрация: 16-02-08
Пользователь №: 35 087

|
Здравствуйте. Месяца два назад сел за изучение микроконтроллеров AVR. Почитал книгу «Белов А. В. Создаём устройства на микроконтроллерах. 2007», проделал примерчики в CodeVisionAVR, пощупал аврстудию, погонял схемки в протеусе, попрошивал мегу8 на stk500, на макетке собрал. Чувствую что знаний по языку Си не хватает. Имеет ли смысл на некоторое время забыть про микроконтроллеры, установить что-нибудь вроде Microsoft Visual Studio и начать изучать язык Си по книге про чистый Си без привязки к микроконтроллерам, например, по книге 1) Керниган&Ритчи в списке?! Но не знаю, хватит ли на чистый Си сил и энтузиазма, без привязки к микроконтроллерам читать тяжело, да и времени на чтение мало – микроконтроллеры это пока хобби. Или может быть продолжать читать книги по микроконтроллерам?! Но там язык Си рассмотрен поверхностно – пролетарская суть не ясна. Поискал в сети книги по чистому Си (без плюсов), литературы на русском – мало. Вот что удалось найти: 1) Керниган, Ритчи. Язык Си 2) Керниган, Ритчи. Язык программирования Си 3) Керниган, Пайк. Практика программирования 4) Шилдт. Полный справочник по C Остальная доступная в сети литература по Си с первого взгляда менее привлекательна: 5) Афанасьев. Программирование на языке Си 6) Богатырев. Руководство полного идиота по программированию на C 7) Болский. Язык программирования Си 8) Бочков. Язык программирования Cи для ПК 9) Голицина. Основы алгоритмизации и программирования 10) Крупник. Изучаем Си 11) Подбельский. Программирование на языке Си 12) Фьюэр. Задачи по языку С 14) Хэзфилд. Искусство программирования на C 13) Шилтд. С для профессиональных программистов Отдельный вопрос по классической книге: 15) «Роберт Седжвик. Фундаментальные алгоритмы на C. Части 1 - 5. Анализ. Структуры данных. Сортировка. Поиск. Алгоритмы на графах» Книга того же автора с тем же названием встречались мне для С++ - изучать ли ее или попытаться найти эту книгу для чистого Си в бумажном виде?! Верно ли утверждение: «Седжвика можно брать и с "C++" в названии. На самом деле там все равно чистый C». Что еще из книг маскирующихся в названии под «С++» пригодно для изучения про чистый Си?! Если что-то из доступных в сети электронных книг по чистому Си пропустил, пожалуйста, дополните. Может быть есть что то из достойных «бумажных» книг по Си, что не выложено в сеть и стоит найти?! Наверное, нужны книги не просто справочник и не с примитивом, а книга учебная, что бы много различных примеров разобрано, приложений, от простого к сложному и через них вся суть и обобщения. Вот например книги с громкими и многообещающими аннотациями: 16) Прата. Язык программирования C (Си). Лекции и упражнения h**p://www.livelib.ru/book/1000163060 17) Кочан. Программирование на языке C (Си) h**p://www.williamspublishing.com/Books/5-8459-1088-9.html Но за громкими и красивыми обложками, аннотациями, часто бывают пустышки которые лучше даже не читать. Вечные вопросы: что делать и стоит ли вообще читать или может так и ходить неграмотным и программировать методом тыка?! Как развиваться дальше, что читать, в каком порядке читать и что в первую очередь читать?! Спасибо за внимание и советы.
Сообщение отредактировал Владимир_2010 - Mar 8 2009, 07:15
|
|
|
|
|
 |
Ответов
|
Mar 13 2009, 08:50
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(Rst7 @ Mar 13 2009, 12:33)  Можно из такого блока выходить чем угодно... хоть goto (не уверен) Проверил - можно.  Текст для проверки: Код volatile int ff;
int main (void) __attribute__((OS_main));
int main (void) { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { DDRB = 1; if(ff) goto aaa; PORTB=1; } ff += 41*DDRB; aaa: for(uint8_t j=0; j<3;j++) { ff += pgm_read_byte(&(BCD[j])); }
return 0; } Листинг CODE 00000070 <main>:
int main (void) __attribute__((OS_main));
int main (void) { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) 70: 2f b7 in r18, 0x3f ; 63 return 1; }
static __inline__ uint8_t __iCliRetVal(void) { cli(); 72: f8 94 cli { DDRB = 1; 74: 31 e0 ldi r19, 0x01 ; 1 76: 34 b9 out 0x04, r19 ; 4 if(ff) goto aaa; 78: 80 91 08 01 lds r24, 0x0108 7c: 90 91 09 01 lds r25, 0x0109 80: 89 2b or r24, r25 82: 09 f0 breq .+2 ; 0x86 <main+0x16> 84: 39 c0 rjmp .+114 ; 0xf8 <main+0x88> PORTB=1; 86: 35 b9 out 0x05, r19 ; 5 (void)__s; }
static __inline__ void __iRestore(const uint8_t *__s) { SREG = *__s; 88: 2f bf out 0x3f, r18 ; 63 } ff += 41*DDRB; 8a: 80 91 08 01 lds r24, 0x0108 8e: 90 91 09 01 lds r25, 0x0109 92: 24 b1 in r18, 0x04 ; 4 94: 49 e2 ldi r20, 0x29 ; 41 96: 24 9f mul r18, r20 98: 90 01 movw r18, r0 9a: 11 24 eor r1, r1 9c: 28 0f add r18, r24 9e: 39 1f adc r19, r25 a0: 30 93 09 01 sts 0x0109, r19 a4: 20 93 08 01 sts 0x0108, r18 aaa: for(uint8_t j=0; j<3;j++) { ff += pgm_read_byte(&(BCD[j])); a8: 80 91 08 01 lds r24, 0x0108 ac: 90 91 09 01 lds r25, 0x0109 b0: e4 e3 ldi r30, 0x34 ; 52 b2: f0 e0 ldi r31, 0x00 ; 0 b4: 24 91 lpm r18, Z+ b6: 82 0f add r24, r18 b8: 91 1d adc r25, r1 ba: 90 93 09 01 sts 0x0109, r25 be: 80 93 08 01 sts 0x0108, r24 c2: 80 91 08 01 lds r24, 0x0108 c6: 90 91 09 01 lds r25, 0x0109 ca: 31 96 adiw r30, 0x01 ; 1 cc: 24 91 lpm r18, Z+ ce: 82 0f add r24, r18 d0: 91 1d adc r25, r1 d2: 90 93 09 01 sts 0x0109, r25 d6: 80 93 08 01 sts 0x0108, r24 da: 80 91 08 01 lds r24, 0x0108 de: 90 91 09 01 lds r25, 0x0109 e2: 31 96 adiw r30, 0x01 ; 1 e4: e4 91 lpm r30, Z+ e6: 8e 0f add r24, r30 e8: 91 1d adc r25, r1 ea: 90 93 09 01 sts 0x0109, r25 ee: 80 93 08 01 sts 0x0108, r24 }
return 0; } f2: 80 e0 ldi r24, 0x00 ; 0 f4: 90 e0 ldi r25, 0x00 ; 0 f6: 08 95 ret f8: 2f bf out 0x3f, r18 ; 63 __asm__ volatile ("" ::: "memory"); fa: d6 cf rjmp .-84 ; 0xa8 <main+0x38>
|
|
|
|
Сообщений в этой теме
Владимир_2010 Вопросы по изучению Си Mar 8 2009, 07:13 _Pasha Не начинайте с Codevision. Он портит мозг.
Лучше... Mar 8 2009, 07:22 zltigo Достаточно одной - K&R второе издание. Контрол... Mar 8 2009, 07:36 Владимир_2010 Цитата(_Pasha @ Mar 8 2009, 12:22) Не нач... Mar 8 2009, 08:42 ARV Лично мое мнение такое: программирование - это не ... Mar 8 2009, 08:57 vshemm Цитата(ARV @ Mar 8 2009, 11:57) К сожален... Mar 8 2009, 09:41 Владимир_2010 Цитата(zltigo @ Mar 8 2009, 12:36) Достат... Mar 8 2009, 09:10 zltigo Цитата(Владимир_2010 @ Mar 8 2009, 12:10)... Mar 8 2009, 09:24 Владимир_2010 Цитата(zltigo @ Mar 8 2009, 14:17) Я же д... Mar 8 2009, 09:24 zltigo Цитата(Владимир_2010 @ Mar 8 2009, 12:24)... Mar 8 2009, 09:54 Владимир_2010 Вначале любой язык предпочитаю изучать через приме... Mar 8 2009, 10:07 zltigo Цитата(Владимир_2010 @ Mar 8 2009, 13:07)... Mar 8 2009, 10:21 Herz Вот, пользуюсь, как справочником. О "художес... Mar 8 2009, 11:48 zltigo Цитата(Herz @ Mar 8 2009, 14:48) Вот, пол... Mar 8 2009, 12:27 sergeeff Цитата(Herz @ Mar 8 2009, 14:48) Вот, пол... Mar 8 2009, 12:39 DpInRock Присоединяюсь к Герцу. K&R - мало полезен. Бол... Mar 8 2009, 12:52 zltigo Цитата(DpInRock @ Mar 8 2009, 15:52) в ми... Mar 8 2009, 12:57 sergeeff Цитата(DpInRock @ Mar 8 2009, 15:52) Прис... Mar 8 2009, 13:25  zltigo Цитата(sergeeff @ Mar 8 2009, 16:25) Так ... Mar 8 2009, 13:43 777777 Цитата(DpInRock @ Mar 8 2009, 15:52) Прис... Mar 10 2009, 04:34 DpInRock Чтобы научиться ездить на автомобиле нужно читать ... Mar 8 2009, 14:53 haker_fox Цитата(DpInRock @ Mar 8 2009, 22:53) Нужн... Mar 9 2009, 14:18  zltigo Цитата(haker_fox @ Mar 9 2009, 17:18) А ч... Mar 9 2009, 14:24   haker_fox Цитата(zltigo @ Mar 9 2009, 22:24) Аллах ... Mar 9 2009, 14:49    zltigo Цитата(haker_fox @ Mar 9 2009, 17:49) А е... Mar 9 2009, 15:45     haker_fox Цитата(zltigo @ Mar 9 2009, 23:45) Начина... Mar 9 2009, 17:17      zltigo Цитата(haker_fox @ Mar 9 2009, 20:17) Но ... Mar 9 2009, 18:31       haker_fox Цитата(zltigo @ Mar 10 2009, 02:31) ... Mar 10 2009, 02:17        A. Fig Lee Цитата(haker_fox @ Mar 9 2009, 22:17) Вот... Mar 10 2009, 23:39         777777 Цитата(A. Fig Lee @ Mar 11 2009, 02:39) и... Mar 11 2009, 06:05         haker_fox Цитата(A. Fig Lee @ Mar 11 2009, 07:39) и... Mar 11 2009, 09:32          A. Fig Lee Цитата(haker_fox @ Mar 11 2009, 05:32) Ещ... Mar 12 2009, 01:39           haker_fox Цитата(A. Fig Lee @ Mar 12 2009, 09:39) В... Mar 12 2009, 15:47           vik0 Цитата(A. Fig Lee @ Mar 12 2009, 03:39) Н... Mar 12 2009, 19:53            Rst7 Цитата(vik0 @ Mar 12 2009, 21:53) Ну и от... Mar 13 2009, 07:16             Сергей Борщ Цитата(Rst7 @ Mar 13 2009, 09:16) Вы прос... Mar 13 2009, 07:37             vik0 Цитата(Rst7 @ Mar 13 2009, 09:16) Вы прос... Mar 13 2009, 07:41           777777 Цитата(A. Fig Lee @ Mar 12 2009, 04:39) Д... Mar 13 2009, 07:05         vik0 Цитата(A. Fig Lee @ Mar 11 2009, 01:39) р... Mar 11 2009, 18:12          singlskv Цитата(vik0 @ Mar 11 2009, 21:12) У Страу... Mar 11 2009, 20:33           vik0 Цитата(singlskv @ Mar 11 2009, 22:33) Оче... Mar 11 2009, 21:20 Владимир_2010 В том то и вопрос – знаю только базу for, wh... Mar 8 2009, 15:30 _Pasha Цитата(Владимир_2010 @ Mar 8 2009, 18:30)... Mar 8 2009, 15:51 zltigo Цитата(Владимир_2010 @ Mar 8 2009, 18:30)... Mar 8 2009, 18:06 singlskv Цитата(Владимир_2010 @ Mar 8 2009, 18:30)... Mar 8 2009, 21:13 SergeyTT Цитата(Владимир_2010 @ Mar 8 2009, 17:30)... Mar 8 2009, 21:39 Herz Цитата(zltigo @ Mar 8 2009, 14:27) Типа ... Mar 8 2009, 17:41 Владимир_2010 Да уж, все еще более усложняется и удаляется от же... Mar 8 2009, 19:58 zltigo Цитата(Владимир_2010 @ Mar 8 2009, 22:58)... Mar 8 2009, 20:05 _Pasha Цитата(Владимир_2010 @ Mar 8 2009, 22:58)... Mar 8 2009, 21:12 Владимир_2010 Цитата(Herz @ Mar 8 2009, 16:48) Вот, пол... Mar 9 2009, 10:00 zltigo Цитата(Владимир_2010 @ Mar 9 2009, 13:00)... Mar 9 2009, 10:41  Harvester Цитата(zltigo @ Mar 9 2009, 13:41) Нашел ... Mar 10 2009, 07:10 A. Fig Lee K&R - я бы не заморачивался его читать.
Он про... Mar 9 2009, 17:39 DRUID3 Владимир_2010, у одного из посетителей этого форум... Mar 10 2009, 07:22 Владимир_2010 Цитата(777777 @ Mar 10 2009, 09:34) ...Уч... Mar 10 2009, 12:34 sergeeff Цитата(Владимир_2010 @ Mar 10 2009, 15:34... Mar 10 2009, 20:36 Rst7 Цитатаили непереносимые расшинения гнуся?
Где Вы ... Mar 13 2009, 07:40 Rst7 Цитатанепереносимые расшинения гнуся?
Дабы закрыт... Mar 13 2009, 07:53 _Pasha Цитата(Rst7 @ Mar 13 2009, 11:53) Дабы за... Mar 13 2009, 08:15  MrYuran Цитата(_Pasha @ Mar 13 2009, 11:15) Кстат... Mar 13 2009, 08:20 Rst7 ЦитатаКстати, а в ИАРе return внутри for() как себ... Mar 13 2009, 08:19 _Pasha Цитата(Rst7 @ Mar 13 2009, 12:19) тут он ... Mar 13 2009, 08:29 Rst7 Цитаталучше break;
Конкретно в такой критической ... Mar 13 2009, 08:23 Kirill24 Посоветуйте книжку для НАЧИНАЮЩЕГО(чайника) по... Oct 25 2009, 11:57 smac Цитата(Kirill24 @ Oct 25 2009, 14:57) Пос... Oct 25 2009, 21:23 chief_olimp Шпак Ю.А.
Программирование на языке С для AVR и PI... Oct 25 2009, 14:17 kurtis ЦитатаСи-программированию для микроконтроллеров
Пр... Oct 25 2009, 18:11 arm123 У меня такой вопрос:
к примеру есть функция с тако... Nov 9 2009, 11:41 sergeeff Г.Саттер, А.Александреску "Стандарты программ... Nov 9 2009, 11:58 WHALE Дык в топике вроде речь идет о С? И если компилято... Nov 9 2009, 13:02 ReAl Цитата(WHALE @ Nov 9 2009, 15:02) Дык в т... Nov 9 2009, 14:34 arm123 Я пользуюсь компилятором IAR. Сдесь вроде поддержи... Nov 9 2009, 14:05 mdmitry И не забыть про реентабельность(переносимость) код... Nov 9 2009, 14:33 arm123 С точки зрения быстродействия все таки да мне каже... Nov 9 2009, 14:37 sergeeff Цитата(arm123 @ Nov 9 2009, 17:37) С точк... Nov 9 2009, 15:30  arm123 Цитата(sergeeff @ Nov 9 2009, 18:30) Я пр... Nov 9 2009, 15:52 kurtis Не забудьте инициализировать переменную, т.е. долж... Nov 9 2009, 16:05 arm123 Цитата(kurtis @ Nov 9 2009, 20:05) У Вас ... Nov 9 2009, 19:41 Waso Добрый день! или не день =) ... Влеплю сюда во... Nov 13 2009, 15:13 AHTOXA Наследовать кнопку от клавиатуры - это, имхо, пере... Nov 13 2009, 22:34 Сергей Борщ Цитата(Waso @ Nov 13 2009, 17:13) чтоб до... Nov 13 2009, 22:40 Waso Хорошо, но тогда эти ссылки будут храниться в ОЗУ,... Nov 15 2009, 10:34 Сергей Борщ Цитата(Waso @ Nov 15 2009, 12:34) Если да... Nov 15 2009, 18:14 kurtis Встретил в исходниках такую вот конструкцию
Код#de... Nov 17 2009, 22:33 XVR Цитата(kurtis @ Nov 18 2009, 01:33) Встре... Nov 18 2009, 07:39 mdmitry Кодdo { aa(a); bb(a); } while... Nov 18 2009, 14:51 Herz Цитатаif (some) func2(a); else blablabla(a); // Sy... Nov 18 2009, 15:39 defunct Цитата(Herz @ Nov 18 2009, 17:39) Разве? ... Nov 18 2009, 15:45 rezident Цитата(Herz @ Nov 18 2009, 20:39) Разве? ... Nov 18 2009, 15:59  Herz Цитата(rezident @ Nov 18 2009, 17:59) Пот... Nov 18 2009, 20:26   XVR Цитата(Herz @ Nov 18 2009, 23:26) Хм, ну ... Nov 19 2009, 07:52    Herz Цитата(XVR @ Nov 19 2009, 09:52) Понятно ... Nov 19 2009, 08:18     Сергей Борщ Цитата(Herz @ Nov 19 2009, 10:18) Если за... Nov 19 2009, 09:38 baralgin Цитата(Сергей Борщ @ Nov 19 2009, 11:38) ... Nov 19 2009, 20:47 defunct Цитата(baralgin @ Nov 19 2009, 22:47) В с... Nov 19 2009, 23:53 baralgin Цитата(defunct @ Nov 20 2009, 01:53) Даже... Nov 20 2009, 10:02
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|