buton kontrolda ki hata ne olabilir?

Başlatan ilker_32, 07 Temmuz 2008, 15:04:35

ilker_32

Merhaba arkadaşlar,

Basic dilinde kod yazmaya çalışıyorum. Yapmak istediğim devre 2x5x7 dotmatris displeyde aşağı yukarı ok göstermek bunları iki butonla kontrol etmek istiyorum. Ben kodları yazdım fakat basit arızalar var. Kodlara birde siz göz gezdirebilirseniz hatayı daha hızlı bulabilirim. İsterseniz dosyaları upload edebilirim.


;*******************************************************************************
;port ayarlamalarının olduğu kısım
portb=0
portc=0
portd=0
trisb=255
trisc=0
trisd=0
CMCON=7
;*******************************************************************************
;atama kısmının olduğu kısım
enable_74154 var portc.4
i var byte
z var byte
dot var byte
SYMBOL m0=portb.0
SYMBOL m1=portb.1
SYMBOL m2=portb.2
SYMBOL m3=portb.3      
SYMBOL m4=portb.4
SYMBOL sd=portb.5
SYMBOL yok=portb.6
SYMBOL aok=portb.7
;*******************************************************************************
;ana programın olduğu kısım
goto basla
basla:

IF yok=1 THEN              
goto okyukari          
ELSE                  
goto okasagi           
eNDIF
   
okyukari:   
for z=1 to 200
for i=0 to 5
call tabloyok
portd=DOT
portc=i+16
low enable_74154    
pauseus 50  
high enable_74154
next i
next z


IF aok=1 THEN              
goto okasagi          
ELSE                  
low aok           
eNDIF

okasagi:   
for z=1 to 200
for i=0 to 5
call tabloaok
portd=DOT
portc=i+16
low enable_74154    
pauseus 50  
high enable_74154
next i
next z


goto basla
;*******************************************************************************
tabloyok:
;*******************************************************************************
select case i
case 0
DOT=$10
case 1
DOT=$30
case 2
DOT=$7f
case 3
DOT=$30
case 4
DOT=$10
case 5
DOT=$00
case 6
DOT=0
end select
return
;*******************************************************************************
tabloaok:
;*******************************************************************************
select case i
case 0
DOT=$04
case 1
DOT=$06
case 2
DOT=$7f
case 3
DOT=$06
case 4
DOT=$04
case 5
DOT=$00
case 6
DOT=0
end select
return
;*******************************************************************************
end

Herkese selamlar,

microcozmoz

Selam ,

goto basla
basla:


Programın başında böyle bir yönlendirme yapmak gereksiz.

IF yok=1 THEN
goto okyukari
ELSE
goto okasagi
eNDIF


Açıklamanda yukarı ve aşağı ok seçeneğini iki ayrı tuş ile yapacağını belirtmişsin. Ama burdaki döngüde yok tuşuna basılmadığı sürece program daima okasagı döngüsüne gider. Döngüdeki ikinci şartı kaldırıp yok için gereken satırları araya koyarsan iyi olur.

IF aok=1 THEN
goto okasagi
ELSE
low aok
eNDIF


Bu döngüde şart sağlanmadığında girişi "0" lama işlemi olmaz. Girişlere zaten pulldown atmışsın böyle birşey mümkün olsa bile gereksiz.
"Bütün bu şerâitten daha elîm ve daha vahim olmak üzere, memleketin dahilinde, iktidara sahip olanlar gaflet ve dalâlet ve hattâ hıyanet içinde bulunabilirler."

ilker_32

Sorun zaten if komutu ile alakalı olduğunu düşünüyorum. goto komutuda butonlar için yapılması gerektiğini zannediyorum.

microcozmoz

;ana programın olduğu kısım
basla:

IF yok=1 THEN
  for z=1 to 200
  for i=0 to 5
  call tabloyok
  portd=DOT
  portc=i+16
  low enable_74154
  pauseus 50
  high enable_74154
  next i
  next z
endif

IF aok=1 THEN
  for z=1 to 200
  for i=0 to 5
  call tabloaok
  portd=DOT
  portc=i+16
  low enable_74154
  pauseus 50
  high enable_74154
  next i
  next z
endif
goto basla

;*******************************************************************************
tabloyok:
;*******************************************************************************
select case i
case 0
DOT=$10
case 1
DOT=$30
case 2
DOT=$7f
case 3
DOT=$30
case 4
DOT=$10
case 5
DOT=$00
case 6
DOT=0
end select
return
;*******************************************************************************
tabloaok:
;*******************************************************************************
select case i
case 0
DOT=$04
case 1
DOT=$06
case 2
DOT=$7f
case 3
DOT=$06
case 4
DOT=$04
case 5
DOT=$00
case 6
DOT=0
end select
return
;*******************************************************************************
end
"Bütün bu şerâitten daha elîm ve daha vahim olmak üzere, memleketin dahilinde, iktidara sahip olanlar gaflet ve dalâlet ve hattâ hıyanet içinde bulunabilirler."

ilker_32

Çaban için teşekkürler. Ben enable ucunu hesaba hiç katmamıştım. Öğrenecez inşallah basic'i de.  :lol: