Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Zaman ?

Başlatan Fixxer, 30 Mayıs 2007, 12:38:14

Fixxer

Slm arkadaşlar basicte çok kafam karıştı eminimki çok basit birşey mantıkını hem öğrenmem lazım hemde bunu çözmem lazım.

Bir zamanlayıcı olarak düşünüyorum. birincisi sayıcak olan zamanı set etmem gerekiyor. 2. si  süre dolduğu anda ne kadar bekliyceni set etmem gerekiyor. sürekli set ettiğim zamanlarda dönüp durcak Örneğin: (10 dk set  2 dk set)  10 dk dolduğunda 2 dk çıkış vericek goto basla. biraz kafam karıştı bu konuda mantığıyla ilgili yardımcı olursanız sevinirim.
zamanıda kesme sayacı kullanarak 1 sn =61 sayaçx256 tmro x 64 (bölme kullanarak yapmayı düşünüyorum ama kesme içindede bir değişkeni nasıl kullanıcam? buna benzer sorunlar   :oops: ??
...............................

Fixxer

Şimdi baya bir bölüm kat ettim sanırım. :lol:  buraya kadar menü girişini ve sayı girip set edip geriye saydırdım  kendimce biraz ilkel oldu :lol:  geriye kalan arkadaşlar geriye sayma işlemi bittikten sonra ne kadar çıkış vericemide set etmem lazım bu konuda napabilirim.

@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT
@ DEVICE pic16F628, WDT_ON
@ DEVICE pic16F628, PWRT_ON
@ DEVICE pic16F628, MCLR_OFF
@ DEVICE pic16F628, BOD_ON
@ DEVICE pic16F628, LVP_OFF
@ DEVICE pic16F628, CPD_ON
@ DEVICE pic16F628, PROTECT_OFF

cmcon=7

OUTPUT PORTA.2
INPUT PORTA.3
INPUT PORTA.4
INPUT PORTA.5
OUTPUT PORTB.0

yuk1 VAR PORTA.2
yuk2 VAR PORTB.0

LOW YUK1
LOW YUK2

set VAR PORTA.3
up VAR PORTA.5
down VAR PORTA.4

output portb.2
low portb.2

DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 1
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2

say var byte
saat var byte
dak var byte
sn var byte

s1     var byte
deger  var byte
s1=0
deger=0

say=0
saat=0
dak=0
sn=0
basla:
gosub sayacoku
basla2:
lcdout $fe,1,dec2 saat,":",dec2 dak,":",dec2 sn
pause 250
if set=0 then goto ayar
if saat=0 and dak=0 and sn=0 then
low yuk1
else
high yuk1
endif
goto basla
sayacoku:
if saat=0 and dak=0 and sn=0 then goto basla2
sn=sn-1
if dak>0 then
if sn>200 then
sn=59
dak=dak-1
if saat>0 then
if dak>200 then
dak=59
saat=saat-1
endif
endif
endif
endif
return
ayar:
lcdout $fe,1,"UP = ZAMAN AYR."
lcdout $fe,$c0,"DOWN = BKLEME A."
PAUSE 250
IF SET=0 THEN GOTO AYAR

ayar1:
if up=0 then goto sayacx

if set=0 then
seta:
if set=0 then goto seta
goto basla
endif
goto ayar1

sayacx:
lcdout $fe,1,dec2 saat,":",dec2 dak,":",dec2 sn
lcdout $fe,$c0,"           "
pause 250
s1=0
saat=0
dak=0
sn=0
if up=0 then goto sayacx

sayacx1:
lcdout $fe,1,dec2 saat,":",dec2 dak,":",dec2 sn
if set=0 then
setx:
if set=0 then goto setx
s1=s1+1
endif
if s1=3 then goto ayar
if s1=0 then
IF UP=0 THEN
SAAT=SAAT+1
endif
if down=0 then
saat=saat-1
endif
IF saat>59 then
saat=0
endif
if saat>100 then
saat=59
endif
endif

if s1=1 then
IF UP=0 THEN
dak=dak+1
endif
if down=0 then
dak=dak-1
endif
IF dak>59 then
dak=0
endif
if dak>100 then
dak=59
endif
endif

if s1=2 then
IF UP=0 THEN
sn=sn+1
endif
if down=0 then
sn=sn-1
endif
IF sn>59 then
sn=0
endif
if sn>100 then
sn=59
endif
endif
pause 300

goto sayacx1
   RETURN
...............................