Отговори на тема  [ 10 мнения ] 
Помощ за курсов проект 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Окт 25, 2015 1:42 pm
Мнения: 23
Мнение Помощ за курсов проект
Весела Коледа на всички. Правя курсов проект на тема "три-позиционен терморегулатор".
Не съм сигурен, че правилно съм дефинирал глобалните променливи и декларирал в подпрограмите.
Ето как съм дефинирал глобалните променливи и константи:
Код:
static rom const char Pzd_3[]={"  developed by  "}; //14
static rom const char Pzd_4[]={"engineer Komitov"}; // 15
static rom const char warning[]={"thermometer miss"}; //16
// used global variables
static char first_row[17]; //variable content message print on first row on LCD
static char second_row[17]; //variable content message print on second row on LCD
static char bc=0; // variable contents cursor's position to blink
static char sc=0; // variable contents cursor's position to stop blink
static int num=0; // number of positions after current blink/stop blink
static float Set_Point; // desire temperature value

Следва деклариране на използваните подпрограми и дефиниране на функцията main.c
Код:
// used subroutines
char *strcpy (auto char *s1, auto const char *s2);
void send_ASCII_to_2ndrow(float number);
void LCD_init(void);
int clock_32TCYx(int times);
void clock_isr(void);
void timer_isr(void);
void timer_us(unsigned int time);
int init_ds18b20(void);
void send_command(unsigned char command);
void print_screen (void);
void menu_isr(void);
void menu(void);


void main(void)
{

А това е част от кода на функцията menu, в която се настройват глобалните променливи (параметрите на регулатора) :
Код:
#include<p18f67j60.h>
#include<string.h>
void send_ASCII_to_2ndrow(float number);
void send_ASCII_to_2ndrow(float number);
void menu (void)
{
extern int in_menu;
extern char first_row[17];
extern char second_row[17];
extern  const rom char Scr_1;
extern  const rom char Scr_2;
extern  const rom char Scr_3;
extern const rom char Scr_4;
extern  const rom char Scr_5;
extern  const rom char Scr_6;
extern const rom char Scr_7;
extern const rom char Scr_8;
extern const rom char Scr_9;
extern const rom char Scr_10;
extern const rom char Scr_11;
extern char bc;

Правилно ли съм дефинирал и декларирал глобалните променливи?


Нед Дек 27, 2015 11:10 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Окт 25, 2015 1:42 pm
Мнения: 23
Мнение Re: Помощ за курсов проект
А при опит за компилиране с bild all ми изписва следните предупреждения и грешки:
Код:
I:\temperature controler0\main.c:70:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:70:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:71:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:71:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:73:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:73:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:74:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:74:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:78:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:78:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:84:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:84:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:108:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:108:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:119:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:119:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:129:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:129:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:162:Warning [2054] suspicious pointer conversion
I:\temperature controler0\main.c:162:Warning [2054] suspicious pointer conversion
Executing: "C:\Program Files\Microchip\mplabc18\v3.47\bin\mcc18.exe" -p=18F67J60 "menu.c" -fo="menu.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
I:\temperature controler0\menu.c:39:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:39:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:39:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:39:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:46:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:46:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:46:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:46:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:46:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:46:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:49:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:49:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:52:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:52:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:55:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:55:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:58:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:58:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:66:Warning [2058] call of function without prototype
I:\temperature controler0\menu.c:120:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:120:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:120:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:120:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:121:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:121:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:121:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:121:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:122:Error [1105] symbol 'fist_row' has not been defined
I:\temperature controler0\menu.c:122:Error [1101] lvalue required
I:\temperature controler0\menu.c:122:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:122:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:122:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:122:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:123:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:123:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:123:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:123:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:124:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:124:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:124:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:124:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:133:Error [1205] unknown member 'RA1' in '__tag_67'
I:\temperature controler0\menu.c:133:Error [1131] type mismatch in assignment
I:\temperature controler0\menu.c:133:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:133:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:159:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:159:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:160:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:160:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:161:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:161:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:168:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:168:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:168:Error [1105] symbol 'fist_row' has not been defined
I:\temperature controler0\menu.c:168:Error [1129] [] operator requires a pointer and an integer as operands
I:\temperature controler0\menu.c:168:Error [1101] lvalue required
I:\temperature controler0\menu.c:168:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:168:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:169:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:169:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:169:Error [1105] symbol 'fist_row' has not been defined
I:\temperature controler0\menu.c:169:Error [1129] [] operator requires a pointer and an integer as operands
I:\temperature controler0\menu.c:169:Error [1101] lvalue required
I:\temperature controler0\menu.c:169:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:169:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:170:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:170:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:170:Error [1105] symbol 'fist_row' has not been defined
I:\temperature controler0\menu.c:170:Error [1129] [] operator requires a pointer and an integer as operands
I:\temperature controler0\menu.c:170:Error [1101] lvalue required
I:\temperature controler0\menu.c:170:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:170:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:171:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:171:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:171:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:171:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:217:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:217:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:218:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:218:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:219:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:219:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:226:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:226:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:226:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:226:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:227:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:227:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:227:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:227:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:228:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:228:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:228:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:228:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:229:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:229:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:229:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:229:Warning [2066] type qualifier mismatch in assignment
I:\temperature controler0\menu.c:236:Warning [2054] suspicious pointer conversion
I:\temperature controler0\menu.c:236:Warning [2066] type qualifier mismatch in assignment

Може би трябва да дефинирам собствена функция копираща един низ в друг, но как?


Нед Дек 27, 2015 3:22 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: Помощ за курсов проект
Код:
static rom const char Pzd_3[]={"  developed by  "}; //14


Това декларира Pzd_3 като масив от char тип, а пък в инициализацията имаш " developed by " което е cons char*.
Демек масивът ти е от символи, а го инициализираш с указател към символи.

Не е ясно какво искаш да постигнеш, но възможни варианти са:

Код:
static rom const char Pzd_3[]= "  developed by  ";


Код:
static rom const char* Pzd_3[]={"  developed by  "};


Код:
static rom const char Pzd_3[]={' ', ' ', 'd', 'e', 'v', 'e', 'l', 'o', 'p', 'e', 'd', ' ', 'b', 'y', '  '};


...

с функциите също не е ясно какво се опитваш...


Нед Дек 27, 2015 3:44 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Окт 25, 2015 1:42 pm
Мнения: 23
Мнение Re: Помощ за курсов проект
В реда, който цитираш дефинирам масив от тип char , който е константа съхранявана в програмната памет(иначе е безсмислена инициализацията). Масива го инициализирам с низа
" developed by ", който се копира от библиотечната функция strcpy в глобалната променлива first_row, за да се изведе с функцията в прикачения файл на горния ред на 2х16 буквено-цифров LCD.


Прикачени файлове:
print_screen.c [1.1 KiB]
284 пъти
Нед Дек 27, 2015 6:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: Помощ за курсов проект
Виж.... в Ц/Ц++ когато имаш нещо в кавички, това е от тип const char* иначе казано указател към константен символ или символи...
Когато този (или някой друг тип) го сложиш във фигурни скобки се получава структура или масив от дадения тип.
Демек {'....'} е структура или масив от указатели. Ти обаче го ползваш за инициализация на масив от символи. Съответно получаваш предупреждение, че указател се преобразува до нещо друго.

Не знам как по друг начин да ти го обясня....


Нед Дек 27, 2015 8:47 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Окт 25, 2015 1:42 pm
Мнения: 23
Мнение Re: Помощ за курсов проект
Разбрах те просто по начало беше масив и съм забравил да изтрия фигурните скоби, както и квадратните.


Нед Дек 27, 2015 10:16 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Окт 25, 2015 1:42 pm
Мнения: 23
Мнение Re: Помощ за курсов проект
За глобалните променливи се използва ключовата дума static. Прочетох го в ръководството, първия път не съм търсил внимателно.


Нед Дек 27, 2015 10:22 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: Помощ за курсов проект
eng.komitov написа:
За глобалните променливи се използва ключовата дума static. Прочетох го в ръководството, първия път не съм търсил внимателно.


Хм.... Не ги знам тия ръководства и на какви глупости ви учат. Но в С имаш компилация на един или повече сорс файла, при което се получават съответния брой обектни файлове. Следва процес на линкване, при който от отделните единици (файлове) се получава една програма или една библиотека или там каквото линкваш...
Компилацията на отделните единици е независима, т.е. може да компилираш един файл, преди изобщо да си написал другите. Все пак обаче се налага да ползваш променливи или функции от един сорс в друг. За целта се повтаря декларацията и се слага extern. Така компилатора разбира, че въпросния обект няма да бъде дефиниран в рамките на текущата единица на компилация, а ще е някъде другаде...
Обратно, ако сложиш static, това означава че декларираш или дефинираш локален обект. За променливите статика също променя и storage class-а, но това е страничен ефект.


Нед Дек 27, 2015 11:04 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Окт 25, 2015 1:42 pm
Мнения: 23
Мнение Re: Помощ за курсов проект
Благодаря ти миро за отговора точно за това питах. А ръководството е на мплаб с18.


Пон Дек 28, 2015 10:57 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Окт 25, 2015 1:42 pm
Мнения: 23
Мнение Re: Помощ за курсов проект
За много години. След като написах функция за копиране на низ кода се компилира без грешки. Но ми изписва предупреждение, че бита за разрешаване на разширения режим е ON, а в програмата не е и може програмата да не работи. В менюто за конфигуриране махнах отметката за конфигуриране от програмата и нулирах бита (изключих разширения режим), но пак ми изписа същото предупреждение. Опитах да програмирам контролера със създадения HEX файл и ми изписа грешка на 1-ви ред 1-ва колона. Грешката при програмирането следствие от разрешения разширен режим ли е? Как да премахна предупреждението и грешката?


Вто Яну 05, 2016 10:04 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 10 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 0 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни