| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Моля за малко помощ http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=12995 |
Страница 1 от 4 |
| Автор: | vladivvs [ Пет Юни 13, 2014 9:21 pm ] |
| Заглавие: | Моля за малко помощ |
Моля за помощ към хора,които могат да помогнат защото сега започвам от 0 и искам да се понауча за някои елементарни програмки по програмиране на пик по C++ като ме интересува в момента,искам да светвам примерно светодиод с натискане на бутонче знам че е елементарно но аз не мога да се справя.Ето я и тук моята програмка но явно някъде греша.Ако ми помогнете ще бъда много доволен и ако се повтаря темата ми модераторите нека да я изтрият благодаря на всички отзовали се. поздрави vladivvs #include <12f629.h> #FUSES INTRC,NOWDT,NOPUT,MCLR,NOPROTECT,NOCPD,NOBROWNOUT #use delay(internal=4MHz) #bit r1=0x05.0 //LED #bit b1=0x05.3 //Button #byte CMCON = 0x19 void main() { CMCON = 0x07; SET_TRIS_A(0x04); do { r1=0; delay_ms(50); }while(b1==0); if(b1==1); { r1=1; delay_ms(5000); } do { r1=0; delay_ms(50); }While(b1==0); } |
|
| Автор: | Cekins [ Пет Юни 13, 2014 10:05 pm ] |
| Заглавие: | Re: Моля за малко помощ |
Ами бутона ти е изход а светодиода вход - трис трябва да ти изглежда нещо такова побитово : 0bхххх1хх0. Регистъра се казва TRISIO. Регистъра CMCON трябва да е 0x07 за да се изключи компаратора. Иии за друго сега не се сещам... едит : между другото - за да ти е лесно да запомниш кое вход и кое изход : 1nput и 0utput |
|
| Автор: | vladivvs [ Пет Юни 13, 2014 10:30 pm ] |
| Заглавие: | Re: Моля за малко помощ |
Аз пробвах и побитово но резултата беше същият.Нищо не светна. |
|
| Автор: | Cekins [ Пет Юни 13, 2014 10:36 pm ] |
| Заглавие: | Re: Моля за малко помощ |
Ами побитово 0х04 е 0b00000100 CMCON=7 също. GPIO.0 е вход на компаратора и при тия контролери по подразбиране си е вход на компаратора. Не можеш го накара да е друго каквото и да правиш докато не изключиш компаратора. |
|
| Автор: | vladivvs [ Пет Юни 13, 2014 10:44 pm ] |
| Заглавие: | Re: Моля за малко помощ |
Добре дотук ми стана още по интересно и как се изключва компаратор ако може да ми обясниш? |
|
| Автор: | michev [ Пет Юни 13, 2014 11:43 pm ] |
| Заглавие: | Re: Моля за малко помощ |
CMCON = 0x07 .. или 0b00000111 |
|
| Автор: | vladivvs [ Съб Юни 14, 2014 5:12 pm ] |
| Заглавие: | Re: Моля за малко помощ |
Тази команда нали се пише в основната програма ?Или ако може някой да напише и да качи за да видя нагледно как се прави. |
|
| Автор: | michev [ Съб Юни 14, 2014 6:39 pm ] | |||||||||
| Заглавие: | Re: Моля за малко помощ | |||||||||
|
||||||||||
| Автор: | vladivvs [ Съб Юни 14, 2014 6:55 pm ] |
| Заглавие: | Re: Моля за малко помощ |
Да Благодаря колега но защо отново не иска коригирал съм програмката в първия пост както е така я компилирам и нищо може би някъде другаде греша.Но къде не знам. |
|
| Автор: | michev [ Съб Юни 14, 2014 7:09 pm ] | |||||||||
| Заглавие: | Re: Моля за малко помощ | |||||||||
Първо - започни да слагаш малко препинателни знаци като пишеш, че голям зор виждам.. Второ - слагай си кода в "code" таг и го подреждай, че и той не се чете.. Сега по въпроса - не работи вероятно поради повече от една причина, но има една основна която се вижда от далеч - програмата ти "приключва". Не трябва да допускаш излизане от main функцията. Като си си правил нов проект, IDE-то ти е бълнало main функцията с един while(1) {}, който си забърсал.. Ако изпуснем неправилния подход който си избрал, то товя код би изглеждал ей така:
|
||||||||||
| Автор: | vladivvs [ Съб Юни 14, 2014 7:35 pm ] |
| Заглавие: | Re: Моля за малко помощ |
Да благодаря за забележките,ще се постарая всичко да е наред.Сега искам да попитам този код трябва ли да работи или има още нещо,което трябва да се допълни?Защото компилирах кода в hex. файл и отново светодиода не иска да светне. |
|
| Автор: | michev [ Съб Юни 14, 2014 9:13 pm ] | ||||||||||||||||||
| Заглавие: | Re: Моля за малко помощ | ||||||||||||||||||
Ами.. трябва четене.. поне на отговорите които са ти дали другите.. като Cekins например.
На пин А номер 3 си сложил бутон, само че, номерацията започва от 0 и съответно номер 3 е всъщност 4-ти извод. Във функцията указваща кой извод какво е (вход или изход), си задал 0x04, което указва ПИН_А2 да е вход.. Предполагам сега виждаш къде е едната от грешките? Защо не почнеш с нещо още по - просто? Например със светване на светодиода без да си натискаш бутон.
Като го светнеш, ще включим и бутона в цялата тая схема. |
|||||||||||||||||||
| Автор: | vladivvs [ Съб Юни 14, 2014 9:35 pm ] |
| Заглавие: | Re: Моля за малко помощ |
Ами аз накарах светодиод дори и да мига,и затова ми стана още по интересно.Но и плюс това там няма значение компаратор ли е какво е свети си мига си няма проблем.Поразмислих малко и реших да пробвам нещо по сложно,затова се спрях на това светване на диод с бутонче.А това за пиновете не е ли започваме от GP0;GP1;GP2;GP3 и така нататък от там да броим началото или от пиновете си ги броим по ред,както си ги броим? |
|
| Автор: | michev [ Съб Юни 14, 2014 9:55 pm ] |
| Заглавие: | Re: Моля за малко помощ |
Моя грешка че написах "извод".. Мисълта ми бе, че портовете започват от 0 и съответно в твоя случай GP3 = 4-тия по ред от тоя порт. За справка кой извод физически на кой извод на корпуса излиза - гледаш само документацията на чипа. Преди да почнеш да пишеш код за бутона, то ще трябва да го подвържеш правилно към контролера. Бих ти препоръчал да сложиш 1 резистор 10к м/у извод PA3 и Vcc. Бутона съответно м/у PA3 и маса + 1 кондензаторче 100nF. С това свързване на бутона, ще имаш лог. 1 при НЕ натиснат бутон и съответно лог. 0 при натиснат. |
|
| Автор: | vladivvs [ Съб Юни 14, 2014 10:00 pm ] |
| Заглавие: | Re: Моля за малко помощ |
Да да значи всичко е правилно както съм го разбрал така е.Схемата съм я изпълнил точно по този начин само че без кондензатор но не е проблем ще споя един винаги е в логическа 1,когато не е натиснат бутона и съответно 0,когато е натиснат. |
|
| Страница 1 от 4 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|