pbp pin dizilimi

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

My75

Bu karışık pin olayı bir port içinde olsaydı bir kaç formül ile yönlendirme yapabilirdin,2 port ilede olur ama uğraşmak lazım,enazından fazla animasyon yapmayacaksan uğraşılabilir.
Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

omereliusuk

#16
mesela bir byte veya word oluştur. bu 'msn' olsun. '
dim msn as byte
Dim  MSN0  As  MSN.0    '
Dim  MSN1  As  MSN.1    '
Dim  MSN2  As  MSN.2    '
Dim  MSN3  As  MSN.3    '
Dim  MSN4  As  MSN.4    '
Dim  MSN5  As  MSN.5    '
Dim  MSN6  As  MSN.6    ' 
Dim  MSN7  As  MSN.7    '

'*****************************************

buraya byte veya word üzerinden istediğin işlemi yap...
mesela;
msn=0
gosub gonder
msn=1
gosub gonder
veya;
msn=0
for i=0 to 255
msn=msn+1
gosub gonder
next
'*****************************************
gonder:
PORTB.7=MSN0      '
PORTD.4=MSN1
PORTC.7=MSN2  
PORTD.5=MSN3
porta.5=MSN4
portc.2=MSN5
PORTB.5=MSN6
PORTB.6=MSN7
return

bilmiyorum belki işini görür....

kotan04

#17
merhaba arkadaşlar şimdilik çalışmam güzel ilerliyor ir sorum daha olacak
ra1 ra0 ra7 ra6 rb7 rb6 rb5 rb4 rb3 rb2 rb1 rb0 ra4 ra3 ra2

bu dizilime göre  ra1 bitinde gelen 1 sayısı sağa doğru kayacak ve son bitte sola doğru toplanacak bunu yapmanın bir yolu varmı acaba? port isimlerini yazdığım zaman çok uzun oluyor? şimdi alttakini düzenledim fakat en sonda toplanmaya başlayadcak soladoğru  soldan bir gececek en sağda 1 duracak geln diğer 1 bunun yanında bu şekilde sola doğru gidecek :s nasıl olabilir bu örnek koda son bite geleni 1 arttır dememiz mümkünmü kafam allak bullak oldu help

for  kutu=0 to 3  'porta.1,0,7,6  için                'sola tek kayar
lookup kutu,[2,1,128,64],led
porta=led
pause 500
next 
porta=0
for  kutu=0 to 7   'portb.7,6,5,4,3,2,1,0 için
lookup kutu,[128,64,32,16,8,4,2,1],led
portb=led
pause 500
next
portb=0 
for  kutu=0 to 2   'porta.4,3,2 için
lookup kutu,[16,8,4],led
porta=led
pause 500
next
kkkkoootttaaannn000444

kotan04

arkadaşlar yardımcı olabilirmisiniz?
kkkkoootttaaannn000444

My75

Program sonuna ekle..

For KUTU=0 To 2
LookUp KUTU,[4,12,28],LED
PORTA=LED
PAUSE 500
Next

For KUTU=0 To 7
LookUp KUTU,[1,3,7,15,31,63,127,255],LED
PORTB=LED
PAUSE 500
Next

For KUTU=0 To 3
LookUp KUTU,[92,220,221,223],LED
PORTA=LED
PAUSE 500
Next
Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

kotan04

#20
Alıntı yapılan: My75 - 17 Mart 2011, 16:13:52
Program sonuna ekle..

For KUTU=0 To 2
LookUp KUTU,[4,12,28],LED
PORTA=LED
PAUSE 500
Next

For KUTU=0 To 7
LookUp KUTU,[1,3,7,15,31,63,127,255],LED
PORTB=LED
PAUSE 500
Next

For KUTU=0 To 3
LookUp KUTU,[92,220,221,223],LED
PORTA=LED
PAUSE 500
Next

Sayın hocam benim bahsettiğim ra1 den led sırayla yanmaya başlayacak en sonda durarak toplanacak örneğin




100000000000000

010000000000000

001000000000000

000010000000000

000000000000001 en sonu 

100000000000000

010000000000000

001000000000000

000010000000000

000000000000011 en sonu 

010000000000000

001000000000000

000010000000000

000000000000111 en sonu   bu şekilde ra1e kadar toplanacak
soldan gelecek sağdaki bitte toplayacak :(

ben hepsini çizmedim ama hepsi bu şekilde sonda toplanmaya başlayacak  :(
kkkkoootttaaannn000444

kotan04

#21
Merhaba arkadaşlar bir fikri olan varmı burada tıkandım yardımlarınızı bekliyorum :s
kkkkoootttaaannn000444

kotan04

Sayın hocam benim bahsettiğim ra1 den led sırayla yanmaya başlayacak en sonda durarak toplanacak örneğin




100000000000000

010000000000000

001000000000000

000010000000000

000000000000001 en sonu 

100000000000000

010000000000000

001000000000000

000010000000000

000000000000011 en sonu 

010000000000000

001000000000000

000010000000000

000000000000111 en sonu   bu şekilde ra1e kadar toplanacak
soldan gelecek sağdaki bitte toplayacak :(

ben hepsini çizmedim ama hepsi bu şekilde sonda toplanmaya başlayacak  :(
kkkkoootttaaannn000444

My75

Benim pc'de pbp derlemiyor o yüzden protonda yazdım..


Device 16F628A
TRISA = %00100000
TRISB = %00000000
ALL_DIGITAL TRUE
PORTB_PULLUPS On
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, BODEN_OFF, LVP_OFF, MCLRE_OFF,CP_ON

Dim KUTU        As Byte
Dim LED         As Byte
Dim SAYAC       As Byte
Dim A0          As Byte
Dim A1          As Byte
Dim A2          As Byte
Dim A3          As Byte
Dim A4          As Byte
Dim A6          As Byte
Dim A7          As Byte
Dim B0          As Byte
Dim B1          As Byte
Dim B2          As Byte
Dim B3          As Byte
Dim B4          As Byte
Dim B5          As Byte
Dim B6          As Byte
Dim B7          As Byte
Dim A           As Byte
Dim B           As Byte
Dim C           As Byte

RESETLED:
A=4:B=8:C=3
A1=2:A0=1:A7=128:A6=64:B7=128:B6=64:B5=32:B4=16:B3=8:B2=4:B1=2:B0=1:A4=16:A3=8:A2=4
PORTA=0
PORTB=0

BASLA:
For SAYAC=1 To 15
                                   
If SAYAC=2  Then C=2:  A1=6 :A0=5 :A7=132:A6=68:A4=20:A3=12     :EndIf
If SAYAC=3  Then C=1:  A1=14:A0=13:A7=140:A6=76:A4=28           :EndIf 
If SAYAC=4  Then C=0:  A1=30:A0=29:A7=156:A6=92:                :EndIf

If SAYAC=5  Then B=7:  B7=129:B6=65:B5=33:B4=17:B3=9 :B2=5:B1=3 :EndIf
If SAYAC=6  Then B=6:  B7=131:B6=67:B5=35:B4=19:B3=11:B2=7      :EndIf
If SAYAC=7  Then B=5:  B7=135:B6=71:B5=39:B4=23:B3=15           :EndIf
If SAYAC=8  Then B=4:  B7=143:B6=79:B5=47:B4=31                 :EndIf
If SAYAC=9  Then B=3:  B7=159:B6=95:B5=63                       :EndIf
If SAYAC=10 Then B=2:  B7=191:B6=127                            :EndIf
If SAYAC=11 Then B=1:  B7=255                                   :EndIf

If SAYAC=12 Then B=0:  A1=30:A0=29:A7=156:A6=92                 :EndIf
If SAYAC=13 Then A=3:  A1=94:A0=93:A7=220                       :EndIf
If SAYAC=14 Then A=2:  A1=222:A0=221                            :EndIf
If SAYAC=15 Then A=1:  A1=255                                   :EndIf

   

For KUTU=1 To A
LookUpL KUTU,[0,A1,A0,A7,A6],LED
PORTA=LED
DelayMS 500
Next

If B<>0 Then
For KUTU=1 To B
PORTA.6=0
LookUpL KUTU,[0,B7,B6,B5,B4,B3,B2,B1,B0],LED
PORTB=LED
DelayMS 500
Next
EndIf

If C<>0 Then
PORTB=0
For KUTU=1 To C
LookUpL KUTU,[0,A4,A3,A2],LED
PORTA=LED
DelayMS 500
Next
EndIf

If SAYAC=15 Then PORTA=0:PORTB=0:DelayMS 500:GoTo RESETLED:EndIf
Next SAYAC

GoTo BASLA

End

Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

kotan04

hemen inceliyorum hocam çok teşekürler..
kkkkoootttaaannn000444

kotan04

merhaba arkadaşlar protonda hazırlanmış kodları elimden geldiğince basic pro kodlarına çevirdim ama basic proda derleyemedim

acaba hata nerede bir bakabilirmisiniz?
@ DEVICE pic16F628A                      'işlemci 16F628                               
@ 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
portb=0
porta=0
CMCON=7

KUTU        var Byte
LED         var Byte
SAYAC       var Byte
A0          var Byte
A1          var Byte
A2          var Byte
A3          var Byte
A4         var Byte
A6          var Byte
A7          var Byte
B0         var Byte
B1         var Byte
B2          var Byte
B3          var Byte
B4          var Byte
B5          var Byte
B6          var Byte
B7          var Byte
A           var Byte
B          var Byte
C           var Byte

RESETLED:
A=4:B=8:C=3
A1=2:A0=1:A7=128:A6=64:B7=128:B6=64:B5=32:B4=16:B3=8:B2=4:B1=2:B0=1:A4=16:A3=8:A2=4
PORTA=0
PORTB=0

BASLA:
For SAYAC=1 To 15
                                   
If SAYAC=2  Then C=2  
A1=6 :A0=5 :A7=132:A6=68:A4=20:A3=12     :EndIf
If SAYAC=3  Then C=1
  A1=14:A0=13:A7=140:A6=76:A4=28           :EndIf 
If SAYAC=4  Then C=0
  A1=30:A0=29:A7=156:A6=92:                :EndIf

If SAYAC=5  Then B=7
  B7=129:B6=65:B5=33:B4=17:B3=9 :B2=5:B1=3 :EndIf
If SAYAC=6  Then B=6
  B7=131:B6=67:B5=35:B4=19:B3=11:B2=7      :EndIf
If SAYAC=7  Then B=5
  B7=135:B6=71:B5=39:B4=23:B3=15           :EndIf
If SAYAC=8  Then B=4
  B7=143:B6=79:B5=47:B4=31                 :EndIf
If SAYAC=9  Then B=3
  B7=159:B6=95:B5=63                       :EndIf
If SAYAC=10 Then B=2
  B7=191:B6=127                            :EndIf
If SAYAC=11 Then B=1
  B7=255                                   :EndIf

If SAYAC=12 Then B=0
  A1=30:A0=29:A7=156:A6=92                 :EndIf
If SAYAC=13 Then A=3
  A1=94:A0=93:A7=220                       :EndIf
If SAYAC=14 Then A=2
  A1=222:A0=221                            :EndIf
If SAYAC=15 Then A=1
  A1=255                                   :EndIf

next   

For KUTU=1 To A
LookUp2 KUTU,[0,A1,A0,A7,A6],LED
PORTA=LED
pause 500
Next

If B<>0 Then
For KUTU=1 To B
PORTA.6=0
LookUp2 KUTU,[0,B7,B6,B5,B4,B3,B2,B1,B0],LED
PORTB=LED
pause 500
Next
EndIf



If C<>0 Then
PORTB=0
For KUTU=1 To C
LookUp2 KUTU,[0,A4,A3,A2],LED
PORTA=LED
pause 500
Next 
EndIf 

If SAYAC=15 Then PORTA=0:PORTB=0
pause 500
GoTo RESETLED
EndIf
Next SAYAC

GoTo BASLA

End
kkkkoootttaaannn000444

My75

Çok hata vardı,pbp için yeniden düzenledim..

@ DEVICE pic16F628A                                             
@ DEVICE pic16F628A, WDT_OFF           
@ DEVICE pic16F628A, PWRT_ON             
@ DEVICE pic16F628A, PROTECT_OFF       
@ DEVICE pic16F628A, MCLR_OFF           
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT
TRISA=%00100000
TRISB=%00000000
CMCON=7

KUTU        var Byte
LED         var Byte
SAYAC       var Byte
A0          var Byte
A1          var Byte
A2          var Byte
A3          var Byte
A4          var Byte
A6          var Byte
A7          var Byte
B0          var Byte
B1          var Byte
B2          var Byte
B3          var Byte
B4          var Byte
B5          var Byte
B6          var Byte
B7          var Byte
A           var Byte
B           var Byte
C           var Byte
'******************************************************************************
RESETLED:
A=4:B=8:C=3:A1=2:A0=1:A7=128:A6=64:B7=128:B6=64
B5=32:B4=16:B3=8:B2=4:B1=2:B0=1:A4=16:A3=8:A2=4
PORTA=0
PORTB=0
'*******************************************************************************
BASLA:
For SAYAC=1 To 15

SELECT CASE SAYAC
CASE 2
C=2:A1=6:A0=5 :A7=132:A6=68:A4=20:A3=12
CASE 3
C=1:A1=14:A0=13:A7=140:A6=76:A4=28
CASE 4
C=0:A1=30:A0=29:A7=156:A6=92
CASE 5
B=7:B7=129:B6=65:B5=33:B4=17:B3=9:B2=5:B1=3
CASE 6
B=6:B7=131:B6=67:B5=35:B4=19:B3=11:B2=7
CASE 7
B=5:B7=135:B6=71:B5=39:B4=23:B3=15
CASE 8
B=4:B7=143:B6=79:B5=47:B4=31
CASE 9
B=3:B7=159:B6=95:B5=63
CASE 10
B=2:B7=191:B6=127
CASE 11
B=1:B7=255
CASE 12
B=0:A1=30:A0=29:A7=156:A6=92
CASE 13
A=3:A1=94:A0=93:A7=220
CASE 14
A=2:A1=222:A0=221
CASE 15
A=1:A1=255
END SELECT
'*******************************************************************************
FOR KUTU=1 TO A
LookUp2 KUTU,[0,A1,A0,A7,A6],LED
PORTA=LED
PAUSE 50
NEXT
'******************************************************************************
IF B<>0 THEN
FOR KUTU=1 TO B
PORTA.6=0
LookUp2 KUTU,[0,B7,B6,B5,B4,B3,B2,B1,B0],LED
PORTB=LED
PAUSE 50
NEXT
ENDIF
'******************************************************************************
If C<>0 Then
PORTB=0
For KUTU=1 To C
LookUp2 KUTU,[0,A4,A3,A2],LED
PORTA=LED
pause 50
Next
EndIf
'******************************************************************************
If SAYAC=15 Then
PORTA=0:PORTB=0
pause 50
GoTo RESETLED
EndIf
'******************************************************************************

Next SAYAC
End
Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

kotan04

çok saolun hocam hemen incelemeye koyuldum allah razı olsun..
kkkkoootttaaannn000444

omereliusuk

eğer bunun için bunca kod yazarsanız geriye bir şey kalmıyor ki... sadece bu yaptığınız işlem entegreyi doldurur geriye bir şey kalmaz.

kotan04

:S evet farkına vardım şimdi çözüm yolu arıyorum ama bulamadım kafayı sıyıracam:(
kkkkoootttaaannn000444