Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Помош за синтаксис или още нещо...
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=14132
Страница 1 от 7

Автор:  dimitrov2000 [ Чет Окт 29, 2015 7:19 pm ]
Заглавие:  Помош за синтаксис или още нещо...

Този път съвсем кратък въпрос:

- MPLAB и компилатор CX8;

Този скрипт си върви на симулатора, само че при отворен бутон, вместо затворен, но върти до ELSE и почва отначало.
При затваряне на контактите, програмата спира и изходите D се деактивират.
При отваряне - продължава да си работи, но си върти само първата част, сякаш за "else" го боли оная работа...

Предварителни благодарности за конкретна помощ.

Прикачени файлове:
Proteus.jpg
Proteus.jpg [ 393.62 KiB | Прегледано 4148 пъти ]
Script.txt [866 Байта]
308 пъти

Автор:  ike [ Чет Окт 29, 2015 7:27 pm ]
Заглавие:  Re: Помош за синтаксис или още нещо...

За почни от това, че схемата ти е грешна.
За да разбереш къде ти е грешката в схемата: Сложи само 1 контролер, 1 светодиод, 1 кондензатор и 2 резистора, без нищо друго.
Като се научиш да мигаш светодиода, пак се обади да питаш.

Автор:  dimitrov2000 [ Чет Окт 29, 2015 8:11 pm ]
Заглавие:  Re: Помош за синтаксис или още нещо...

Светодиода мига без проблем, както и се включва и изключва. Кажи друго, ако имаш или ще си играем на гатанки?

Автор:  stefan63 [ Чет Окт 29, 2015 8:25 pm ]
Заглавие:  Re: Помош за синтаксис или още нещо...

2 резистора - един заMCLR, друг подпиращ за бутона.

Автор:  stefan63 [ Чет Окт 29, 2015 8:32 pm ]
Заглавие:  Re: Помош за синтаксис или още нещо...

LCD_clear () е излишна .
Да повторя - delay e почти излишна функция. Използва се при инициализиране на LCD , при подаване на звуков сигнал и подобни ситуации. Специално в случая е излишна (в главния цикъл) и води до гршени навици . Проучи т.нар. systick таймер.

Автор:  dimitrov2000 [ Чет Окт 29, 2015 8:47 pm ]
Заглавие:  Re: Помош за синтаксис или още нещо...

Благодаря. Това с двата резистора вече го направих. Сега махам излишните редове и пробвам, дали ше прескочи.

Автор:  ike [ Чет Окт 29, 2015 8:49 pm ]
Заглавие:  Re: Помош за синтаксис или още нещо...

dimitrov2000 ти въобще разбра ли защо "прескача", когато е само с 1 резистор?

Автор:  dimitrov2000 [ Чет Окт 29, 2015 8:57 pm ]
Заглавие:  Re: Помош за синтаксис или още нещо...

stefan63 написа:
LCD_clear () е излишна .
Да повторя - delay e почти излишна функция. Използва се при инициализиране на LCD , при подаване на звуков сигнал и подобни ситуации. Специално в случая е излишна (в главния цикъл) и води до гршени навици . Проучи т.нар. systick таймер.


Опростих скрипта по съвета ти, сега текста не прeмигва, но продължава да изписва само първия ред. Не ще да продължи нататък.


Lcd_Init();

while(1)

{ if(RB0 == 0) //If Switch is pressed

{ Lcd_Set_Cursor(2,1);
Lcd_Write_String("SWITCH ON");
__delay_ms(2000);
}

else

{Lcd_Set_Cursor(2,1);
Lcd_Write_String("OFF");
__delay_ms(2000);

}

}

return 0;
}

Автор:  ike [ Чет Окт 29, 2015 10:41 pm ]
Заглавие:  Re: Помош за синтаксис или още нещо...

Продължавай да се мъчиш и някой ден, ще се сетиш къде е заровено кучето.

Автор:  stefan63 [ Чет Окт 29, 2015 11:24 pm ]
Заглавие:  Re: Помош за синтаксис или още нещо...

if (RB0 == 0)
сигурен ли си, че така се проверява състоянието на входен порт?
Потърси пример и описание из бумагите на компилатора

Автор:  s7ama7 [ Пет Окт 30, 2015 12:12 am ]
Заглавие:  Re: Помош за синтаксис или още нещо...

Пусни цялата програма че ми стана интересно

Автор:  dimitrov2000 [ Пет Окт 30, 2015 12:33 am ]
Заглавие:  Re: Помош за синтаксис или още нещо...

stefan63 написа:
if (RB0 == 0)
сигурен ли си, че така се проверява състоянието на входен порт?
Потърси пример и описание из бумагите на компилатора


Това го взех от твоя пример, но е вярно. Навсякъде е така. Т.е. If /нещо/ then /друго нещо/ си работи.
Според мен проблема идва от else. Компилатора го приема, като синтаксис, но не прави нищо след това.
Повтаря си лупа на първата част и държи изписан текста на екрана. Ако има заложено закъснение при стартиране
си го изпълнява и си се стартира наново.
Като промениш състоянието на ключа, екрана замръзва там където е. Ако е на надпис - си остава надписа,
ако е на празно, си остава празно. Т.е. програмата спира, изходните портове на чипа /на симулатора/ стават неактивни /сиви/.
Ако върнеш ключа обратно си тръгва пак.

Автор:  dimitrov2000 [ Пет Окт 30, 2015 12:39 am ]
Заглавие:  Re: Помош за синтаксис или още нещо...

s7ama7 написа:
Пусни цялата програма че ми стана интересно


И на мен ми е интересно брат, но още няма нищо за пускане. На етап експерименти, стъпка по стъпка съм. Идеята ми е да използвам чипа за многофункционална графична индикация на колата. Отворена врата, капак, чек, термометър, и т.н. Засега все аналогови работи, но все отнякъде трябва да се почне.
Миналата седмица се захванах с тая работа, че отваря доста възможности, както за хоби, така и по предназначение. Станах пишман, но съм инат и
ще го изкопая докрай.

Автор:  stefan63 [ Пет Окт 30, 2015 8:07 am ]
Заглавие:  Re: Помош за синтаксис или още нещо...

Цитат:
Станах пишман

недей така :D , още е рано.
Пусни новата схема да я видим.
Тука има доста хора ,дето работят на симулатор, и може да дадат идея.
Предполагам,че имаш проблеми ойоло ресет пина и конфигурационните битове.

Автор:  dimitrov2000 [ Пет Окт 30, 2015 12:38 pm ]
Заглавие:  Re: Помош за синтаксис или още нещо...

Отначало не тръгваше въобще и проблема се оказа в недоглеждане именно около ресет пина. По закона на Мърфи, след като изгубих около 6 часа в напразно блъскане по кода, забелязах че в конфигурацията на процесора ресет пина е активиран, а на схемата не го бях вързал въобще, та потегли някак си...Затова бях писал постнал в предишния пост двата кода за сравнение. Оказа се недоглеждане.

Тук ситуацията изглежда различна. Парадокса /за мен разбира се/ е, че другата тестова програма, в която чипа си изписва разни текстове, си работи без проблем. Когато смениш кода на програмата се появява настоящия проблем. Не иска да реагира на промяна на входа.
Конфигурационните битове засега са ми мъгла. Качих настройката, която MPLAB ми генерира.

Страница 1 от 7 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/