12f675 ile zaman kontrolu

Başlatan harmanx, 21 Mayıs 2021, 14:23:28

harmanx

Arkadaşlar 12f675 ile led yakmak istiyorum giriş butonu 1 olunca çıkış ledi yanacak 10saniye sonra sönecek.. zaman devreye girdiği anda buton sinyali kesilrise başa dönecek her durumda buton of olursa başa dönücek program devam etmeyecek istediğim anda işlemi kesecek..
yardımcı olursanız memnun olurum...

kendim birşeyler yaptım ama kesme işini beceremedim...

ete

#1
Açıklamaların bana yetersiz gibi geldi. Buton 1 olursa çıkış ledi yanacak demişsin ama sonra buton sinyali kesilirse demişsin bu butonun LOW olma durumumudur belli değil.
Bu işle üç konum var bana kalırsa.
1. Butona basılmamış (BUTON=0) bu durumda program bekleyecek.
2. Butona basılmış ve basılı tutuluyor yani BUTON=1 olma durumu . Sistem hemen 10 sn saymaya başlayacak. Arada buton=0 olursa sayma ilecek led sönecek ve sistem başa dönecek. Yeniden butona basılma beklenecek.
3. Butona basılmış durumda ve sistem 10sn saydı. Led söndürüldü. Bu konumda sistem başa dönerse butona basılı olduğu için yeniden saymaya başlar. İstenen bu değil sanırım. O halde led söndükten sonra buton=0 olmasıbeklenmesi gerekir. Buton=0 oluncaya kadar bekle sona yenidenbaşa dön.

Aşağıda  buna ait örneği bulabilirsin. Devre şemasını pdf olarak veriyorum. Gerekirse yenide çizmen gerekecek.
Bu program ile ilgili başka değişiklik isteme lütfen. Ne yapacaksan kendin yap. Program PBP da yazıldı ama çok kolaylıkla Proton'a da çevrilebilir.

#CONFIG
 __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF
#ENDCONFIG 
DEFINE OSC 4
DEFINE OSCCAL_1K 1  'bu komut mutlaka olacak OSCCAL değerini yeniden pice yazdırıyor

CMCON = 7
WPU=0
ANSEL = 0
GPIO=0
TRISIO=%00001001

KES  VAR BYTE 56

SYMBOL TUS=GPIO.0
SYMBOL ROLE=GPIO.4
SYMBOL LED=GPIO.5
PAUSE 300

BASLA:
      WHILE TUS=0:WEND
      KES=20:ROLE=1:LED=1
      T1CON=%00110001 

SAYBIR:
       TMR1H=$0B:TMR1L=$DC:PIR1.0=0  
       WHILE PIR1.0=0
         IF TUS=0 THEN
            ROLE=0:LED=0
            pause 50
            GOTO BASLA
         ENDIF                         
        WEND
        KES=KES-1:IF KES>0 THEN SAYBIR'20 adet kesem 10 sn ediyor
      
        ROLE=0:LED=0               'SÜRE BİTTİ RÖLEYİ KAPATIP LEDİ SÖNDÜRÜYORUZ.
        WHILE TUS=1:WEND
        PAUSE 100
        GOTO BASLA 
Devreye ayrıca röle ekledim. Gerekli değil ise kullanmazsın olur biter.


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

harmanx

Teşekkür ederim çok makbul oldu... :)
Allah c.c işlerinizde  kolaylık versin...