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

Proteus > PIC 12-êè
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=543
Страница 1 от 1

Автор:  elmax [ Пет Апр 01, 2005 8:55 pm ]
Заглавие:  Proteus > PIC 12-êè

Ïðèíöèïåí âúïðîñ. Proteus-à èìà ëè ïðîáëåì ñúñ ñèìóëàöèÿòà íà 12-êè? Èìàì íÿêîëêî ïðîãðàìè, êîèòî ñúñ ñèãóðíîñò ðàáîòÿò. Ïðè 16-êè è ò.í. íÿìà ïðîáëåìè. Ïðè 12-êè íå òðúãâàò.?
Ìèñëÿ ñúùî, ÷å èìà ïðîáëåì àêî íàïðèìåð íàïðàâÿ delay_ms îò ïîðÿäúêà íà 10ìèí.... è íàãîðå.

Автор:  Predator_MF [ Съб Апр 02, 2005 10:19 am ]
Заглавие: 

Абе и при мене прави подобни работи, само дето всичко което съм пробвал с 12-ка тръгна. Проблеми ми дава при Config думата, но не ме бърка. Я поясни какъв е тоя delay_ms() 10 мин. Да не ти е проблем в сорса...

Автор:  elmax [ Съб Апр 02, 2005 11:55 am ]
Заглавие: 

Àêî íå ñå ëúæà delay ñå èçïîëçâà êàòî çàêúñíåíèå çà íÿêàêúâ èíòåðâàë îò âðåìå. Àç ñúì çàäàë ïîâå÷å ìèëèñåêóíäè. Ïî òîçè íà÷èí ìîãà äà ïîëó÷à 1ìèí. è ò.í.. ×ðåç âãðàäåíèÿ òàéìåð èçìåðâàì öèêëè. Ñïîðåä ìåí è äâåòå ïðîãðàìè ïðÿáâà äà ðàáîòÿò, à íå ñàìî ïúðâàòà. Íå áè ëè òðÿáâàëî Ñ-òî ñàìî äà ïðàâè òàçè ÷àñò îò êîä ïðè ïî-ãîëåìè èíòåðâàëè îò âðåìå? Ñìèñúë ïðè ïî-ìàëêè èíòåðâàëè äà îòìåðâà ñàìî òàèìåðà, à ïðè ïî-ãîëåìè äà èçìåðâà íÿêîëêî öèêúëà íà òàéìåðà?

Ïðèìåð:

1) òàçè ñ delay 1ìèí. òðúâà
#include <16F84.h>

#fuses XT, NOWDT, PUT
#use delay(clock=4000000)
#define Red_LED PIN_A1
main() {
while(TRUE) {output_low(Red_LED);
delay_ms(60000);
output_high(Red_LED);
delay_ms(60000);}}

2) òàçè ïðè 10ìèí. íå òðúãà- òîåñò âúðâè íî âðåìåòî êîåòî èìåðâà òðîòåóñà å äàëå÷ îò èñòèíàòà, à è àëãîðèòúìà âúîáùå íå ñå ñïàçâà.

#include <16F84.h>

#fuses XT, NOWDT, PUT
#use delay(clock=4000000)
#define Red_LED PIN_A1
main() {
while(TRUE) {output_low(Red_LED);
delay_ms(600000);
output_high(Red_LED);
delay_ms(600000);}}
:?

Автор:  ToHu [ Съб Апр 02, 2005 2:54 pm ]
Заглавие: 

Абе да не те изъжа но май delay не може да е по голямо от FFFF ......

п.с. направо не може .......
но ..... да прави подобно закъснение по тоя начин .. не ми изглежда много добре, най-малко защото ак имаш други процеси неможеш да ги обслужваш по време на delay .....настрой си таймера да ти дава прекъсване на определено време и си слагаи в него променливите за таймера, така може да реализираш произволни времеви диапазони, без при това да се връзваш в delay.

Автор:  forest_gump [ Съб Апр 02, 2005 3:22 pm ]
Заглавие: 

ТоНи е прав пробвай нещо от сорта:
Код:
#define X  10  // 10 минути
static long timer_intr_count;
#INT_TMR0 //настрой таймера и делителя за прекъсване всяка секунда
void timer_isr(){
    timer_intr_count++;
}

void main(){
    while(1){
       if (timer_intr_count == 60*X){
       //прави нещо през 10 мин.
       timer_intr_count=0; 
       }
     //прави нещо друго докато чакаш

    }
}

Автор:  elmax [ Вто Апр 05, 2005 4:47 pm ]
Заглавие: 

Àáñîëþòíî ñòå ïðàâè, ÷å ìîÿò íà÷èí çà ïðàâåíå íà çàêúñíåíèå íå å óäà÷åí, íî âúïðîñúò å ïðèíöèïåí. Èìåííî ïðè FFFF å ìàêñèìàëíîòî ïðåïúëâàíå íà òàéìåðà, êîåòî ïðè 4Mhz å 65.5ms. Òîâà áè òðÿáâàëî äà îçíà÷àâà, ÷å çà 1ìèí. ñå èçìåðâàò n íà áðîé ïðåïúëâàíèÿ, íî çàùî òîâà íåñòàâà ñ ïî-ãîëåìè âðåìåíà 5ìèí.. è ò.í. êîãàòî ïðèíöèïà çà òÿõíîòî ðåàëèçèðàíå å ñúùèÿ. :?:

Автор:  Predator_MF [ Вто Апр 05, 2005 4:53 pm ]
Заглавие: 

Абе колегите говорят за самата функция delay_ms (или delay_us, все тая) че не трябва да ги викаш по подобен начин:
Код:
delay_ms(100000000000)
a най-голямото число в скобките да ти е FFFF или 65535....Ако искаш да направиш закъснение по голямо от 65535мс го напиши с цикъл...например
Код:
for (i=0;i<100;i++) delay_ms(10)
Това го пишеш за 1 секунда...Схващаш... :D

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