Kablo test devresi

Başlatan smyomekatronik, 06 Şubat 2013, 19:13:34

smyomekatronik

  Proton ile yapmaya çalıştığım kablo test devresini basic ile yazarak çalıştırdım. Protonda kodu değiştirmeden her derleyişimde kodun farklı bir yeri çalışmıyordu.  Çok enterasan bir durum.
  Devre sadece kopukluk varmı diye kontrol ediyor. Eğer kopukluk varsa arıza ledi devamlı yanıyor. Programda şöyle yapsaydın daha iyi olurdu veya bunun kısa yolu böyle olur dediğiniz yerler varmı?.Programı yazarken ete hocanın derslerinden faydalandım.

http://www.dosya.tc/server/xkpxka/test.rar.html

INCLUDE "MODEDEFS.BAS"
PORTA=0
PORTB=0
TRISB=%00000100   'PortB tamamı giriş yapıldı.
TRISA=%11111111  'A portu tamamı çıkış yapıldı.
'-----------------------------------------------------------------
@ DEVICE pic16F628                      'işlemci 16F628                                
@ DEVICE pic16F628, WDT_ON              'Watch Dog timer açık
@ DEVICE pic16F628, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F628, MCLR_off            'MCLR pini kullanılıyor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak 
'-----------------------------------------------------------------
CMCON=7
symbol CLK=PortA.0
SYMBOL DTA=PORTA.1
SYMBOL AKTAR=PORTA.2
SYMBOL ALDIM=PORTB.0
SYMBOL GONDERDIM=PORTB.2

BILGI  VAR  BYTE
BILGI2  VAR  BYTE
BILGI3  VAR  BYTE
BILGI4  VAR  BYTE
BILGI5  VAR  BYTE
BILGI6  VAR  BYTE
BILGI7  VAR  BYTE
BILGI8  VAR  BYTE
BILGI9  VAR  BYTE
X VAR BYTE
Y VAR BYTE


BILGI=0 
BILGI2=0  
BILGI3=0  
BILGI4=0  
BILGI5=0  
BILGI6=0  
BILGI7=0  
BILGI8=0  
BILGI9=0
PAUSE 100

'-----------------------------------------------------------------


BASLA:
      IF GONDERDIM=1 THEN DEVAM
      GOTO BASLA
      DEVAM: 
      LOW AKTAR:PAUSEUS 5:HIGH AKTAR  'Girişler registere yazıldı
      SHIFTIN dta,clk,1,[BILGI,BILGI2,BILGI3,BILGI4,BILGI5,BILGI6,BILGI7,BILGI8,BILGI9]
      
      IF BILGI=1 THEN GOTO TAMAM
      IF BILGI=2 THEN GOTO TAMAM
      IF BILGI=4 THEN GOTO TAMAM
      IF BILGI=8 THEN GOTO TAMAM
      IF BILGI=16 THEN GOTO TAMAM
      IF BILGI=32 THEN GOTO TAMAM
      IF BILGI=64 THEN GOTO TAMAM
      IF BILGI=128 THEN GOTO TAMAM
      
      IF BILGI2=1 THEN GOTO TAMAM
      IF BILGI2=2 THEN GOTO TAMAM
      IF BILGI2=4 THEN GOTO TAMAM
      IF BILGI2=8 THEN GOTO TAMAM
      IF BILGI2=16 THEN GOTO TAMAM
      IF BILGI2=32 THEN GOTO TAMAM
      IF BILGI2=64 THEN GOTO TAMAM
      IF BILGI2=128 THEN GOTO TAMAM
      
      IF BILGI3=1 THEN GOTO TAMAM
      IF BILGI3=2 THEN GOTO TAMAM
      IF BILGI3=4 THEN GOTO TAMAM
      IF BILGI3=8 THEN GOTO TAMAM
      IF BILGI3=16 THEN GOTO TAMAM
      IF BILGI3=32 THEN GOTO TAMAM
      IF BILGI3=64 THEN GOTO TAMAM
      IF BILGI3=128 THEN GOTO TAMAM
      
      IF BILGI4=1 THEN GOTO TAMAM
      IF BILGI4=2 THEN GOTO TAMAM
      IF BILGI4=4 THEN GOTO TAMAM
      IF BILGI4=8 THEN GOTO TAMAM
      IF BILGI4=16 THEN GOTO TAMAM
      IF BILGI4=32 THEN GOTO TAMAM
      IF BILGI4=64 THEN GOTO TAMAM
      IF BILGI4=128 THEN GOTO TAMAM
      
      IF BILGI5=1 THEN GOTO TAMAM
      IF BILGI5=2 THEN GOTO TAMAM
      IF BILGI5=4 THEN GOTO TAMAM
      IF BILGI5=8 THEN GOTO TAMAM
      IF BILGI5=16 THEN GOTO TAMAM
      IF BILGI5=32 THEN GOTO TAMAM
      IF BILGI5=64 THEN GOTO TAMAM
      IF BILGI5=128 THEN GOTO TAMAM
      
      IF BILGI6=1 THEN GOTO TAMAM
      IF BILGI6=2 THEN GOTO TAMAM
      IF BILGI6=4 THEN GOTO TAMAM
      IF BILGI6=8 THEN GOTO TAMAM
      IF BILGI6=16 THEN GOTO TAMAM
      IF BILGI6=32 THEN GOTO TAMAM
      IF BILGI6=64 THEN GOTO TAMAM
      IF BILGI6=128 THEN GOTO TAMAM
      
      IF BILGI7=1 THEN GOTO TAMAM
      IF BILGI7=2 THEN GOTO TAMAM
      IF BILGI7=4 THEN GOTO TAMAM
      IF BILGI7=8 THEN GOTO TAMAM
      IF BILGI7=16 THEN GOTO TAMAM
      IF BILGI7=32 THEN GOTO TAMAM
      IF BILGI7=64 THEN GOTO TAMAM
      IF BILGI7=128 THEN GOTO TAMAM
      
      IF BILGI8=1 THEN GOTO TAMAM
      IF BILGI8=2 THEN GOTO TAMAM
      IF BILGI8=4 THEN GOTO TAMAM
      IF BILGI8=8 THEN GOTO TAMAM
      IF BILGI8=16 THEN GOTO TAMAM
      IF BILGI8=32 THEN GOTO TAMAM
      IF BILGI8=64 THEN GOTO TAMAM
      IF BILGI8=128 THEN GOTO TAMAM
      
      IF BILGI9=1 THEN GOTO TAMAM
      IF BILGI9=2 THEN GOTO TAMAM
      IF BILGI9=4 THEN GOTO TAMAM
      IF BILGI9=8 THEN GOTO TAMAM
      IF BILGI9=16 THEN GOTO TAMAM
      IF BILGI9=32 THEN GOTO TAMAM
      IF BILGI9=64 THEN GOTO TAMAM
      IF BILGI9=128 THEN GOTO TAMAM
      
      GOTO BASLA
      TAMAM:
      HIGH ALDIM
      PAUSE 5
      LOW ALDIM
      GOTO BASLA

end      
     


  
INCLUDE "MODEDEFS.BAS"
TRISB=%00000011   'PortB tamamý giriþ yapýldý.
TRISA=%00000000  'A portu tamamý çýkýþ yapýldý.
'-----------------------------------------------------------------
@ DEVICE pic16F628                      'iþlemci 16F628                                
@ DEVICE pic16F628, WDT_ON              'Watch Dog timer açýk
@ DEVICE pic16F628, PWRT_ON             'Power on timer açýk
@ DEVICE pic16F628, PROTECT_OFF         'Kod Protek kapalý
@ DEVICE pic16F628, MCLR_off            'MCLR pini kullanýlýyor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanýlacak 
'-----------------------------------------------------------------

CMCON=7
symbol CLK=PortA.0
SYMBOL DTA=PORTA.1
SYMBOL AKTAR=PORTA.2
SYMBOL ALDIM=PORTB.0
SYMBOL GONDERDIM=PORTB.2
SYMBOL ARIZA=PORTB.4
SYMBOL TAMAM=PORTB.6


BILGI  VAR  BYTE
BILGI2  VAR  BYTE
BILGI3  VAR  BYTE
BILGI4  VAR  BYTE
BILGI5  VAR  BYTE
BILGI6  VAR  BYTE
BILGI7  VAR  BYTE
BILGI8  VAR  BYTE
BILGI9  VAR  BYTE
X VAR BYTE
Y VAR BYTE

PORTA=0
PORTB=0
BILGI=0 
BILGI2=0  
BILGI3=0  
BILGI4=0  
BILGI5=0  
BILGI6=0  
BILGI7=0  
BILGI8=0  
BILGI9=0
 
PAUSE 100

'-----------------------------------------------------------------

BASLA1:  
X=0 
    BASLABIR:        
        Y=0
        GOSUB SAYI_AL1
        SHIFTOUT DTA,CLK,0,[BILGI,BILGI2,BILGI3,BILGI4,BILGI5,BILGI6,BILGI7,BILGI8,BILGI9]
        HIGH AKTAR:PAUSEus 5:LOW AKTAR 'BILGI ÇIKIÞA AKTARILDI
        IF X=8 THEN GOTO BASLA2
            bekle:
            HIGH GONDERDIM
            HIGH ARIZA
            If aldim=1 Then
            y=1
            While aldim=1:Wend
            PAUSE 20
            EndIf
            If y=1 Then GoTo devam 
            GOTO BEKLE        
        DEVAM:
        LOW GONDERDIM
        LOW ARIZA
        PAUSE 100
        X=X+1
        GOTO BASLABIR          
SAYI_AL1:
LOOKUP X,[1,2,4,8,16,32,64,128,0],BILGI
RETURN   

BASLA2:  
X=0 
    BASLAIKI:        
        Y=0
        GOSUB SAYI_AL2
        SHIFTOUT DTA,CLK,0,[BILGI,BILGI2,BILGI3,BILGI4,BILGI5,BILGI6,BILGI7,BILGI8,BILGI9]
        HIGH AKTAR:PAUSEus 5:LOW AKTAR 'BILGI ÇIKIÞA AKTARILDI
        IF X=8 THEN GOTO BASLA3
            bekle2:
            HIGH GONDERDIM
            HIGH ARIZA
            If aldim=1 Then
            y=1
            While aldim=1:Wend
            PAUSE 20
            EndIf
            If y=1 Then GoTo devam2 
            GOTO BEKLE2        
        DEVAM2:
        LOW GONDERDIM
        LOW ARIZA
        PAUSE 100
        X=X+1
        GOTO BASLAIKI          
SAYI_AL2:
LOOKUP X,[1,2,4,8,16,32,64,128,0],BILGI2
RETURN 


BASLA3:  
X=0 
    BASLAUC:        
        Y=0
        GOSUB SAYI_AL3
        SHIFTOUT DTA,CLK,0,[BILGI,BILGI2,BILGI3,BILGI4,BILGI5,BILGI6,BILGI7,BILGI8,BILGI9]
        HIGH AKTAR:PAUSEus 5:LOW AKTAR 'BILGI ÇIKIÞA AKTARILDI
        IF X=8 THEN GOTO BASLA4
            bekle3:
            HIGH GONDERDIM
            HIGH ARIZA
            If aldim=1 Then
            y=1
            While aldim=1:Wend
            PAUSE 20
            EndIf
            If y=1 Then GoTo devam3 
            GOTO BEKLE3        
        DEVAM3:
        LOW GONDERDIM
        LOW ARIZA
        PAUSE 100
        X=X+1
        GOTO BASLAUC          
SAYI_AL3:
LOOKUP X,[1,2,4,8,16,32,64,128,0],BILGI3
RETURN 

BASLA4:  
X=0 
    BASLADORT:        
        Y=0
        GOSUB SAYI_AL4
        SHIFTOUT DTA,CLK,0,[BILGI,BILGI2,BILGI3,BILGI4,BILGI5,BILGI6,BILGI7,BILGI8,BILGI9]
        HIGH AKTAR:PAUSEus 5:LOW AKTAR 'BILGI ÇIKIÞA AKTARILDI
        IF X=8 THEN GOTO BASLA5
            bekle4:
            HIGH GONDERDIM
            HIGH ARIZA
            If aldim=1 Then
            y=1
            While aldim=1:Wend
            PAUSE 20
            EndIf
            If y=1 Then GoTo devam4 
            GOTO BEKLE4        
        DEVAM4:
        LOW GONDERDIM
        LOW ARIZA
        PAUSE 100
        X=X+1
        GOTO BASLADORT          
SAYI_AL4:
LOOKUP X,[1,2,4,8,16,32,64,128,0],BILGI4
RETURN 

BASLA5:  
X=0 
    BASLABES:        
        Y=0
        GOSUB SAYI_AL5
        SHIFTOUT DTA,CLK,0,[BILGI,BILGI2,BILGI3,BILGI4,BILGI5,BILGI6,BILGI7,BILGI8,BILGI9]
        HIGH AKTAR:PAUSEus 5:LOW AKTAR 'BILGI ÇIKIÞA AKTARILDI
        IF X=8 THEN GOTO BASLA6
            bekle5:
            HIGH GONDERDIM
            HIGH ARIZA
            If aldim=1 Then
            y=1
            While aldim=1:Wend
            PAUSE 20
            EndIf
            If y=1 Then GoTo devam5 
            GOTO BEKLE5        
        DEVAM5:
        LOW GONDERDIM
        LOW ARIZA
        PAUSE 100
        X=X+1
        GOTO BASLABES          
SAYI_AL5:
LOOKUP X,[1,2,4,8,16,32,64,128,0],BILGI5
RETURN

BASLA6:  
X=0 
    BASLAALTI:        
        Y=0
        GOSUB SAYI_AL6
        SHIFTOUT DTA,CLK,0,[BILGI,BILGI2,BILGI3,BILGI4,BILGI5,BILGI6,BILGI7,BILGI8,BILGI9]
        HIGH AKTAR:PAUSEus 5:LOW AKTAR 'BILGI ÇIKIÞA AKTARILDI
        IF X=8 THEN GOTO BASLA7
            bekle6:
            HIGH GONDERDIM
            HIGH ARIZA
            If aldim=1 Then
            y=1
            While aldim=1:Wend
            PAUSE 20
            EndIf
            If y=1 Then GoTo devam6 
            GOTO BEKLE6        
        DEVAM6:
        LOW GONDERDIM
        LOW ARIZA
        PAUSE 100
        X=X+1
        GOTO BASLAALTI          
SAYI_AL6:
LOOKUP X,[1,2,4,8,16,32,64,128,0],BILGI6
RETURN 

BASLA7:  
X=0 
    BASLAYEDI:        
        Y=0
        GOSUB SAYI_AL7
        SHIFTOUT DTA,CLK,0,[BILGI,BILGI2,BILGI3,BILGI4,BILGI5,BILGI6,BILGI7,BILGI8,BILGI9]
        HIGH AKTAR:PAUSEus 5:LOW AKTAR 'BILGI ÇIKIÞA AKTARILDI
        IF X=8 THEN GOTO BASLA8
            bekle7:
            HIGH GONDERDIM
            HIGH ARIZA
            If aldim=1 Then
            y=1
            While aldim=1:Wend
            PAUSE 20
            EndIf
            If y=1 Then GoTo devam7 
            GOTO BEKLE7        
        DEVAM7:
        LOW GONDERDIM
        LOW ARIZA
        PAUSE 100
        X=X+1
        GOTO BASLAYEDI         
SAYI_AL7:
LOOKUP X,[1,2,4,8,16,32,64,128,0],BILGI7
RETURN

BASLA8:  
X=0 
    BASLASEKIZ:        
        Y=0
        GOSUB SAYI_AL8
        SHIFTOUT DTA,CLK,0,[BILGI,BILGI2,BILGI3,BILGI4,BILGI5,BILGI6,BILGI7,BILGI8,BILGI9]
        HIGH AKTAR:PAUSEus 5:LOW AKTAR 'BILGI ÇIKIÞA AKTARILDI
        IF X=8 THEN GOTO BASLA9
            bekle8:
            HIGH GONDERDIM
            HIGH ARIZA
            If aldim=1 Then
            y=1
            While aldim=1:Wend
            PAUSE 20
            EndIf
            If y=1 Then GoTo devam8 
            GOTO BEKLE8        
        DEVAM8:
        LOW GONDERDIM
        LOW ARIZA
        PAUSE 100
        X=X+1
        GOTO BASLASEKIZ         
SAYI_AL8:
LOOKUP X,[1,2,4,8,16,32,64,128,0],BILGI8
RETURN

BASLA9:  
X=0 
    BASLADOKUZ:        
        Y=0
        GOSUB SAYI_AL9
        SHIFTOUT DTA,CLK,0,[BILGI,BILGI2,BILGI3,BILGI4,BILGI5,BILGI6,BILGI7,BILGI8,BILGI9]
        HIGH AKTAR:PAUSEus 5:LOW AKTAR 'BILGI ÇIKIÞA AKTARILDI
        IF X=8 THEN GOTO BITTI
            bekle9:
            HIGH GONDERDIM
            HIGH ARIZA
            If aldim=1 Then
            y=1
            While aldim=1:Wend
            PAUSE 20
            EndIf
            If y=1 Then GoTo devam9 
            GOTO BEKLE9        
        DEVAM9:
        LOW GONDERDIM
        LOW ARIZA
        PAUSE 100
        X=X+1
        GOTO BASLADOKUZ         
SAYI_AL9:
LOOKUP X,[1,2,4,8,16,32,64,128,0],BILGI9
RETURN

BITTI:
HIGH TAMAM
GOTO BITTI
end     
        
        
       



dombilik

Programı çok iyi incelemedim ama
BILGI değişkenini ARRAY olarak tanımlayıp (DIM BILGI[10] as BYTE)
daha sonrada for-next ile kontrolü yaparsanız program biraz daha kısalacak gibi.
Bildiklerini kime miras bıraktın?kimseyemi? O zaman bildiklerinin ne önemi kalır. ******** /////////// ******** PROTON-ASM PROTEUS 7.4 SP3 EAGLE 5.40

ehliseyf

CCS C için düşünecek olursak . bilgileri gönderirken

for döngüsü kurabilirsin. 2^i  şeklinde yazarsan 2 üzeri işlemi yapabiliyor. i yi 0 dan 7 ye kadar artırırsan  128 elde etmiş olursun. diyelim ki 10 defa bu bilgileri göndereceksin.En dışta bir 10 luk döngü kurarsın biraz daha kısaltmış olursun programını.
Code'm mu oturturum !

smyomekatronik

dombilik -  ehliseyf cevaplar için teşekkür ederim.