arkadaşımızın böle bi sorunu vardı cevabımı sizlerle paylaşmak istedim sade ve acık uygulama olarak cevab umarım işinizi görürKod:CCS de seri portla ilgili bazı işlemler yapmak istiyorum. Bu yüzden kabaca bir devre oluşturup aşağıdaki gibi bir deneme kodu yazdım. Kodda şunu istiyorum; Normal bir şekilde ledler yanıp sönerken, int_ext ile dışardan bir kesme geldiğinde ledler daha hızlı yanıp sönsün. ve pc ye Ihlal var alarmi durdurmak ici A'ya basin bilgisini göndersinVe bu durum seri porttan bir karakter (mesela 'A') gelene kadar devam etsin. Yani int_ext kesme rutini int_rda kesmesi ile bir nevi iptal edilsin ve pic resetlensin istiyorum. Ama yazdığım kodda bir türlü seri porttan veri gelmiyo gibi. Yani int_rda rutini hiç çalışmıyor. Bu konularda daha yeniyim işin içinden çıkamadım yardımcı olursanız sevinirim..
alın uygulamasıdaKod:#include <16F628.h> #use delay(clock=4000000) #fuses XT, NOWDT, NOPROTECT, PUT #use rs232(baud=9600, xmit=PIN_B2, rcv=PIN_B1) long x=250; /////////////////////////////////////////////////////////////////////7 #use fast_io(b) #int_EXT void ihlal() { printf("\fIhlal var alarmi durdurmak ici A'ya basin"); x=50; // normal seviyenin 4 kat hızlı } ////////////////////////////////////////////////////////////////7 #int_rda void durdur(void) { int c; c = getc(); while(1) { if(c==65) // A karekterine basıncaya kadar yavaşlamaz { x=250; // normal seviyeye ayarla break; //ve while döngüsnden cık cıkmassa ben gelir cıkartırım } break; // farklı bi tusa basarsada cık } } //////////////////////////////////////////////////////////////// void main(void) { ext_int_edge( L_TO_H ); enable_interrupts(INT_EXT); enable_interrupts(INT_RDA); enable_interrupts(global); //programın başında kesmeler aktif edilmeli SET_TRIS_B(0x03); //1234 çıkış 567 giriş 0 kesme_girişi output_B(0x00); do{ output_high(PIN_B3); delay_ms(x); output_low(PIN_B3); delay_ms(x); }while(1); }
http://dosya.cc/microcelll.rar.html
NOT SAYIN ADMİN bölümlere ayırma fikrini sorucaktım![]()


LinkBack URL
About LinkBacks

Alıntı ile Cevapla


