|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 3:16 pm
C + + за инструкциите на Pic
| Автор |
Съобщение |
|
sirius_alpha
Ранг: Минаващ
Регистриран на: Вто Окт 12, 2004 8:33 pm Мнения: 5
|
 C + + за инструкциите на Pic
Начинаещ съм в тази област на електрониката затова се надявам въпроса ми да не ви издразни много,а той е свързан с това ако може да ми препоръчате подходящ компилатор на C++ за инструкциите на PIC и повече информация за програмирането на PIC s езика C++ който ми е далеч по-добре познат от асемблер за пик . . .
Не се изразих особено добре, но се надявам да ме разберете . . .
|
| Вто Окт 12, 2004 9:01 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Абе аз добре те разбрах ама:
1. Откажи се от ++, и мисли за "чисто" С. Тогава ще те уредим с компилатор.
2. Смени пика с нещо по-мощно. Ако си наясно с процеса на компилиране на обектните езици, ще знеш, че кода пройзведен от тях е доста тежък (особенно като говорим за стек и хип).
Иначе ефекта ще е като да закачин ремарке от камион на Polo. Не става. Иначе за пик има и С++, даже и Бейсик ама работа ли искаш да вършил или да светкаш светодиоди?
|
| Сря Окт 13, 2004 9:36 am |
|
 |
|
Гост
|
Ñåãà êàòî ñå çàìèñëÿ îò òàçè ãëåäíà òî÷êà ñè ïðàâ íàèñòèíà îáåêòíî îðèåíòèðàíèòå åçèöè ñà ïî òåæêè ,ìî òúé êàòî ñúì âñå îùå â íà÷àëîòî ìè ñå èñêà äà çàïî÷íà ñ íåùî ïî-åëåìåíòàðíî,çàòîâà ñå çàõâàíàõ ñ pic,àêî ìîæåø äà ìè ïðåäëîæèø íÿêàêúâ ïî-äîáúð âàðèí ùå ñúì òè áëàãîäàðåí . . . 
|
| Сря Окт 13, 2004 10:19 am |
|
 |
|
sirius_alpha
Ранг: Минаващ
Регистриран на: Вто Окт 12, 2004 8:33 pm Мнения: 5
|
Мога да науча асемблерските инструкции ,няма да ми е проблем,но далеч по-лесно би се работило на език като C . . . 
|
| Сря Окт 13, 2004 10:25 am |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
PIC+C е едно добро решение (но без ++). Ако искаш за 16та - серия колегите ще помогнат. За 18та и аз имам компилатор, ще ти го дам. Зависи дали си решил на сериозно да се занимаваш. Смяташ ли да даваш пари за развоен хардуер? Най - евтния вариант е PIC16F87X плюс сериен програматор (има го из нета). Оптималния според мен е PIC18F452 + ICD2 (общо към 100$). Това плюс С компилатора е абсолютно достатъчно и за доста сериозна работа.
А ако не искаш ПИК, може и AVR - там Реконструктора е силен, а и развоя май излиза по-евтино (незнам хардуерния дебъгинг как се прави там). 
|
| Сря Окт 13, 2004 11:12 am |
|
 |
|
sirius_alpha
Ранг: Минаващ
Регистриран на: Вто Окт 12, 2004 8:33 pm Мнения: 5
|
Ами вече си имам един Propic 2(чух че "про" - то нещо му куца ,но когато го тествах с един PIC16F84A ,не даде никакви грешки поне при програмирането) затова смятам с Pic да започна,за сериозна работа ми е рано въпреки че имам сериозни идеи  та ако можеш дай ми линк към компилатора ако има и документация още по-добре . . .
|
| Сря Окт 13, 2004 11:38 am |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
Това не е съвсем така. Зависи, разбира се, къде прокараме границата между C и C++.  Направих една малка програмка: Ето извикването на ф-ята init и за C случая: И за C++ случая: Няма никаква разлика, във викането, общо взето.  Но да видим какво става в самата ф-я:  |  |  |  | Код: 17: void init(test_struct* pts, int a, int b) 18: { +0000002E: 93CF PUSH R28 Push register on stack +0000002F: 93DF PUSH R29 Push register on stack +00000030: B7CD IN R28,0x3D In from I/O location +00000031: B7DE IN R29,0x3E In from I/O location +00000032: 9726 SBIW R28,0x06 Subtract immediate from word +00000033: B60F IN R0,0x3F In from I/O location +00000034: 94F8 CLI Flag clear +00000035: BFDE OUT 0x3E,R29 Out to I/O location +00000036: BE0F OUT 0x3F,R0 Out to I/O location +00000037: BFCD OUT 0x3D,R28 Out to I/O location +00000038: 8389 STD Y+1,R24 Store indirect with displacement +00000039: 839A STD Y+2,R25 Store indirect with displacement +0000003A: 836B STD Y+3,R22 Store indirect with displacement +0000003B: 837C STD Y+4,R23 Store indirect with displacement +0000003C: 834D STD Y+5,R20 Store indirect with displacement +0000003D: 835E STD Y+6,R21 Store indirect with displacement 19: pts->a = a; +0000003E: 81E9 LDD R30,Y+1 Load indirect with displacement +0000003F: 81FA LDD R31,Y+2 Load indirect with displacement +00000040: 818B LDD R24,Y+3 Load indirect with displacement +00000041: 819C LDD R25,Y+4 Load indirect with displacement +00000042: 8380 STD Z+0,R24 Store indirect with displacement +00000043: 8391 STD Z+1,R25 Store indirect with displacement 20: pts->b = b; +00000044: 81E9 LDD R30,Y+1 Load indirect with displacement +00000045: 81FA LDD R31,Y+2 Load indirect with displacement +00000046: 818D LDD R24,Y+5 Load indirect with displacement +00000047: 819E LDD R25,Y+6 Load indirect with displacement +00000048: 8382 STD Z+2,R24 Store indirect with displacement +00000049: 8393 STD Z+3,R25 Store indirect with displacement 21: } |  |  |  |  |
 |  |  |  | Код: @00000091: _ZN10test_class4initEii 66: } +00000091: 93CF PUSH R28 Push register on stack +00000092: 93DF PUSH R29 Push register on stack +00000093: B7CD IN R28,0x3D In from I/O location +00000094: B7DE IN R29,0x3E In from I/O location +00000095: 9726 SBIW R28,0x06 Subtract immediate from word +00000096: B60F IN R0,0x3F In from I/O location +00000097: 94F8 CLI Flag clear +00000098 : BFDE OUT 0x3E,R29 Out to I/O location +00000099: BE0F OUT 0x3F,R0 Out to I/O location +0000009A: BFCD OUT 0x3D,R28 Out to I/O location +0000009B: 8389 STD Y+1,R24 Store indirect with displacement +0000009C: 839A STD Y+2,R25 Store indirect with displacement +0000009D: 836B STD Y+3,R22 Store indirect with displacement +0000009E: 837C STD Y+4,R23 Store indirect with displacement +0000009F: 834D STD Y+5,R20 Store indirect with displacement +000000A0: 835E STD Y+6,R21 Store indirect with displacement 42: m_a = a; +000000A1: 81E9 LDD R30,Y+1 Load indirect with displacement +000000A2: 81FA LDD R31,Y+2 Load indirect with displacement +000000A3: 818B LDD R24,Y+3 Load indirect with displacement +000000A4: 819C LDD R25,Y+4 Load indirect with displacement +000000A5: 8380 STD Z+0,R24 Store indirect with displacement +000000A6: 8391 STD Z+1,R25 Store indirect with displacement 43: m_b = b; +000000A7: 81E9 LDD R30,Y+1 Load indirect with displacement +000000A8: 81FA LDD R31,Y+2 Load indirect with displacement +000000A9: 818D LDD R24,Y+5 Load indirect with displacement +000000AA: 819E LDD R25,Y+6 Load indirect with displacement +000000AB: 8382 STD Z+2,R24 Store indirect with displacement +000000AC: 8393 STD Z+3,R25 Store indirect with displacement 44: } |  |  |  |  |
Разликата отново е никаква.
|
| Сря Окт 13, 2004 12:16 pm |
|
 |
|
sirius_alpha
Ранг: Минаващ
Регистриран на: Вто Окт 12, 2004 8:33 pm Мнения: 5
|
Интересно ми е като гледам този код как точно би се извършило обръщането към SFR или към някой от портовете,както и тяхното конфигуриране в средата на C . . .
|
| Сря Окт 13, 2004 12:30 pm |
|
 |
|
Mozfet
Ранг: Ориентиран
Регистриран на: Съб Сеп 25, 2004 4:33 pm Мнения: 273 Местоположение: София
|
Аз за друго Ц++, освен това на Павката не се сещам. Ето ти линк:
http://www.picant.com/
Да ти кажа всеки компилатор върши работа. Най-важно е да имаш добра визия за чипа от вътре и да си го бъзикаш, както си искаш. Иначе е малко вероятно да пишеш структури и unions за информационни системи на библиотеки и цветарски магазини 
_________________ Adios
Mozfet
|
| Сря Окт 13, 2004 1:50 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
"Това не е съвсем така. Зависи, разбира се, къде прокараме границата между C и C++. Smile "
Така де, ама аз съм малко предубеден към ++, така че не ми обръщайте внимание.
Компилатора който аз имам е само за 18та серия (MPLAB C18). Всъщност имам някакви версии на HiTech и CCS, на едно цеде, ама не знам до колко са работоспособни. Колегите ще помагат за 16та серия. Вземи си от комет PIC16F87X - по удобни са за учене (повече периферия).
|
| Сря Окт 13, 2004 1:57 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30684 Местоположение: София
|
|
| Сря Окт 13, 2004 6:05 pm |
|
 |
|
forest_gump
Ранг: Професионалист
Регистриран на: Сря Окт 13, 2004 11:24 pm Мнения: 500 Местоположение: Стара Загора
|
Карай си на макро асемблера MPASM, за да ти е ясно к'во правиш 
|
| Нед Окт 17, 2004 12:41 am |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Да бе ясно ти е. На мен като си погледна старите асм сорсове, нищо не ми е ясно в първия един час. Хич не ме убеждавай че 10 страници сорс на асемблер може да е по-прегледен от 5 страници С
|
| Нед Окт 17, 2004 12:32 pm |
|
 |
|
forest_gump
Ранг: Професионалист
Регистриран на: Сря Окт 13, 2004 11:24 pm Мнения: 500 Местоположение: Стара Загора
|
Ами аз ли да ти слагам коментарите на асм сорса, Цецо ... !!!  То и аз се чудя дали аз съм ги писал тия работи (старите асм сорсове), ама като си видя хелпа отстрани и ми светва 
|
| Нед Окт 17, 2004 1:26 pm |
|
 |
|
Mozfet
Ранг: Ориентиран
Регистриран на: Съб Сеп 25, 2004 4:33 pm Мнения: 273 Местоположение: София
|
Всъщност най-добрата комбинация е компилатор + асемблер. Колкото и да се опитваш да го избегнеш, в един момент на всеки се налага да приложи ASM в програмата си.
А като правило доброто - бързо прекъсване се пише на асемблер.
_________________ Adios
Mozfet
|
| Нед Окт 17, 2004 1:38 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 15 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|