Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Karar Mekanizması ?

Başlatan y1lh4n, 29 Mart 2012, 18:59:20

y1lh4n

DEL EQU 0CH                    
SEL EQU 0DH                     
		"Seri bilgi transferi tamamlandıktan sonra  Gelen sayının 255 ten büyük küçük olduğunu kontrol et
		"Gelen bilgi 255 ten büyük ise  çarpanlarını bul ve 250 ve 100 yerinde duran değişkenlere çarpanları yükle 
START:
BSF PORTB,7                     
CALL Gecikme  	"Burdaki Gecikme veya Gecikme2 olacağını değişken içersinde tut Gelen veriye göre doldur.                    
BCF PORTB,7                     
CALL Gecikme
GOTO START                      

Gecikme:                          
MOVLW .250  (250 yerine değişken tanımlanacak)                    
MOVWF DEL
                       
DEL1:                           
NOP                      
DECFSZ DEL,F                    
GOTO DEL1                       
RETURN

Gecikme2:                          
MOVLW .250  (250 yerine değişken tanımlanacak)                    
MOVWF DEL                       

DEL1:                           
MOVLW .100    (100 yerine değişken tanımlanacak)                  
MOVWF SEL                       

DEL2:                           
NOP                             
DECFSZ SEL,F                    
GOTO DEL2                       
DECFSZ DEL,F                    
GOTO DEL1                       
RETURN   


Böyle bir şey düşünüyorum arkadaşlar mümkün müdür bunu yapmak ? 

Tagli

Ben ne düşündüğünü anlamadım. Zaten bunu assembly kodundan anlamamızı beklemek yerine birkaç cümleyle senin anlatman daha uygun olur.
Gökçe Tağlıoğlu

y1lh4n

Açıkcası Eğer (if) komutunu nasıl yaptırmam gerekiyor.
misal 
if (a <100 )
{
a değişkenini 1 yap
}
if (a <200 )
{
a değişkenini 2 yap
}
Bir diğeri 255 sayısını geçen yerlerde nasıl bir döngü kurmam gerekiyor.

Tagli

Öncelikle şunu sorayım: İşlemci nedir? 16 serisi mi?

Eğer 16 serisi ise (veya 10, 12) ve karar vereceğin durum sayısı 256'yı geçmiyorsa, ek olarak, senin için kodun hızlı çalışması program hafızası kullanımından daha önemli ise, GOTO veya CALL tablosu kullanabilirsin.

Onun dışında tek tek karşılaştırmak dışında yapabileceğin fazla birşey yok sanırım. 18 serisi ve ötesi işlemcilerde karşılaştırma işlemlerini kolaylaştıran komutlar var. Değer 255'in ötesinde ise yazacağın kod iki byte'lık değerler üzerinde işlem yapabiliyor olmalı. Teklisinden daha zor elbette ama çok zor sayılmaz, biraz uğraşarak kolaylıkla yazılabilir.
Gökçe Tağlıoğlu