Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

Sayıcı Devresi

Başlatan eniskurtayyilmaz, 20 Haziran 2009, 23:26:44

eniskurtayyilmaz

Arkadaşlar bana tarama yöntemiyle yapılmış 2 dijit arttırma ve eksiltme tuşları olan adım sayıcı devresi ve programı arıyorum Pic basic olması lazım yardımcı olurmusunuz?

muhittin_kaplan

Takıldığın yer nersi ?

eniskurtayyilmaz

Tarama yaptıramıyorum sadece pic ve iki transistör kullanmam lazım

tayyar

Yaptıklarını bir koy bakalım buraya bir gözden geçirelim.
--EGEMENLİK KAYITSIZ ŞARTSIZ MİLLETİNDİR--

eniskurtayyilmaz

TRISA=%00000011
TRISB=%00000000
PORTA=%00000000
PORTB=%00000000
ILERI VAR PORTA.0
GERI VAR PORTB.1
SAYI VAR BYTE
BIRLER VAR BYTE
ONLAR VAR BYTE
PORTB=0
SAYI=0

BASLA:
IF ILERI=0 THEN
SAYI=SAYI+1 :PAUSE 150
IF SAYI=100 THEN SAYI=99
ENDIF
IF GERI=0 THEN
SAYI=SAYI-1:PAUSE 150
IF SAYI=255 THEN SAYI=0
ENDIF
BIRLER=SAYI DIG 0
ONLAR= SAYI DIG 1
PORTB=240 | BIRLER
LOW PORTB.5
PAUSE 1
HIGH PORTB.5
PAUSE 1
PORTB=240 | ONLAR
LOW PORTB.4
PAUSE 1
HIGH PORTB.4
PAUSE 2
GOTO BASLA
END


Mesela bu program harici bi entegre ile yapılan program bu programı aşagıdaki devreye göre yeniden tasarlamak lazım


Tagli

Tarama işini timer kesmesiyle yap bence. Her segment için bir byte'lık bir değişken olsun. Düğmeye basıldığında bu iki byte güncellensin. Gerisini zaten kesme halleder. Kesme bölümünde bir tablo kullanarak iki byte'ın içindeki rakam değerini göstergede gösterilebilecek şekle dönüştürebilirsin. Yani program ana döngüsünde sadece düğme konrolü ve bu iki byte'ı artma ve azalmalara göre düzenleyecek kod olacak.
Gökçe Tağlıoğlu

eniskurtayyilmaz

Ben pic konusunda daha yeni sayılırım biraz daha açıklamalı veya örnekli anlatırsanız sevirim

ilker_32

örnek olması açısından,


kod:

trisa=%00000011
trisb=%00000000
porta=0
portb=0

Symbol TUSA=PORTA.0
SYMBOL TUSB=PORTA.1
SAYI     var WORD
BIRLER   VAR BYTE
ONLAR    VAR BYTE

PORTB=0
SAYI=0

BASLA:
           
      IF TUSA=0 THEN 
      SAYI=SAYI+1 :PAUSE 500
      ENDIF                 
      IF TUSB=0 THEN
      SAYI=SAYI-1:PAUSE 500
      IF SAYI=65535 THEN SAYI=99
      ENDIF
  
      BIRLER=SAYI DIG 0
      ONLAR= SAYI DIG 1
      
      PORTB=240 | BIRLER
      LOW PORTB.4
      PAUSE 1
      HIGH PORTB.4
      PAUSE 1
    
      PORTB=240 | ONLAR
      LOW PORTB.5
      PAUSE 1
      HIGH PORTB.5
      PAUSE 2
          
      GOTO BASLA

  END


hex:

:1000000060288F018E00FF308E07031C8F07031CB2
:100010005B2803308D00DF300F2003288D01E83E80
:100020008C008D09FC30031C18288C070318152838
:100030008C0764008D0F15280C181E288C1C222894
:10004000000022280800013E93000A308E008F0134
:100050003F20930B2828100808008E0005309400DC
:100060000F080D02031D36280E080C020430031879
:100070000130031902301405031DFF305B28910184
:100080009001103092000D0D900D910D0E08900210
:100090000F08031C0F0F9102031855280E08900734
:1000A0000F0803180F0F910703108C0D8D0D920B85
:1000B00043280C085B288313031383126400080091
:1000C000831603308500860183128501860186012F
:1000D000A401A501640005187428A40A0319A50A3F
:1000E00001308F00F4300220640085188E28013022
:1000F000A4020030031C013EA50201308F00F43041
:100100000220FF308C00FF308D0025088F0024086E
:100110002D20031D8E286330A400A50124088C0027
:1001200025088D0000302320A60024088C00250817
:100130008D0001302320A700F0302604860006122F
:10014000831606120130831201200616831606124A
:10015000013083120120F0302704860086128316B6
:100160008612013083120120861683168612023011
:0A017000831201206A286300BB28F7
:02400E00FD3F74
:00000001FF

elektronikci03

Örnek güzelmiş 8) .

eniskurtayyilmaz

Örnek için teşekkürler fakat örnektekindede 4511 kullanılmış ben direk pic ve iki transistörle yapmak istiyorum veya 74hc595 ilede olabilir.