basic ve 12f508

Başlatan erdogan2734, 27 Eylül 2011, 19:09:41

erdogan2734

  sevgili arkadaşlar pic 12f508 i basic dili ile kodlayıp flashör devresi yapmam gerekiyor. Örnek komut yada örnek bir projeniz varsa yardımcı olurmusunuz?
Örneğin TRİS port komutları aynımı en azından bir port cıkısında nasıl kontrol edıldıgını ogrensem gerısını hallederım sımdıden tesekkr ederım...
Bildiğim tek şey henüz hiç bir şey bilmediğim...

-Hasan-

TRISIO=XXX
GPIO=XXX

bunun dışında her şey aynıdır.

erdogan2734

yanı sımdı
dıelımkı gp0 dakı ledı yakacagım

trısıo=0
gpıo.0=1
pause 1000
gpıo.0=0
pause 1000
end
bu yeterlımıdır?
Bildiğim tek şey henüz hiç bir şey bilmediğim...

desman

Evet yterlidir;
TRISIO=0
GPIO=0
 BASLA:
    GPIO.0=1
    PAUSE 500
    GPIO.0=0
    PAUSE 500 
    GPIO.1=1
    PAUSE 500
    GPIO.1=0
    PAUSE 500
GOTO BASLA
  END

Başarılar :)
A freshman at YTU

-Hasan-

trısio=0

ana:
gpio.0=1
pause 1000
gpio.0=0
pause 1000
goto ana

end


Evet böyle olacak.

erdogan2734

tesekkürler beyler.. pekı son soru proteus ta 12f508 yok. benzer bır mıcro ıslemcı warmıdır? yoksa pac. mı arıym?
Bildiğim tek şey henüz hiç bir şey bilmediğim...

-Hasan-

12C508 kullanın. İkisi de aynı bildiğim kadarıyla. 16C84, 16F84 gibi.

erdogan2734

aynen kullandım sonuç mukemmel calısıyor tesekkr ederım :)
YEnı bır konu acmadan bısey danıscam sımdı ıkı tıp flash var bırı dıyelım flash1 dıgerıde flash 2 sımdı programa baslıycam
bırde tus war.
sımdı tusa bırdefa basınca flash1 e ıkı defa basınca flash 2 ye gecıcek ve kapatıncada hafıza da kalıcak yanı hangı tıpte bıraktıysak orada kalıcak.
bunun ıcın case mı kullanım ıf then den mı gıdeyım?

Bildiğim tek şey henüz hiç bir şey bilmediğim...

-Hasan-

İlk basışta Flash1, 2. basışta Flash2 ' ye gidecek, demek istiyorsunuz herhalde?

erdogan2734

Alıntı yapılan: Hasan Oguz - 27 Eylül 2011, 21:02:32
İlk basışta Flash1, 2. basışta Flash2 ' ye gidecek, demek istiyorsunuz herhalde?
aynen öyle hasan bey...
Bildiğim tek şey henüz hiç bir şey bilmediğim...

-Hasan-

Şu kalıbı bir denermisiniz?

BASLA:
IF TUS=0 THEN FLASH1
GOTO BASLA

FLASH1:
PAUSE 200 'Ark Söndürme gecikmesi

FLASH1_DEVAM:
IF TUS=0 THEN FLASH2

'Program Kodları ...............

GOTO FLASH1_DEVAM

FLASH2:
PAUSE 200 'Ark Söndürme Gecikmesi

FLASH2_DEVAM:
IF TUS=0 THEN FLASH1

'Program Kodları...................

GOTO FLASH2_DEVAM

erdogan2734

trisa=1
trisb=0

symbol tus=trisa.0

portb=0

BASLA:
IF TUS=0 THEN FLASH1
GOTO BASLA

FLASH1:
PAUSE 200 'Ark Söndürme gecikmesi

FLASH1_DEVAM:
IF TUS=0 THEN FLASH2
portb.0=1
pause 250
portb.0=0
pause 250
portb.0=1
pause 250
portb.0=0
pause 250
portb.0=1
pause 250
portb.0=0
pause 250

'Program Kodları ...............

GOTO FLASH1_DEVAM

FLASH2:
PAUSE 200 'Ark Söndürme Gecikmesi

FLASH2_DEVAM:
IF TUS=0 THEN FLASH1

portb.1=1
pause 250
portb.1=0
pause 250
portb.1=1
pause 250
portb.1=0
pause 250
portb.1=1
pause 250
portb.1=0
pause 250'Program Kodları...................

GOTO FLASH2_DEVAM
END


BOLE BISEY YAPTIM AMA LEDLERDEN ISIK ALAMADIM.? YANLIS YAZMIS OLABILIRMIYIM?
Bildiğim tek şey henüz hiç bir şey bilmediğim...

-Hasan-

symbol tus=trisa.0


Çok basit bir hata var:

symbol tus=porta.0


olacak.

-Hasan-

Hocam ek olarak şimdi aklıma geldi; gecikmelerinizi de döngü olarak vermeniz gerekir yoksa; butonların okunma süresi uzun olur, bastığınız zaman okunma noktasını yakalayamayabilirsiniz, dolayısıyla tuş işlemez.  Programınızı baştan düzenlersek:

trisa=1
trisb=0

x var byte
symbol tus=porta.0

portb=0

BASLA:
IF TUS=0 THEN FLASH1
GOTO BASLA

FLASH1:
PAUSE 200 'Ark Söndürme gecikmesi

FLASH1_DEVAM:

portb.0=1
gosub gecikme1
portb.0=0
gosub gecikme1
portb.0=1
gosub gecikme1
portb.0=0
gosub gecikme1
portb.0=1
gosub gecikme1
portb.0=0
gosub gecikme1

GOTO FLASH1_DEVAM

FLASH2:
PAUSE 200 'Ark Söndürme Gecikmesi

FLASH2_DEVAM:

portb.1=1
gosub gecikme2
portb.1=0
gosub gecikme2
portb.1=1
gosub gecikme2
portb.1=0
gosub gecikme2
portb.1=1
gosub gecikme2
portb.1=0
gosub gecikme2

GOTO FLASH2_DEVAM

gecikme1:
for x = 0 to 100
if tus=0 then
portb=0
goto flash2
endif
pause 2
next
return

gecikme2:
for x = 0 to 100
if tus=0 then
portb=0
goto flash1
endif
pause 2
next
return

end


olacak. Ben bunu Proteus ' ta denedim, istediğinz gibi oluyor, bir de siz deneyin bakalım.

Kolay gelsin.





erdogan2734

Hasan bey on numara program olmus. Sımdı bu projeye ara wermek zorundayım. ılgınıze tesekkur ederım cok saolun yıne ıletısıme gecelım kendınıze ıyı bakın...
Bildiğim tek şey henüz hiç bir şey bilmediğim...