Karaşimşek Devresi

pikoo

Üye
Katılım
9 Nis 2018
Mesajlar
4
Puanları
1
Yaş
26
Arkadaşlar 16f628a de 4 kanallı rf alıcı verici ile kara şimşek devresi yapmaya çalışıyorum. Şuan için isis üzerinde rf yerine butonlarla yapmayı deniyorum sorun şu ki 1. butona bastığımda ledler üzerinde istediğim animasyon oluşuyor ardından 2.butona bastığımda diğer animasyon oluşması gerekirken hala 1.butondaki animasyon devam ediyor. Similasyonu durdurup başlatdığımda 2.butona bastığımda istediğim animasyon oluşuyor 3.butona bastığımda yine aynı 2.butondaki animasyon devam ediyor.

Bu arada neredeyse konu hakkında hiçbir bilgim yok yani söyleyeceğiniz şeyleri anlamayabilirim

Devre ile ilgili fotoğraflar
Kullanacağım rf alıcı verici https://i.kontrolkalemi.com/5/D7003Z.jpg

Devre https://i.kontrolkalemi.com/5/BL55vV.png

Program https://i.kontrolkalemi.com/5/oORRj7.png - https://i.kontrolkalemi.com/5/gOJJqb.png - https://i.kontrolkalemi.com/5/Oopp0P.png

Kod:
TRISA=%11111111
TRISB=%00000000
PORTB=0
I VAR BYTE
CMCON=7


OKU:
IF PORTA.3=1 THEN GOTO HEPSI
IF PORTA.2=1 THEN GOTO ORTA
IF PORTA.1=1 THEN GOTO DON
IF PORTA.0=1 THEN
GOTO SAG
ELSE
GOTO OKU
ENDIF


SAG:
PORTB.0=1
SAGADONDUR:
PAUSE 250
PORTB=PORTB<<1
IF PORTB.7=1 THEN GOTO SOLAKAYDIR
GOTO SAGADONDUR
SOLAKAYDIR:
PAUSE 250
PORTB=PORTB>>1
IF PORTB.0=1 THEN GOTO SAGADONDUR
GOTO SOLAKAYDIR

DON:
FOR I=250 TO 250
PORTB=%00000001
PAUSE I
PORTB=%00000011
PAUSE I
PORTB=%00000111
PAUSE I
PORTB=%00001110
PAUSE I
PORTB=%00011100
PAUSE I
PORTB=%00111000
PAUSE I
PORTB=%01110000
PAUSE I
PORTB=%11100000
PAUSE I
PORTB=%11000000
PAUSE I
PORTB=%10000000
PAUSE I
PORTB=%11000000
PAUSE I
PORTB=%11100000
PAUSE I
PORTB=%01110000
PAUSE I
PORTB=%00111000
PAUSE I
PORTB=%00011100
PAUSE I
PORTB=%00001110
PAUSE I
PORTB=%00000111
PAUSE I
PORTB=%00000011
PAUSE I
PORTB=%00000001
NEXT I
GOTO DON

ORTA:
FOR I=250 TO 250
PORTB=%10000001
PAUSE I
PORTB=%01000010
PAUSE I
PORTB=%00100100
PAUSE I
PORTB=%00011000
PAUSE I
PORTB=%00100100
PAUSE I
PORTB=%01000010
PAUSE I
PORTB=%10000001
PAUSE I
NEXT I
GOTO ORTA

HEPSI:
PORTB=%1111111
 
program resimlerini atmak yerine buraya kodları yazsaydınız cevap vermeye çalışırdım.
 
her döngü içerisinde butonları kontrol etmelisiniz ya da butonlar için kesme kullanmalısınız.
 
Şöyleki her hangi bir buton basıldıkdan sonra sürekli bir döngü içerisinde kalmış her döngüde diyer butonları kontrol edmelisiniz yada kesme ile basit bir şekilde de yapabilirsiniz
 
Bu bir for döngüsüdür:

Kod:
FOR I=250 TO 250
PORTB=%00000001
PAUSE I
PORTB=%00000011
PAUSE I
PORTB=%00000111
PAUSE I
PORTB=%00001110
PAUSE I
PORTB=%00011100
PAUSE I
PORTB=%00111000
PAUSE I
PORTB=%01110000
PAUSE I
PORTB=%11100000
PAUSE I
PORTB=%11000000
PAUSE I
PORTB=%10000000
PAUSE I
PORTB=%11000000
PAUSE I
PORTB=%11100000
PAUSE I
PORTB=%01110000
PAUSE I
PORTB=%00111000
PAUSE I
PORTB=%00011100
PAUSE I
PORTB=%00001110
PAUSE I
PORTB=%00000111
PAUSE I
PORTB=%00000011
PAUSE I
PORTB=%00000001
NEXT I

Bu döngü içerisinde butonları kontrol etmelisiniz. Pic basic dilinden pek anlamam ama şu şekilde olabilir:

Kod:
FOR I=250 TO 250

IF PORTA.3==1 OR PORTA.2==1 OR PORTA.1==1 OR PORTA.0==1 THEN
GOTO OKU
ELSE
PORTB=%00000001
PAUSE I
PORTB=%00000011
PAUSE I
PORTB=%00000111
PAUSE I
PORTB=%00001110
PAUSE I
PORTB=%00011100
PAUSE I
PORTB=%00111000
PAUSE I
PORTB=%01110000
PAUSE I
PORTB=%11100000
PAUSE I
PORTB=%11000000
PAUSE I
PORTB=%10000000
PAUSE I
PORTB=%11000000
PAUSE I
PORTB=%11100000
PAUSE I
PORTB=%01110000
PAUSE I
PORTB=%00111000
PAUSE I
PORTB=%00011100
PAUSE I
PORTB=%00001110
PAUSE I
PORTB=%00000111
PAUSE I
PORTB=%00000011
PAUSE I
PORTB=%00000001
ENDIF
NEXT I
 
Bu bir for döngüsüdür:

Kod:
FOR I=250 TO 250
PORTB=%00000001
PAUSE I
PORTB=%00000011
PAUSE I
PORTB=%00000111
PAUSE I
PORTB=%00001110
PAUSE I
PORTB=%00011100
PAUSE I
PORTB=%00111000
PAUSE I
PORTB=%01110000
PAUSE I
PORTB=%11100000
PAUSE I
PORTB=%11000000
PAUSE I
PORTB=%10000000
PAUSE I
PORTB=%11000000
PAUSE I
PORTB=%11100000
PAUSE I
PORTB=%01110000
PAUSE I
PORTB=%00111000
PAUSE I
PORTB=%00011100
PAUSE I
PORTB=%00001110
PAUSE I
PORTB=%00000111
PAUSE I
PORTB=%00000011
PAUSE I
PORTB=%00000001
NEXT I

Bu döngü içerisinde butonları kontrol etmelisiniz. Pic basic dilinden pek anlamam ama şu şekilde olabilir:

Kod:
FOR I=250 TO 250

IF PORTA.3==1 OR PORTA.2==1 OR PORTA.1==1 OR PORTA.0==1 THEN
GOTO OKU
ELSE
PORTB=%00000001
PAUSE I
PORTB=%00000011
PAUSE I
PORTB=%00000111
PAUSE I
PORTB=%00001110
PAUSE I
PORTB=%00011100
PAUSE I
PORTB=%00111000
PAUSE I
PORTB=%01110000
PAUSE I
PORTB=%11100000
PAUSE I
PORTB=%11000000
PAUSE I
PORTB=%10000000
PAUSE I
PORTB=%11000000
PAUSE I
PORTB=%11100000
PAUSE I
PORTB=%01110000
PAUSE I
PORTB=%00111000
PAUSE I
PORTB=%00011100
PAUSE I
PORTB=%00001110
PAUSE I
PORTB=%00000111
PAUSE I
PORTB=%00000011
PAUSE I
PORTB=%00000001
ENDIF
NEXT I
Denedim ama maalesef olmadı yada ben yapamadım
 
Basıc den anlamam ccs kullanıyorum ama dış kesme ile yapmalısınız
 

Forum istatistikleri

Konular
128,177
Mesajlar
915,643
Kullanıcılar
449,938
Son üye
Dragonov

Yeni konular

Geri
Üst