arkadaşlar bir senaryo doğrultusunda böyle bir kod yazdım fakat bir sorunum var.
for next döngüsü içerisinde 30sn sürecek şekilde ayarladım ve burada sorun yok istediklerimi yapıyorum ki kodlardan istediğim az çok anlaşılmakta.
sorunum ise bu 30 sn sonra portb deki ledlerimin sıfırlanması . ben şunu istiyorum for next döngüsü içerisinde enson hangi ledler açıksa portb0 ve b1 hariç diğerleri olduğu gibi yanık kalsın taki kapatma butonuna basılıncaya kadar yanmaları gerekiyor. kapat ve aç butonları kodlarda etiketler içinde belirli. takıldım kaldım .
@ DEVICE pic16F628A
@ DEVICE pic16F628A, WDT_OFF
@ DEVICE pic16F628A, PWRT_ON
@ DEVICE Pic16F628A, BOD_OFF
@ DEVICE Pic16F628A, LVP_OFF
@ DEVICE pic16F628A, PROTECT_off
@ DEVICE pic16F628A, MCLR_OFF
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT
define osc4
cmcon=7
trisa=%00011111
trisb=%00000000
x var word
porta=0
portb=0
basla:
if porta.0=1 then
goto bcON
endif
goto basla
bcON:
portb=%00000011
for x=1 to 14500
pause 2
if porta.1=1 then
gosub ac1
endif
if porta.2=1 then
gosub kapat1
endif
if porta.3=1 then
gosub ac2
endif
if porta.4=1 then
gosub kapat2
endif
next
ac1:
PORTB=(PORTB & %11100011)+%00011100
return
kapat1:
PORTB=(PORTB & %11100011)+%00000000
return
ac2:
PORTB=(PORTB & %00011111)+%11100000
return
kapat2:
PORTB=(PORTB & %00011111)+%00000000
return
takip edebildiğim kadarıyla program kapalı döngü içerisinde değil. program sürekli başa döndüğü için otomatik olarak sıfırlanmış oluyor. basicte nasıl kullanılır tam emin değilim fakat programı
while(1)
{
}
mesaj birleştirme:: 15 Temmuz 2016, 08:17:57
şeklinde yaptır.
mesaj birleştirme:: 14 Temmuz 2016, 08:21:37
şimdi hatırladım goto komutuyla programın sonundan başına dallanma yap. alt programların sonundan değil ama nomal programın sonundan
Kod: [Seç]
@ DEVICE pic16F628A
@ DEVICE pic16F628A, WDT_OFF
@ DEVICE pic16F628A, PWRT_ON
@ DEVICE Pic16F628A, BOD_OFF
@ DEVICE Pic16F628A, LVP_OFF
@ DEVICE pic16F628A, PROTECT_off
@ DEVICE pic16F628A, MCLR_OFF
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT
define osc4
cmcon=7
trisa=%00011111
trisb=%00000000
x var word
porta=0
portb=0
basla2: // buraya
basla:
if porta.0=1 then
goto bcON
endif
goto basla
bcON:
portb=%00000011
for x=1 to 14500
pause 2
if porta.1=1 then
gosub ac1
endif
if porta.2=1 then
gosub kapat1
endif
if porta.3=1 then
gosub ac2
endif
if porta.4=1 then
gosub kapat2
endif
next
goto basla2 // burdan
ac1:
PORTB=(PORTB & %11100011)+%00011100
return
kapat1:
PORTB=(PORTB & %11100011)+%00000000
return
ac2:
PORTB=(PORTB & %00011111)+%11100000
return
kapat2:
PORTB=(PORTB & %00011111)+%00000000
return
Döngü sonuna
PORTB=PORTB & %11111100
Ekledim ilk iki bit sınırlandı diğerlerinin kaydı kaldığı için açıksa açık kapaliysa kapalı kaldılar.bundan sonra sonsuz bod döngü ile kapatma ve başa sarma için butonları kontrol ettim istediğim oldu.