Страница 1 из 2

Мистика и простейшая программа на С для PICа.

Добавлено: Вт апр 30, 2013 13:21:52
efimius
Доброго времени суток.
Пишу программу для аквариумного контроллера.Первый уровень меню-выбор из семи функций с выводом на LCD. Функции перебираются кнопкой(сигнал InA0),а нужная функция выбирается другой кнопкой(InA3). Вот и вся программа.Запускаю,начинаю нажимать InA0- всё работает ,функции перебираются,но третья по счёту функция "SetSUNSET" - на ЖКИ не отображается.Всё остальное-нормально работает. Если гору if-ов сделать комментарием,то третья функция отображается нормально.Отладку веду на EasyPIC-5. Вот код в mikroC:
Спойлер

Код: Выделить всё



// LCD module connections from LCD Library
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
//------------------------------------------------------------------------------
unsigned int pMenu;
bit old_SA0,old_SA3;
bit InA0,InA1,InA2,InA3;
//Var.definitions for some text outputing to LCD--------------------------------
unsigned char temper[5];//Variable gets string value,converted from numTemp.
float numTemp=36.5; //Stores float of temperature.

//MY 7 functions
//------------------------------------------------------------------------------

SetHM()
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set H / M");
while(1){

}
}

//------------------------------------------------------------
SetSR()
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set SR H/M");
while(1){


}
}
//-----------------------------------------------------------------------------
SetSS()
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set SS H/M");
while(1){

}
}
//-----------------------------------------------------------------------------
SetCO2start()
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set CO2strt H/M");
while(1){

}
}
//-----------------------------------------------------------------------------
SetCO2end()
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set CO2end H/M");
while(1){

}
}
//-----------------------------------------------------------------------------
SetO2start()
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set O2strt H/M");
while(1){

}
}
//-----------------------------------------------------------------------------
SetO2end()
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set O2end H/M");
while(1){

}
}
//============== ===================
//==========Начало программы===== ====

void main(){


ADCON1 |= 0x0F; // Configure AN pins as digital
CMCON |= 7; // Disable comparators
TRISA |=0x0F;
//------------------------------------------------------------------------------

Lcd_Init(); // Initialize LCD - from LCD library


Lcd_Cmd(_LCD_CLEAR); // Clear display - from LCD library
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_TURN_ON); // Cursor off - from LCD library

forCase: pMenu=0;
do {

InA0=PORTA.RA0;
InA3=PORTA.RA3;

if(InA0 == 0 && old_SA0==1){//Если нажата кнопка

switch(pMenu)
{
//Перебирать пункты меню
case 0: Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetCLOCK");break;
case 1: Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetSUNRISE");brea k;
case 2: Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetSUNSET");break ;
case 3: Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetCO2_STRT");bre ak;
case 4: Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetCO2_END");brea k;
case 5: Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetO2_STRT");brea k;
case 6: Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetO2_END");break ;
case 7: goto forCase;
}

//pMenu содержит номер выбранной функции
pMenu++; }//продолжить перебор функций
old_SA0=InA0;

//============== ========== ==========
//при нажатии InA3 войти в подпрограмму соответствующую (pMenu)выбранной функции

if(inA3==0 && old_SA3==1 && pMenu==1)SetHM();
if(inA3==0 && old_SA3==1 && pMenu==2)SetSR();
if(inA3==0 && old_SA3==1 && pMenu==3)SetSS();
if(inA3==0 && old_SA3==1 && pMenu==4)SetCO2start();
if(inA3==0 && old_SA3==1 && pMenu==5)SetCO2end();
if(inA3==0 && old_SA3==1 && pMenu==6)SetO2start();
if(inA3==0 && old_SA3==1 && pMenu==7)SetO2end();
old_SA3=InA3 ;
}
while(1);//бесконечный возврат на do
}
Теперь мистика. Если не нажимать кнопку InA3,а только перебирать функции кнопкой InA0,то,как я и говорил,третья функция не отображается.остальное всё в порядке. Но(!!!),если я расширяю в этой третьей фукции "Set SS H/M" на "Set SS H/Mллллллллллллллллл" ,то вижу часть символов "л" в первой строке ЖКИ.Получается,что без нажатия InA3 всё равно как-то выбирается и выполняется(при этом не сначала строки!) третий if??????
Может,кто поможет инвалиду умственного труда. Заранее спасибо от новичка.

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Вт апр 30, 2013 13:32:19
vAv
Тут что-то не понятно:

Код: Выделить всё

if(inA3==0 && old_SA3==1 && pMenu==1)SetHM();
if(inA3==0 && old_SA3==1 && pMenu==2)SetSR();
if(inA3==0 && old_SA3==1 && pMenu==3)SetSS();
if(inA3==0 && old_SA3==1 && pMenu==4)SetCO2start();
if(inA3==0 && old_SA3==1 && pMenu==5)SetCO2end();
if(inA3==0 && old_SA3==1 && pMenu==6)SetO2start();
if(inA3==0 && old_SA3==1 && pMenu==7)SetO2end();
В этих строчках pMenu на 1 больше чем в кейсах. Может тут собака порылась?

ЗЫ не на чем проверить

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Вт апр 30, 2013 14:00:56
phenomen
Начну с общих рекомендаций:

Во первых:

Код: Выделить всё

if(inA3==0 && old_SA3==1 && pMenu==1)SetHM();
if(inA3==0 && old_SA3==1 && pMenu==2)SetSR();
if(inA3==0 && old_SA3==1 && pMenu==3)SetSS();
if(inA3==0 && old_SA3==1 && pMenu==4)SetCO2start();
if(inA3==0 && old_SA3==1 && pMenu==5)SetCO2end();
if(inA3==0 && old_SA3==1 && pMenu==6)SetO2start();
if(inA3==0 && old_SA3==1 && pMenu==7)SetO2end();
можно заменить на

Код: Выделить всё

if(inA3==0 && old_SA3==1)
switch(pMenu)
{
case 0:/*...*/break;
case 1:/*...*/break;
...
case x:/*...*/break;
}
Избегайте goto! Удалите forCase: pMenu=0;, а вместо goto forCase; напишите pMenu=0; continue;. Хотя бы так.

Интересное написание брейков:

Код: Выделить всё

break;
brea k;
break ;
bre ak;
brea k;
brea k;
break ;

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Вт апр 30, 2013 14:17:08
efimius
phenomen писал(а):Начну с общих рекомендаций:

Во первых:

Код: Выделить всё

if(inA3==0 && old_SA3==1 && pMenu==1)SetHM();
if(inA3==0 && old_SA3==1 && pMenu==2)SetSR();
if(inA3==0 && old_SA3==1 && pMenu==3)SetSS();
if(inA3==0 && old_SA3==1 && pMenu==4)SetCO2start();
if(inA3==0 && old_SA3==1 && pMenu==5)SetCO2end();
if(inA3==0 && old_SA3==1 && pMenu==6)SetO2start();
if(inA3==0 && old_SA3==1 && pMenu==7)SetO2end();
можно заменить на

Код: Выделить всё

if(inA3==0 && old_SA3==1)
switch(pMenu)
{
case 0:/*...*/break;
case 1:/*...*/break;
...
case x:/*...*/break;
}
Избегайте goto! Удалите forCase: pMenu=0;, а вместо goto forCase; напишите pMenu=0; continue;. Хотя бы так.

Интересное написание брейков:

Код: Выделить всё

break;
brea k;
break ;
bre ak;
brea k;
brea k;
break ;
Первоначально были case-ы,решил попробовать решить проблему if-ами.
За break-и прошу прощения запостил нескомпилированный вариант.
От goto попробую избавиться. :?
Спасибо за посильную помощь.

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Вт апр 30, 2013 14:33:13
efimius
vAv писал(а):Тут что-то не понятно:

Код: Выделить всё

if(inA3==0 && old_SA3==1 && pMenu==1)SetHM();
if(inA3==0 && old_SA3==1 && pMenu==2)SetSR();
if(inA3==0 && old_SA3==1 && pMenu==3)SetSS();
if(inA3==0 && old_SA3==1 && pMenu==4)SetCO2start();
if(inA3==0 && old_SA3==1 && pMenu==5)SetCO2end();
if(inA3==0 && old_SA3==1 && pMenu==6)SetO2start();
if(inA3==0 && old_SA3==1 && pMenu==7)SetO2end();
В этих строчках pMenu на 1 больше чем в кейсах. Может тут собака порылась?

ЗЫ не на чем проверить
При нажатии InA0 в первом проходе в Switch не заходим,так как old_SA0 ещё равно 1,но pMenu инкрементируется.С учётом этого ,первый if соотносится с pMenu=1.

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Ср май 01, 2013 14:20:57
vAv
Не могу скомпилировать проект...

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Ср май 01, 2013 21:29:42
phanis
Попробуйте создать массив строк и указателей на функции.Тогда можно будет обойтись без case

Код: Выделить всё

char massiv[3][8]={"Ivanov", "Petrov", "Sidorov"};
void (*fArray[3])(void)= {f1, f2, f3};

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Чт май 02, 2013 00:18:21
efimius
phanis писал(а):Попробуйте создать массив строк и указателей на функции.Тогда можно будет обойтись без case

Код: Выделить всё

char massiv[3][8]={"Ivanov", "Petrov", "Sidorov"};
void (*fArray[3])(void)= {f1, f2, f3};
Попробую,но вопрос,почему не выполняется код?Из этого могут получиться грабли.

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Чт май 02, 2013 10:12:30
phanis
Может так что то изменится без go to
Спойлер

Код: Выделить всё

// LCD module connections from LCD Library
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
//------------------------------------------------------------------------------

//Var.definitions for some text outputing to LCD--------------------------------
unsigned char temper[5];//Variable gets string value,converted from numTemp.
float numTemp=36.5; //Stores float of temperature.

//MY 7 functions
//------------------------------------------------------------------------------
/* Прототипы функций */
void SetHM(void);
void SetSR(void);
void SetSS(void);
void SetCO2start(void);
void SetCO2end(void);
void SetO2start(void);
void SetO2end(void);

void SetHM(void)
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set H / M");
while(1){

}
}

//------------------------------------------------------------
void SetSR(void)
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set SR H/M");
while(1){

}
}
//-----------------------------------------------------------------------------
void SetSS(void)
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set SS H/M");
while(1){

}
}
//-----------------------------------------------------------------------------
void SetCO2start(void)
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set CO2strt H/M");
while(1){

}
}
//-----------------------------------------------------------------------------
void SetCO2end(void)
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set CO2end H/M");
while(1){

}
}
//-----------------------------------------------------------------------------
void SetO2start(void)
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set O2strt H/M");
while(1){

}
}
//-----------------------------------------------------------------------------
void SetO2end(void)
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set O2end H/M");
while(1){

}
}
//============== ===================
//==========Начало программы===== ====

void main(void){
unsigned char pMenu;
bit old_SA0,old_SA3;
bit InA0,InA3;

ADCON1 |= 0x0F; // Configure AN pins as digital
CMCON |= 7; // Disable comparators
TRISA |=0x0F;
//------------------------------------------------------------------------------

Lcd_Init(); // Initialize LCD - from LCD library

Lcd_Cmd(_LCD_CLEAR); // Clear display - from LCD library
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_TURN_ON); // Cursor off - from LCD library

while(1) {

InA0=PORTA.RA0;
InA3=PORTA.RA3;

if(InA0 == 0 && old_SA0==1){//Если нажата кнопка

switch(pMenu)
{
//Перебирать пункты меню

case 1:  Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetSUNRISE") ;break;
case 2:  Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetSUNSET")  ;break;
case 3:  Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetCO2_STRT");break;
case 4:  Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetCO2_END") ;break;
case 5:  Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetO2_STRT") ;break;
case 6:  Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetO2_END")  ;break ;
default: Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetCLOCK")   ;pMenu=0;
};

//pMenu содержит номер выбранной функции
pMenu++; }//продолжить перебор функций
old_SA0=InA0;

//============== ========== ==========
//при нажатии InA3 войти в подпрограмму соответствующую (pMenu)выбранной функции

if(inA3==0 && old_SA3==1 && pMenu==1)SetHM();
if(inA3==0 && old_SA3==1 && pMenu==2)SetSR();
if(inA3==0 && old_SA3==1 && pMenu==3)SetSS();
if(inA3==0 && old_SA3==1 && pMenu==4)SetCO2start();
if(inA3==0 && old_SA3==1 && pMenu==5)SetCO2end();
if(inA3==0 && old_SA3==1 && pMenu==6)SetO2start();
if(inA3==0 && old_SA3==1 && pMenu==7)SetO2end();
old_SA3=InA3 ;
}
}

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Чт май 02, 2013 15:19:51
phenomen
Можно и вообще без кейсов обойтись: многоуровневое меню с обработчиком.
Думаю доделать его не составит особого труда.

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Чт май 02, 2013 18:09:09
efimius
phenomen писал(а):Можно и вообще без кейсов обойтись: многоуровневое меню с обработчиком.
Думаю доделать его не составит особого труда.

Интересный подход ,по сути то,что предложил Phanis .Я никогда раньше не делал менюшки.Попробую "привинтить" к моему проекту.
Спасибо.

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Чт май 02, 2013 18:18:43
efimius
phanis писал(а):Может так что то изменится без go to
Спойлер

Код: Выделить всё

// LCD module connections from LCD Library
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
//------------------------------------------------------------------------------

//Var.definitions for some text outputing to LCD--------------------------------
unsigned char temper[5];//Variable gets string value,converted from numTemp.
float numTemp=36.5; //Stores float of temperature.

//MY 7 functions
//------------------------------------------------------------------------------
/* Прототипы функций */
void SetHM(void);
void SetSR(void);
void SetSS(void);
void SetCO2start(void);
void SetCO2end(void);
void SetO2start(void);
void SetO2end(void);

void SetHM(void)
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set H / M");
while(1){

}
}

//------------------------------------------------------------
void SetSR(void)
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set SR H/M");
while(1){

}
}
//-----------------------------------------------------------------------------
void SetSS(void)
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set SS H/M");
while(1){

}
}
//-----------------------------------------------------------------------------
void SetCO2start(void)
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set CO2strt H/M");
while(1){

}
}
//-----------------------------------------------------------------------------
void SetCO2end(void)
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set CO2end H/M");
while(1){

}
}
//-----------------------------------------------------------------------------
void SetO2start(void)
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set O2strt H/M");
while(1){

}
}
//-----------------------------------------------------------------------------
void SetO2end(void)
{
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set O2end H/M");
while(1){

}
}
//============== ===================
//==========Начало программы===== ====

void main(void){
unsigned char pMenu;
bit old_SA0,old_SA3;
bit InA0,InA3;

ADCON1 |= 0x0F; // Configure AN pins as digital
CMCON |= 7; // Disable comparators
TRISA |=0x0F;
//------------------------------------------------------------------------------

Lcd_Init(); // Initialize LCD - from LCD library

Lcd_Cmd(_LCD_CLEAR); // Clear display - from LCD library
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_TURN_ON); // Cursor off - from LCD library

while(1) {

InA0=PORTA.RA0;
InA3=PORTA.RA3;

if(InA0 == 0 && old_SA0==1){//Если нажата кнопка

switch(pMenu)
{
//Перебирать пункты меню

case 1:  Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetSUNRISE") ;break;
case 2:  Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetSUNSET")  ;break;
case 3:  Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetCO2_STRT");break;
case 4:  Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetCO2_END") ;break;
case 5:  Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetO2_STRT") ;break;
case 6:  Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetO2_END")  ;break ;
default: Lcd_Cmd(_LCD_CLEAR);Lcd_Out(2,1,"SetCLOCK")   ;pMenu=0;
};

//pMenu содержит номер выбранной функции
pMenu++; }//продолжить перебор функций
old_SA0=InA0;

//============== ========== ==========
//при нажатии InA3 войти в подпрограмму соответствующую (pMenu)выбранной функции

if(inA3==0 && old_SA3==1 && pMenu==1)SetHM();
if(inA3==0 && old_SA3==1 && pMenu==2)SetSR();
if(inA3==0 && old_SA3==1 && pMenu==3)SetSS();
if(inA3==0 && old_SA3==1 && pMenu==4)SetCO2start();
if(inA3==0 && old_SA3==1 && pMenu==5)SetCO2end();
if(inA3==0 && old_SA3==1 && pMenu==6)SetO2start();
if(inA3==0 && old_SA3==1 && pMenu==7)SetO2end();
old_SA3=InA3 ;
}
}

Попробовал ,спасибо,но не помогло :(

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Чт май 02, 2013 18:32:24
phanis
А если попробовать так, выводит?
Спойлер

Код: Выделить всё

void main(void){
unsigned char pMenu;
bit old_SA0,old_SA3;
bit InA0,InA3;

ADCON1 |= 0x0F; // Configure AN pins as digital
CMCON |= 7; // Disable comparators
TRISA |=0x0F;
//------------------------------------------------------------------------------

Lcd_Init(); // Initialize LCD - from LCD library

Lcd_Cmd(_LCD_CLEAR); // Clear display - from LCD library
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_TURN_ON); // Cursor off - from LCD library

SetSS();
//или даже просто так
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set SS H/M");
while(1) {
}
}

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Чт май 02, 2013 18:43:19
efimius
phanis писал(а):А если попробовать так, выводит?
Спойлер

Код: Выделить всё

void main(void){
unsigned char pMenu;
bit old_SA0,old_SA3;
bit InA0,InA3;

ADCON1 |= 0x0F; // Configure AN pins as digital
CMCON |= 7; // Disable comparators
TRISA |=0x0F;
//------------------------------------------------------------------------------

Lcd_Init(); // Initialize LCD - from LCD library

Lcd_Cmd(_LCD_CLEAR); // Clear display - from LCD library
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_TURN_ON); // Cursor off - from LCD library

SetSS();
//или даже просто так
Lcd_Cmd(_LCD_CLEAR);Lcd_Out(1,1,"Set SS H/M");
while(1) {
}
}

В моей программе: исключение любого if приводит к нормальной работе.

А вот с вашей-я поторопился.После избавления от goto программа после первого нажатия выводит "SetO2_END",после второго "SetCLOCK",после 3-его "SetSunrise",потом два нажатия ничего и т.д.???

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Чт май 02, 2013 19:05:59
phanis
SetCO2_STRT случайно не в длине строки?

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Чт май 02, 2013 19:08:24
efimius
phanis писал(а):SetCO2_STRT случайно не в длине строки?

не совсем понял вопрос,но на всякий случай-длина строки 16 символов.

Что бесит,убираешь любой if и всё пашет.Не думаю,что ошибка компайлера.

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Чт май 02, 2013 19:16:22
phanis
Памяти хватает? Переполнение стека.

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Чт май 02, 2013 19:21:43
efimius
phanis писал(а):Памяти хватает? Переполнение стека.
16F747 компайлер докладывает,что 54% RAM свободно.

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Чт май 02, 2013 19:24:06
phanis
Ни одного варнинга компилятор не показывает? Оптимизация включена?

Re: Мистика и простейшая программа на С для PICа.

Добавлено: Чт май 02, 2013 19:27:14
efimius
phanis писал(а):Ни одного варнинга компилятор не показывает? Оптимизация включена?
варнингов нет.