| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Колко пъти се изпълнява тази подпрограма http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=4973 |
Страница 1 от 1 |
| Автор: | harleybg [ Чет Окт 18, 2007 8:09 pm ] | |||||||||
| Заглавие: | Колко пъти се изпълнява тази подпрограма | |||||||||
Колко пъти се изпълнява info_1a? Трябва да е 305, но нещо май не е точно толкова PIC16F84
|
||||||||||
| Автор: | Predator_MF [ Чет Окт 18, 2007 9:01 pm ] |
| Заглавие: | |
Колкото пъти я викнеш....е, ако питаш колко цикъла, в MPLAB има Stopwatch който може да ти покаже точно колко |
|
| Автор: | harleybg [ Чет Окт 18, 2007 9:27 pm ] |
| Заглавие: | |
Забравих да кажа, че кварца е 10 МХц |
|
| Автор: | harleybg [ Пет Окт 19, 2007 12:20 am ] |
| Заглавие: | |
Закривам темата |
|
| Автор: | Gogo [ Пет Окт 19, 2007 12:22 am ] |
| Заглавие: | |
Ако ще и 100МНz да е кварца, пак никой не може да ти каже колко пъти се изпълнява подпрограмата. Както е написал хищника - колкото пъти я викнеш... |
|
| Автор: | harleybg [ Пет Окт 19, 2007 10:07 pm ] |
| Заглавие: | |
Аз се оправих с програмта, но нека се изясним, защото не се разбрахме. info_1a ........... goto info_1a Toва питах колко пъти ще се изпълни. GOTO |
|
| Автор: | Ки4о [ Пет Окт 19, 2007 10:12 pm ] |
| Заглавие: | |
Когато искаш да правиш такива сметки - правиш си една клетка брояч и след всяко викане на функцията си я увеличаваш с 1 и след това си проверяваш резултата. |
|
| Автор: | harleybg [ Съб Окт 20, 2007 3:20 pm ] |
| Заглавие: | |
Идеята по принцип не е лоша, но има един малък недостатък. PIC16 има 8 битова памет. Ако искаме да изпълним един цикъл повече от 2^8 пъти, какво ще стане с брояча. Ще се преълни и ще почне писането все едно (то си е така де) от 0. И сега като прочета после стойността на клетктата няма да съм 100% сигурен за резултата. Е може да се сложи и една проверка дали стойността на клетката е ставала нула, но малко се усложнява. Иначе идеята да използвам клетка за проверка накрая не е лоша. |
|
| Автор: | million [ Съб Окт 20, 2007 3:29 pm ] |
| Заглавие: | |
Направи си тогава 64 битов брояч |
|
| Автор: | plameniv [ Съб Окт 20, 2007 4:55 pm ] | |||||||||
| Заглавие: | ? | |||||||||
Какво като стане 0 има си команда за изпълнение при резултат 0. infsz или decfsz MOVLW 0xFF MOVWF 0x22 Label_000E MOVLW 0xFF MOVWF 0x25 Label_000D DECFSZ 0x25 , f GOTO Label_000D DECFSZ 0x22 , f GOTO Label_000E ................................... |
||||||||||
| Автор: | Ки4о [ Съб Окт 20, 2007 5:25 pm ] |
| Заглавие: | |
Правиш си брояч от 2 клетки:CntHI:CntLO и си увеличаваш при всеки цикъл CntLO.Проверяваш го на всеки път преди да го увеличиш като се препълни - увеличаваш CntHI с 1 а CntLO го нулираш.Ако и този брояч ти се струва малък -> CntHI1:CntHI:CntLO и се прави по същия начин. |
|
| Автор: | plameniv [ Съб Окт 20, 2007 5:52 pm ] | |||||||||
| Заглавие: | Ммм | |||||||||
Не е ли по лесно при намаляване , проверките са по малко ? |
||||||||||
| Автор: | Ки4о [ Съб Окт 20, 2007 7:30 pm ] |
| Заглавие: | |
Говоря по принцип,но с декрементиране кода може да е по-компактен. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|