Страница 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
Интересный подход ,по сути то,что предложил 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 писал(а):Ни одного варнинга компилятор не показывает? Оптимизация включена?
варнингов нет.