Haberler:

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

Ana Menü

pbp pin dizilimi

Başlatan kotan04, 16 Mart 2011, 09:05:49

omereliusuk

bir başka değişken yap. o değişkenle or kullan. o zaman oluyor. hem de formülleşiyor.

omereliusuk

bu da sana kıyağım olsun..
saga_topla:
led=$0001 :GoSub gonder   : a=0 :y=0:x=0
For i=0 To 15
b=14-a
If b=0 Then 
led=led<<1
led=led|y
GoSub gonder
DelayMS 10
led=$ffff
GoSub gonder
DelayMS 10
Return
EndIf
For w=0 To b
led=led<<1
led=led|y
GoSub gonder: DelayMS 10
Next
x=((x<<1)+1)<<(15-a)
y=y|x 
a=a+1 :led=$0001|y
GoSub gonder
DelayMS 10
Next
Return

kotan04

wow :) hemen bakacağım hocam çok saolun ilgilendiğiniz için
kkkkoootttaaannn000444

omereliusuk

#48
dediğin gibi 16 bite göre ayarlandı. ama sen 14 bit kullanacağım diyorsun. o halde 14 bite göre ayarlarsın. bir de delayms 10 ları delayms 100 yap. hareketleri daha rahat görürsün. :)
saga_topla:
led=$0001 :GoSub gonder   : a=0 :y=0:x=0
For i=0 To 12'15
b=12-a'14-a
If b=0 Then 
led=led<<1
led=led|y
GoSub gonder
DelayMS 100
led=$ffff
GoSub gonder
DelayMS 100
Return
EndIf

For w=0 To b
led=led<<1
led=led|y
GoSub gonder: DelayMS 100
Next
x=((x<<1)+1)<<(14-a)
y=y|x 
a=a+1 :led=$0001|y
GoSub gonder
DelayMS 100
Next
Return

kotan04

hocam düzelttim kodlar aşşağıda  sağa toplanma görünmüyor yani toplanırken ledler yanmıyor sönük vaziyette toplanıyor :)


@ DEVICE pic16F628A, WDT_on              'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F628A, MCLR_OFF             'MCLR pini kullanılıyor.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak
trisb=%00000000:TrisA=%00100000
buton var PortA.5:portb=0:porta=0:CMCON=7
led var word
a var byte
b var byte
y var byte
x var byte
i var byte
w var byte
porta=0:portb=0
led=1
BASLA:





                 

     
     led=led*2
     PAUSE 100
     IF led<1 THEN led=1 
     GoSub GONDER

 saga_topla:
led=$0001 :GoSub gonder   : a=0 :y=0:x=0
For i=0 To 14
b=13-a
If b=0 Then 
led=led<<1
led=led|y
GoSub gonder
pause 100
led=$ffff
GoSub gonder
pause 100 
Return
EndIf
For w=0 To b
led=led<<1
led=led|y
GoSub gonder: pause 100 
Next
x=((x<<1)+1)<<(14-a)
y=y|x 

a=a+1 :led=$0001|y
GoSub gonder
pause 100 
Next
Return

      



GONDER:
PORTA.1=LED.0
PORTA.0=LED.1
PORTA.7=LED.2
PORTA.6=LED.3
PORTB.7=LED.4
PORTB.6=LED.5
PORTB.5=LED.6
PORTB.4=LED.7
PORTB.3=LED.8
PORTB.2=LED.9
PORTB.1=LED.10
PORTB.0=LED.11
PORTA.4=LED.12
PORTA.3=LED.13
PORTA.2=LED.14
Return
kkkkoootttaaannn000444

omereliusuk

#50
TRISA=0   
TRISB=0
PORTA=0
PORTB=0
sen giriş yaptığın pini daha sonra çıkış olarak kullanmışsın. bundan dolayı bazı yerlerde sorun var diyebilirim. denedim çok da güzel çalışıyor. ayrıca ra4 pinini bir dirençle +5 volta çek. yoksa ra4 pini çıkışını hep 0 da veya boşta görürsün.
ayrıca;
basla:
gosub saga_topla
goto basla
end

omereliusuk

@kotan04
adresimi profile ekledim