| Автор |
Съобщение |
|
eng.komitov
Ранг: Минаващ
Регистриран на: Нед Окт 25, 2015 1:42 pm Мнения: 23
|
 Помощ за курсов проект
Весела Коледа на всички. Правя курсов проект на тема "три-позиционен терморегулатор". Не съм сигурен, че правилно съм дефинирал глобалните променливи и декларирал в подпрограмите. Ето как съм дефинирал глобалните променливи и константи: Следва деклариране на използваните подпрограми и дефиниране на функцията main.c А това е част от кода на функцията menu, в която се настройват глобалните променливи (параметрите на регулатора) : Правилно ли съм дефинирал и декларирал глобалните променливи?
|
| Нед Дек 27, 2015 11:10 am |
|
 |
|
eng.komitov
Ранг: Минаващ
Регистриран на: Нед Окт 25, 2015 1:42 pm Мнения: 23
|
 Re: Помощ за курсов проект
А при опит за компилиране с bild all ми изписва следните предупреждения и грешки: Може би трябва да дефинирам собствена функция копираща един низ в друг, но как?
|
| Нед Дек 27, 2015 3:22 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11265 Местоположение: Добрич
|
 Re: Помощ за курсов проект
Това декларира Pzd_3 като масив от char тип, а пък в инициализацията имаш " developed by " което е cons char*. Демек масивът ти е от символи, а го инициализираш с указател към символи. Не е ясно какво искаш да постигнеш, но възможни варианти са:  |  |  |  | Код: static rom const char Pzd_3[]={' ', ' ', 'd', 'e', 'v', 'e', 'l', 'o', 'p', 'e', 'd', ' ', 'b', 'y', ' '}; |  |  |  |  |
... с функциите също не е ясно какво се опитваш...
|
| Нед Дек 27, 2015 3:44 pm |
|
 |
|
eng.komitov
Ранг: Минаващ
Регистриран на: Нед Окт 25, 2015 1:42 pm Мнения: 23
|
 Re: Помощ за курсов проект
В реда, който цитираш дефинирам масив от тип char , който е константа съхранявана в програмната памет(иначе е безсмислена инициализацията). Масива го инициализирам с низа " developed by ", който се копира от библиотечната функция strcpy в глобалната променлива first_row, за да се изведе с функцията в прикачения файл на горния ред на 2х16 буквено-цифров LCD.
|
| Нед Дек 27, 2015 6:57 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11265 Местоположение: Добрич
|
 Re: Помощ за курсов проект
Виж.... в Ц/Ц++ когато имаш нещо в кавички, това е от тип const char* иначе казано указател към константен символ или символи... Когато този (или някой друг тип) го сложиш във фигурни скобки се получава структура или масив от дадения тип. Демек {'....'} е структура или масив от указатели. Ти обаче го ползваш за инициализация на масив от символи. Съответно получаваш предупреждение, че указател се преобразува до нещо друго.
Не знам как по друг начин да ти го обясня....
|
| Нед Дек 27, 2015 8:47 pm |
|
 |
|
eng.komitov
Ранг: Минаващ
Регистриран на: Нед Окт 25, 2015 1:42 pm Мнения: 23
|
 Re: Помощ за курсов проект
Разбрах те просто по начало беше масив и съм забравил да изтрия фигурните скоби, както и квадратните.
|
| Нед Дек 27, 2015 10:16 pm |
|
 |
|
eng.komitov
Ранг: Минаващ
Регистриран на: Нед Окт 25, 2015 1:42 pm Мнения: 23
|
 Re: Помощ за курсов проект
За глобалните променливи се използва ключовата дума static. Прочетох го в ръководството, първия път не съм търсил внимателно.
|
| Нед Дек 27, 2015 10:22 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11265 Местоположение: Добрич
|
 Re: Помощ за курсов проект
Хм.... Не ги знам тия ръководства и на какви глупости ви учат. Но в С имаш компилация на един или повече сорс файла, при което се получават съответния брой обектни файлове. Следва процес на линкване, при който от отделните единици (файлове) се получава една програма или една библиотека или там каквото линкваш... Компилацията на отделните единици е независима, т.е. може да компилираш един файл, преди изобщо да си написал другите. Все пак обаче се налага да ползваш променливи или функции от един сорс в друг. За целта се повтаря декларацията и се слага extern. Така компилатора разбира, че въпросния обект няма да бъде дефиниран в рамките на текущата единица на компилация, а ще е някъде другаде... Обратно, ако сложиш static, това означава че декларираш или дефинираш локален обект. За променливите статика също променя и storage class-а, но това е страничен ефект.
|
| Нед Дек 27, 2015 11:04 pm |
|
 |
|
eng.komitov
Ранг: Минаващ
Регистриран на: Нед Окт 25, 2015 1:42 pm Мнения: 23
|
 Re: Помощ за курсов проект
Благодаря ти миро за отговора точно за това питах. А ръководството е на мплаб с18.
|
| Пон Дек 28, 2015 10:57 am |
|
 |
|
eng.komitov
Ранг: Минаващ
Регистриран на: Нед Окт 25, 2015 1:42 pm Мнения: 23
|
 Re: Помощ за курсов проект
За много години. След като написах функция за копиране на низ кода се компилира без грешки. Но ми изписва предупреждение, че бита за разрешаване на разширения режим е ON, а в програмата не е и може програмата да не работи. В менюто за конфигуриране махнах отметката за конфигуриране от програмата и нулирах бита (изключих разширения режим), но пак ми изписа същото предупреждение. Опитах да програмирам контролера със създадения HEX файл и ми изписа грешка на 1-ви ред 1-ва колона. Грешката при програмирането следствие от разрешения разширен режим ли е? Как да премахна предупреждението и грешката?
|
| Вто Яну 05, 2016 10:04 am |
|
|