GECİKMELİ ON-OFF

Başlatan POWER, 01 Eylül 2004, 10:59:18

POWER

Arkadaşlar aşağıdaki proğramla PORTA 1 butonuna basılınca PORTB  7 deki ledi yakmak,PORTA 2 butonuna basılınca PORTB 7 deki ledi gecikmeli söndürmek.Daha sonrada PORTA 4 butonuna basılınca PORTB 6 daki ledi gecikmeli yakmak,tekrar PORTA 4 butonuna basılınca PORTB 6 daki ledi gecikmeli söndürmek.Salih arkadaşımızın verdiği rogramda bilgim dahilinde birtakım değişiklikler yaparak yapmaya çalıştım ama bir türlü beceremedim yardımcı olabilirmisiniz? KOLAY GELSİN

   
LIST P=16F84
	INCLUDE "P16F84.INC"
	
xBEKLE1	EQU	0x0C
xBEKLE2	EQU	0x0D
	ORG	0x00	

BSF	STATUS, RP0	; Bank1'e geç
MOVLW	b'00000001'	; b'00000001'W registerine yükle
MOVWF	PORTB		; W registerini PortB'ye göster
BCF	STATUS, RP0	; Bank0'a geç
BCF	PORTB, 7		; PORTB'deki LED'i kapa
MOVLW	.200		; Gecikme değeri

;ANA PROGRAM
BASLA	;ANA DÖNGÜ

YAN
	BTFSC	PORTA,	1;RA1 butonuna basıldımı?
	GOTO	YAN	  ;Hayır,RA1'i tekrar test et.
	BSF	PORTB,	7;Evet Led'i yak.
	
SON
	BTFSC	PORTA,	2;RA2 butonuna basıldımı?
	GOTO	SON	  ;Hayır,RA2'yi tekrar test et.
	CALL	BEKLE	  ;Bir süre bekle
	BCF	PORTB,	7;EVet Led'i söndür
	


ON	BTFSC	PORTA, 4	; RA4 butonuna basıldımı?
	GOTO	ON	; Hayır,RA4'ü tekrar test et.
	CALL	BEKLE	; Bir süre bekle,
	BSF	PORTB, 6	; Evetse PORTB'deki LED'i aç.
	CALL	DEVAM	; Düğme bırakıldıysa devam et...

OFF	BTFSC	PORTA, 4	; RA4 butonuna basıldımı?
	GOTO	OFF	; Hayır,RA4'ü tekrar test et.
	CALL	BEKLE	; Bir süre bekle,
	BCF	PORTB, 6	; Evetse PORTB'deki LED'i kapa
	CALL	DEVAM
GOTO	BASLA



; ALT PROGRAMLAR
DEVAM	BTFSS	PORTA, 1	; Düğme bırakıldı mı?
	GOTO	DEVAM	; Hayırsa üst satırdan devam et...
	RETURN		; Evetse geri dön ve devam...





BEKLE	; BEKLEME
	MOVWF	xBEKLE1	; Hafızadaki değeri yükle...
BEKLE1	MOVLW	.255	; İkinci çarpanı
	MOVWF	xBEKLE2	; Yükle...
BEKLE2	DECFSZ	xBEKLE2, F; Bir azalt, çarpan  sıfırlandı mı?
	GOTO	BEKLE2	; Değilse üst satırdan devam et...
	DECFSZ	xBEKLE1, F; Bir azalt, çarpılan sıfırlandı mı?
	GOTO	BEKLE1	; Değilse üst satırdan devam et... 
	RETURN		; Bitince geri dön

	END		; Programı sonlandır...
TB6BKG

POWER

Arkadaşlar proğramda bozulmalar yine oluyor(Daha önce bir arkadaşımızın bu konudaki uyarılarını kullandım)Bu nedenle programı tex dosyası olarak aşağıdaki linkten alabilirsiniz  http://groups.yahoo.com/group/PicProjeUP3/files/POWER]
TB6BKG

ete

Power Karde,

İllaki assembly kullanmıyacağım dersen al sana çalışan PBP kodları.

'****************************************************************
'*  Name    : POWER.BAS                                      *
'*  Author  : [E.T.E]                                           *
'*  Notice  : Copyright (c) 2004 [ETE]                          *
'*          : All Rights Reserved                               *
'*  Date    : 01.09.2004                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
'Arkadaşlar aşağıdaki proğramla PORTA 1 butonuna basılınca 
'PORTB 7 deki ledi yakmak,PORTA 2 butonuna basılınca PORTB 7 deki ledi gecikmeli söndürmek.
'Daha sonrada PORTA 4 butonuna basılınca PORTB 6 daki ledi gecikmeli yakmak,
'tekrar PORTA 4 butonuna basılınca PORTB 6 daki ledi gecikmeli söndürmek.

TrisA=255
Trisb=0
TusA   var    PORTA.1
TusB   VAR    PORTA.2
TusC   Var    PORTA.4
LEDA   VAR    PORTB.6
LEDB   VAR    PORTB.7
Z      var    bit
ZAMAN  var    word
POrtb=0
Zaman=1000   'gecikmeli yanma ve sönme için süre  msecond olarak
z=0

BASLA:  
        if tusa=0 then
           if z=1 then basla
              high ledb
              z=1
              goto basla
        endif

        if tusb=0 then
           if z=1 then basla
              pause zaman
              low ledb
              z=1
              goto basla
        endif
        
        if tusc=0 then
           if z=1 then basla
              pause zaman
              toggle leda      
              z=1
              goto basla
        endif
        z=0
        goto basla
        


Hex dosyası ve isis DSN dosyasını senin yahoodaki yerine upload ediyorum. (Power.rar)

http://groups.yahoo.com/group/PicProjeUP3/files/POWER/

Oradan alabilirsin. Gecikme süresi zaman değişkeninin değeri ile ayarlanabilir. Default olarak 1000 ms verdim. İstersen sen değiştir.

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

DumrulBey

Merhaba,

Arkadaşım daha önce açmış olduğunu başlıkta gerekli düzeltmeyi yaptım. Aşağıda adresi yer alıyor. Özel mesaj olarak da sana bildirdim. Yoksa eline ulaşmadı mı?

https://www.picproje.org/index.php/topic,3974

Bu arada yukarıdaki kodlar anladığım kadarıyla sırayla düğmelere basarsan işlem yapıyor. Yukarıda adresini verdiğim başlığı incelersen orada bir döngü içerisinde düğmeler kısa süreliğine denetleniyor.

Dip Not: Eğer düğme sayısı 3-4'ü geçerse matris kullanmak daha akıllıcadır.

Başarılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)

POWER

Dumrul Bey Hocam,
Değişiklik elime yeni geçti.Sonuçlarını aşagıda belirteceğim.Öncelikle zaman gecikmeli on-off asm'siyle seni çok meşgul ettim kusura bakma.Ama başka çaremde yok.Kitaptan okuyorum uyguluyorum.Haliyle takıldığım yerler oluyor.Konuyu tekrar okuyorum işin içinden cıkamıyorum.Böyle oluncada board'dan fikir almaya çalışıyorum.
Proğramla ilgili 4 sorum var:Daha öncede söylemiştim Orhan ALTINBAŞAK hocamızın kitabını takip ediyorum.Denemeleri bu kitapta verilen deneme kartında yapıyorum.Burada RA3 ucuna bir buzer bağlanmış.
1- asm'yi yükleyip karta enerji verdiğimde buzer sürekli olarak ötmeye başlıyor.
2- RA2 den yanıp-sönen RB6 daki led devre reset edildiği zaman yanık kalıyor,sönmüyor.(aynı şekilde RB7 deki led devre reset edildiği zaman sönüyor.Deneme kartında ayrı bir reset butonu var.)
3-DEVAM alt komutunda bir hata olabilirmi? "BTFSS   PORTB, 0" bu komutu "BTFSS   PORTA, 1 yada 2" olarak değiştirdiğimde yukarıda bahsettiğim şekliyle çalışıyor.
4-"MOVWF  TRISA  ;PORTA nın tüm uçları giriş"olduğu halde neden buzer ötüyor? Bu komutu "MOVWF   TRISB" olarak değiştirdiğimde buzer ötmüyor ve proğramda normal çalışıyor gibi...fakat bu değişikliğin olumsuz bir etkisi olabilirmi?
5-Düğmelere basıldığı sürece işlem yapması için nasıl bir değişiklik yapmam lazım.Düğmeye 1 saniye içinde basıp-barakıyorum 3 saniye sonra ilgili led yanıyor.Düğmeye basıp 3 saniye dolmadan bırakırsam ilgili ledin yanmaması  lazım.  KOLAY GELSİN
:o
TB6BKG

DumrulBey

Alıntı yapılan: "POWER"Dumrul Bey Hocam,
Değişiklik elime yeni geçti.Sonuçlarını aşagıda belirteceğim.Öncelikle zaman gecikmeli on-off asm'siyle seni çok meşgul ettim kusura bakma.Ama başka çaremde yok.Kitaptan okuyorum uyguluyorum.Haliyle takıldığım yerler oluyor.
Estağfirullah, sor ki öğrenesin...

1. Başta BUZZER'ı susturman gerekiyor. Eğer GND'ye bağladıysa bağlı olan uca BCF ile sıfıra çek. Tersi durumunda BSF'yi kullan.
2. GOTO 1
3. Evet, bende şimdi farkettim. Aslında DEVAM olayı satırdan kazanmak içindi. Ama işin içine birden fazla düğme girince düzeltmek lazım.
4. Girişte yapsan sonuçta akım akması için karşılığını (GNS -> 5V <- GND)buluyorsa öter. Dediğim gibi GOTO 1...:)
5. İşte biz burada anlaşmazlığa düştük. Yani bir türlü 3 saniye olayını halledemedik. Galiba 3 saniye dolmadan düğme bırakılırsa sanki hiç basılmamış gibi olsun istiyorsun. Öyle mi?

Başarılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)

POWER

ETE Hocam ilginizden dolayı teşekkür ediyorum.Yazılımı aldım denedim.Şu anda asm yi öğrenmeye çalışıyorum. PBP bilgim olmadığı için gerekli eklentileri yapamıyorum.Teşekkürler. KOLAY GELSİN
TB6BKG

POWER

Evet hocam aynen dediğiniz gibi, 3 saniye dolmadan düğme bırakılırsa sanki hiç basılmamış gibi işlem yapmasını istiyorum.

Diğer önerilerinizi şu anda uygulamaya başladım.Sonuçları hemen yazarımKOLAY GELSİN :)
TB6BKG

POWER

Dumrulbey Hocam
Denemelirimin sonuçlarını aktarıyorum:
Öncelikle üzerinde çalıştığım asm yi buradan düzgün görüntüleyemediğim için asm için link veriyorum
asm için,http://groups.yahoo.com/group/PicProjeUP3/files/POWER]
1-buzer sustu.
2-Resetlendiği zaman RB6 ledi yanık kalıyor.Verdiğiniz ipucunu tam anlayamadım.Birtakım değişiklikler yaptım ama olmadı.
3-DEVAM alt komutuna gerek varmı? varsa hangi butonu kontrol ettirmemiz lazım?.İki buton kullanıldığı için
4-gecikme olayı hakkında zaten bir fikrim yok şuanda.
Kısacası sadece buzer konusunu halledebildim verdiğiniz ipuçlarından.

Not:Proğramda öncekilere göre ufak bir değişiklik var.asm ye baktığınızda zaten anlayacaksınız
TB6BKG

DumrulBey

Hmm...

Anladığım kadarıyla bu işi öğrenmek için yapıyorsun. Zamanlayıcı kesmesi kullanarak yapalım mı? Ne dersin buna? Programı baştan itibaren yazıp yeniden geliştirelim. Ama senin de katkın olacak haa...:)

Takıldığımız noktlarda da diğer arkadaşlar yardımcı olabilir. Yani tam bir etkileşimli program yazacağız. Yani öyle hazıra konma, ısmarlama türü olmayacak. Dene ve göre, yap işlet, her ne adla anılırsa anılsın böyle bir şey işte...:)

Başarılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)

POWER

Dumrulbey Hocam
Evet bu denemeleri asm yi öğrenmek için yapıyorum.Hocam yazacağımız proğram hakkında ipuçları verin ben kitaptan araştırıp birşeyler yapmaya çalışırım takıldığım yerlerde arkadaşların ğörüşlerini alırım.Bu konuda aklıma takılan o kadar soru varki hangisini soracağımı bimiyorum.Zamanla bu sorular cevabını bulacak herhalde.İpuçlarınızı bekliyorum. KOLAY GELSİN  :)
TB6BKG

DumrulBey

Pekala...

Aşağıda adresi yer alan yeni bir başlık açtım. Oradan devam edelim. Sık sık katılım sağlarsan ben de aynı oranda bildiklerim aktarmaya çalışacağım. Takıldıklarımızı da forumdaki diğer arkadaşlar tamamlarlar.

https://www.picproje.org/index.php/topic,4059

Başarılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)