Timer Kontrol den Çıktı :S Yardım edermisiniz

Başlatan GamzeDemir, 04 Nisan 2008, 16:18:14

GamzeDemir

include "modedefs.bas"    
DEFINE OSC 4 'Oscillator speed in MHz: 3(3.58) 4

PORTA=0
PORTB=0
TRISB=0
TRISA=0

sayac var byte
sayac2 var byte
sayac=0
sayac2=0
ON INTERRUPT GOTO KESME

kur:

if sayac=0 then
'///TİMER AYARLARI/////////////////7


PIR1.0=0
PIE1=1 'timer1 kesmesi açıldı
INTCON=%11000000 'ilgili kesmeler açıldı
TMR1L=$84:TMR1H=$6D 'timer1' 300 ms için ön değer (28036 değeri) verildi
T1CON=%00110101'timer1 1/8 prescaler ile çalışmaya başladı.
'///////////////////////////////////////////
sayac2=sayac2+1

if sayac2=3 then
   sayac=1
endif
endif
main:
     
porta.1=0

goto main

DISABLE
KESME:
PORTA.1=1
pause 2000
PIR1.0=0
     
   RESUME kur
   ENABLE
;************
end


Merhaba arkadaslar yukardaki programda timer 3 kere kurulacak sonrasında kurulmaması gerekiyor ama aksine sanki surekli kur demişim gb ledleri yakıp sonduruyor sebebini bilen varsa yardımcı olabilir mi

ete

Kur etiketinden sonra yer alan satırlarda Kesme açılıyor.
Ancak kesme bir yerde kapatılması lazım ki devam etmesin.
Siz,  sayac=1 yaptıktan sonra kesmenin kaldırılacağını düşünüyorsunuz ama TMR1 kesmesini kaldırmazsanız kesme sürekli devam edecektir.
Bunun için programın aşağıdaki kısmını yazdığım şekilde değiştirmeniz gerekir. Sayac =1 eşitliğine hiç de gerek yok.

if sayac2=3 then PIE1=0


Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

GamzeDemir

Alıntı yapılan: "ete"Kur etiketinden sonra yer alan satırlarda Kesme açılıyor.
Ancak kesme bir yerde kapatılması lazım ki devam etmesin.
Siz,  sayac=1 yaptıktan sonra kesmenin kaldırılacağını düşünüyorsunuz ama TMR1 kesmesini kaldırmazsanız kesme sürekli devam edecektir.
Bunun için programın aşağıdaki kısmını yazdığım şekilde değiştirmeniz gerekir. Sayac =1 eşitliğine hiç de gerek yok.

if sayac2=3 then PIE1=0


Ete

Hmm :roll: gercekten  öle dusunmustum :oops:  teşekkürler ;)