dijital pot kontrolü

Başlatan huseyin0579, 24 Ocak 2016, 20:00:56

huseyin0579

Ete hocam 18f452 ile iki adet ds1868 entegresini sekiz adet buton ile artı ve eksi yönde kontrol etmek için uğraşıyorum programa bakabilir'misin...
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2016 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 24.01.2016                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
asm
    __CONFIG _CONFIG1H, _OSCS_OFF_1H & _XT_OSC_1H  ;  _HSPLL_OSC_1H       
    __CONFIG _CONFIG2L, _BOR_ON_2L  & _BORV_20_2L & _PWRT_OFF_2L
    __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
    __CONFIG _CONFIG3H, _CCP2MX_ON_3H
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
;    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
    __CONFIG _CONFIG5L, _CP0_ON_5L & _CP1_ON_5L & _CP2_ON_5L & _CP3_ON_5L
;    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    __CONFIG _CONFIG5H, _CPB_ON_5H & _CPD_ON_5H   
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H
   

endasm

DEFINE OSC 20


I VAR BYTE
Y VAR BYTE
T VAR BYTE
KONUM VAR BYTE
KONUM1 VAR BYTE
RAW VAR BYTE
STK VAR BYTE
TUSBAS var byte
TUSBAS1 VAR BYTE
TUSBAS2 VAR BYTE

PortA=0:TrisA=%00000000 'portA yı sıfırladık ve pinleri çıkış olarak ayarladık
PortB=0:TrisB=%11111111 'portB yi sıfırladık ve pinleri çıkış olarak ayarladık
PortC=0:TrisC=%00000000 'portC yi sıfırladık ve pinleri çıkış olarak ayarladık
PortD=0:TrisD=%00000000 'portD yi sıfırladık ve PortD.0 'ı giriş olarak ayarladık
PortE=0:TRisE=%00000111 'portE yi sıfırladık ve pinleri çıkış olarak ayarladık

RST     VAR PORTD.2
RST1    VAR PORTD.3
CLK     VAR PORTD.4
CLK1    VAR PORTD.5
BILGI   VAR PORTD.6
BILGI1  VAR PORTD.7


I=0
Y=0
KONUM=0
KONUM1=0
RAW=0
STK=0
TUSBAS=0
TUSBAS1=0
TUSBAS2=0

SYMBOL TUSA=PORTB.0
SYMBOL TUSB=PORTB.1
SYMBOL TUSC=PORTB.2
SYMBOL TUSD=PORTB.3
SYMBOL TUSE=PORTB.4
SYMBOL TUSF=PORTB.5
SYMBOL TUSG=PORTB.6
SYMBOL TUSH=PORTB.7

SYMBOL TUSM=PORTE.0
SYMBOL TUSN=PORTE.1
SYMBOL TUSO=PORTE.2

SYMBOL LED=PORTA.0
SYMBOL LED1=PORTA.1
SYMBOL LED2=PORTA.2


PAUSE 500

BASLA:
    IF TUSH=0 THEN
    PAUSE 50
    IF I=1 THEN BASLA
    IF KONUM=255 THEN BASLA
    KONUM=KONUM+1:I=1:GOTO CIK
    while TUSH=0:WEND
    ENDIF   
   
   
    IF TUSG=0 THEN
    PAUSE 50
    IF I=1 THEN BASLA
    IF KONUM=0 THEN BASLA
    KONUM=KONUM-1:I=1:GOTO CIK
    while TUSG=0:WEND   
    ENDIF
   
   
    IF TUSF=0 THEN
    PAUSE 50
    IF I=1 THEN BASLA
    IF KONUM=255 THEN BASLA
    KONUM=KONUM+1:I=1:GOTO CIK
    while TUSF=0:WEND   
    ENDIF       
   
   
    IF TUSE=0 THEN
    PAUSE 50
    IF I=1 THEN BASLA
    IF KONUM=0 THEN BASLA
    KONUM=KONUM-1:I=1:GOTO CIK
    while TUSE=0:WEND   
    ENDIF
   
       
    IF TUSD=0 THEN
    PAUSE 50
    IF Y=1 THEN BASLA
    IF KONUM1=255 THEN BASLA
    KONUM1=KONUM1+1:Y=1:GOTO CIK1
    while TUSD=0:WEND   
    ENDIF
   
   
    IF TUSC=0 THEN
    PAUSE 50
    IF Y=1 THEN BASLA
    IF KONUM1=0 THEN BASLA
    KONUM1=KONUM1-1:Y=1:GOTO CIK1
    while TUSC=0:WEND   
    ENDIF
   
   
    IF TUSB=0 THEN
    PAUSE 50
    IF Y=1 THEN BASLA
    IF KONUM1=255 THEN BASLA
    KONUM1=KONUM1+1:Y=1:GOTO CIK1
    while TUSB=0:WEND   
    ENDIF
   
   
   
    IF TUSA=0 THEN
    PAUSE 50
    IF Y=1 THEN BASLA
    IF KONUM1=0 THEN BASLA
    KONUM1=KONUM1-1:Y=1:GOTO CIK1
    while TUSA=0:WEND   
    ENDIF     
   
    IF TUSM=0 THEN
    GOSUB LEDYAK
    ENDIF
   
    IF TUSN=0 THEN
    GOSUB LEDYAK1
    ENDIF
   
    IF TUSO=0 THEN
    GOSUB LEDYAK2 
    ENDIF
   
   
    GOTO BASLA
   
   

CIK:   
     IF RAW<>KONUM THEN GOSUB POTYAZ
     I=0
     GOTO BASLA
       
CIK1:   
     IF STK<>KONUM1 THEN GOSUB POTYAZ1
     Y=0
     GOTO BASLA   
   


LEDYAK:
   
    TOGGLE LED
    RETURN

LEDYAK1:
   
    TOGGLE LED1
    RETURN

LEDYAK2:
   
    TOGGLE LED2   
    RETURN

POTYAZ:
    HIGH RST:PAUSE 1
    HIGH BILGI
    PULSOUT CLK,1
    SHIFTOUT BILGI,CLK,1,[KONUM]
    SHIFTOUT BILGI,CLK,1,[KONUM]   
    LOW RST:PAUSE 1
    RAW=KONUM
    RETURN

POTYAZ1:
    HIGH RST1:PAUSE 1
    HIGH BILGI1
    PULSOUT CLK1,1
    SHIFTOUT BILGI1,CLK1,1,[KONUM1]
    SHIFTOUT BILGI1,CLK1,1,[KONUM1]   
    LOW RST1:PAUSE 1
    RAW=KONUM
    RETURN
GOTO BASLA
END
         



hex kodu ile simülasyon ekte!..


ete

#1
Pot kısmı ;
HIGH BILGI komut satırı yüzünden çalışmıyor. Bu satır;
LOW BILGI  şeklinde olmalı.
Geri kısmı çalışıyor.
Buton kontrolü ve pot'a yazma kısmını aşağıdaki gibi yaparsan daha doğru olur gibi geliyor. Tercih senin.
    IF TUSA=0 THEN     
    KONUM=KONUM+1:IF KONUM=255 THEN BASLA
    gosub POTYAZ
    while TUSa=0:WEND
    Pause 50
    ENDIF


Ete

huseyin0579

Hocam dijital pot entegresine verilen değerlerin ayrıca pic eeprom hafızasına yazdırılması mantıklı değil doğrumudur? Pot entegresindeki shift register verilen kontrol bilgisine göre konum değiştiriyor ve devre enerjisi kesilip yeniden gelirse ensonki değerler ile çalışıyor. Pot entegresi 1k değerinde kaldıysa enerjisi kesilip yeniden verildiğinde sıfırlama yapmaz neyse denemesini yaparım. Hocam 0 ile 255 arasındaki değerlere göre eş zamanlı bar artışı için uygulama örneği verebilir'misiniz. Çok teşekkür ediyorum. Kolay gelsin.... 

huseyin0579

Hocam bir konuda ayrıca bilgi almak istiyorum. Siz 24f ve 33 serisi picler ile çalışıyormusunuz? Bu soruyu sormamdaki neden microbasic derleyicisinde stm32 ve benzeri denetleyiciler için yazılım yapılabiliyor yani picbasic derleyicisindeki kısıtlamalar ve sorunlar profesyonel yazılım tekniği ilerledikçe yazılım dili değiştirmenin anlamı yok gibi c dili v.b hocam kısacası belirli bir zaman sonrasında microbasic ile devam edeyimmi? gerekirse c dilide öğrenmek isterim ama iş iyice karışıyor hem sizide uzun zamandır takip ediyoruz c diline geçmek isteseniz bu iş çok uzun sürmezdi. Teknik bilgi ve sorun çözümleme özelliği buna mantık yürütme hepsi birarada, maşaallah diyelim!...peşinizden geliyoruz. Hocam ayrıca matematiğiniz çok iyi sevide zaten bu işte kim ne derse desin matematik zayıf olmayacak Hocam size nacizhane tavsiyem bizlere mantık komutları ile ilgili kısada olsa uygulamalı ders verebilir'misiniz.

ete

Bahsi geçen denetleyiciler ile çalışmıyorum. Basic derleyicisi yalnızca 12-16-18F serisi ile çalışıyor.
Diğerleri için derleyici değiştirmek gerekiyor. Aslında C dili bütün hepsi için kullanılacak nitelikte. Ne yazıkki çok kıvrak bir dil değil. Şu anda söylediğim denetleyicilere istediğimi yaptırabiliyorum. Ancak zaman zaman benimde sıkıntılarım oluyor. Bu yüzden C diline sıcak bakıyorum ancak dil değiştirmek öyle kolay bir iş değil. Bu bakımdan niyet var ise şimdiden geçmeni tavsiye ederim.
Genel matematiğim ve mantık bilgim fena değil. Elimden geldiğince kullanıyor ve örneklemeye çalışıyorum kullandıklarımı. Mantık komutları genel anlamda ders notlarında işlenmiş idi. Özellikle bilmek istediklerin var ise belirt ilave açıklama yapayım.

Bu arada bar uygulaması sanırım daha önceden vermiş idim sitede önce bir araştır. Bulamaz isen mantığını en azından tekrar açıklayayım.
http://etepic.com/index.php/topic,223.0.html
Bu linke bak bu sistemi orada kullanmış idim.

Ete

huseyin0579

#5
Hocam kodu bahsettiğiniz şekilde düzenledim. Simülasyonda 10k pot değerleri en yüksek 5k olarak görülüyor. Hocam Pot entegresinde 2 adet 10k pot mevcut bu potlardan bir tanesini ayarlayabiliyorum diğerinde ilgili butonlar ile değişim olmuyor. raw değişken değeri byte şeklinde bunu word yaptım hocam aslında aklıma bir şey geliyor ama bu alt adres ve üst adres değişken değeri veya kısaca pota gönderilen data bilgisindeki 16 bitlik bilgi gönderimi bu şekildemi yapıyım nasıl olacak!....
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2016 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 25.01.2016                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2016 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 24.01.2016                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
asm
    __CONFIG _CONFIG1H, _OSCS_OFF_1H & _XT_OSC_1H  ;  _HSPLL_OSC_1H       
    __CONFIG _CONFIG2L, _BOR_ON_2L  & _BORV_20_2L & _PWRT_OFF_2L
    __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
    __CONFIG _CONFIG3H, _CCP2MX_ON_3H
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
;    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
    __CONFIG _CONFIG5L, _CP0_ON_5L & _CP1_ON_5L & _CP2_ON_5L & _CP3_ON_5L
;    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    __CONFIG _CONFIG5H, _CPB_ON_5H & _CPD_ON_5H   
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H
   

endasm

DEFINE OSC 20


I VAR BYTE
Y VAR BYTE
T VAR BYTE
KONUM VAR BYTE
KONUM1 VAR BYTE
RAW VAR WORD
STK VAR BYTE
TUSBAS var byte
TUSBAS1 VAR BYTE
TUSBAS2 VAR BYTE

PortA=0:TrisA=%00000000 'portA yı sıfırladık ve pinleri çıkış olarak ayarladık
PortB=0:TrisB=%11111111 'portB yi sıfırladık ve pinleri çıkış olarak ayarladık
PortC=0:TrisC=%00000000 'portC yi sıfırladık ve pinleri çıkış olarak ayarladık
PortD=0:TrisD=%00000000 'portD yi sıfırladık ve PortD.0 'ı giriş olarak ayarladık
PortE=0:TRisE=%00000111 'portE yi sıfırladık ve pinleri çıkış olarak ayarladık

RST     VAR PORTD.2
RST1    VAR PORTD.3
CLK     VAR PORTD.4
CLK1    VAR PORTD.5
BILGI   VAR PORTD.6
BILGI1  VAR PORTD.7


I=0
Y=0
KONUM=0
KONUM1=0
RAW=0
STK=0
TUSBAS=0
TUSBAS1=0
TUSBAS2=0

SYMBOL TUSA=PORTB.0
SYMBOL TUSB=PORTB.1
SYMBOL TUSC=PORTB.2
SYMBOL TUSD=PORTB.3
SYMBOL TUSE=PORTB.4
SYMBOL TUSF=PORTB.5
SYMBOL TUSG=PORTB.6
SYMBOL TUSH=PORTB.7

SYMBOL TUSM=PORTE.0
SYMBOL TUSN=PORTE.1
SYMBOL TUSO=PORTE.2

SYMBOL LED=PORTA.0
SYMBOL LED1=PORTA.1
SYMBOL LED2=PORTA.2


PAUSE 500

BASLA:
    IF TUSH=0 THEN
    PAUSE 50
    IF I=1 THEN BASLA
    IF KONUM=255 THEN BASLA
    KONUM=KONUM+1:I=1:GOTO CIK
    while TUSH=0:WEND
    ENDIF   
   
   
    IF TUSG=0 THEN
    PAUSE 50
    IF I=1 THEN BASLA
    IF KONUM=0 THEN BASLA
    KONUM=KONUM-1:I=1:GOTO CIK
    while TUSG=0:WEND   
    ENDIF
   
   
    IF TUSF=0 THEN
    PAUSE 50
    IF I=1 THEN BASLA
    IF KONUM=255 THEN BASLA
    KONUM=KONUM+1:I=1:GOTO CIK
    while TUSF=0:WEND   
    ENDIF       
   
   
    IF TUSE=0 THEN
    PAUSE 50
    IF I=1 THEN BASLA
    IF KONUM=0 THEN BASLA
    KONUM=KONUM-1:I=1:GOTO CIK
    while TUSE=0:WEND   
    ENDIF
   
       
    IF TUSD=0 THEN
    PAUSE 50
    IF Y=1 THEN BASLA
    IF KONUM1=255 THEN BASLA
    KONUM1=KONUM1+1:Y=1:GOTO CIK1
    while TUSD=0:WEND   
    ENDIF
   
   
    IF TUSC=0 THEN
    PAUSE 50
    IF Y=1 THEN BASLA
    IF KONUM1=0 THEN BASLA
    KONUM1=KONUM1-1:Y=1:GOTO CIK1
    while TUSC=0:WEND   
    ENDIF
   
   
    IF TUSB=0 THEN
    PAUSE 50
    IF Y=1 THEN BASLA
    IF KONUM1=255 THEN BASLA
    KONUM1=KONUM1+1:Y=1:GOTO CIK1
    while TUSB=0:WEND   
    ENDIF
   
   
   
    IF TUSA=0 THEN
    PAUSE 50
    IF Y=1 THEN BASLA
    IF KONUM1=0 THEN BASLA
    KONUM1=KONUM1-1:Y=1:GOTO CIK1
    while TUSA=0:WEND   
    ENDIF     
   
    IF TUSM=0 THEN
    GOSUB LEDYAK
    ENDIF
   
    IF TUSN=0 THEN
    GOSUB LEDYAK1
    ENDIF
   
    IF TUSO=0 THEN
    GOSUB LEDYAK2 
    ENDIF
   
   
    GOTO BASLA
   
   

CIK:   
     IF RAW<>KONUM THEN GOSUB POTYAZ
     I=0
     GOTO BASLA
       
CIK1:   
     IF RAW<>KONUM1 THEN GOSUB POTYAZ1
     Y=0
     GOTO BASLA   
   


LEDYAK:
   
    TOGGLE LED
    RETURN

LEDYAK1:
   
    TOGGLE LED1
    RETURN

LEDYAK2:
   
    TOGGLE LED2   
    RETURN

POTYAZ:
    HIGH RST:PAUSE 1
    LOW BILGI
    PULSOUT CLK,1
    SHIFTOUT BILGI,CLK,1,[KONUM]
    SHIFTOUT BILGI,CLK,1,[KONUM]   
    LOW RST:PAUSE 1
    RAW=KONUM
    RETURN

POTYAZ1:
    HIGH RST1:PAUSE 1
    LOW BILGI1
    PULSOUT CLK1,1
    SHIFTOUT BILGI1,CLK1,1,[KONUM1]
    SHIFTOUT BILGI1,CLK1,1,[KONUM1]   
    LOW RST1:PAUSE 1
    RAW=KONUM
    RETURN
GOTO BASLA
END


Hocam porte pinlerindeki butonlar ile 3 adet led toggle çalışacaktı malesef yürüyen ışık şeklinde çalışıyor. Önceki uygulamalarınızdan faydalanıp dün birşeyler yapayım dedim olmadı ben yinede uğraşırım. Artık yavaş yavaş ilerleyeceğiz hocam pot entegresindeki bilgi değişikliği iki ayrı pot için word olarakmı veya iki byte değişken olarakmı nasıl olacak? mantık komutları için öğrenmek istediğim biz uzun uzun kod yazıyoruz sonuç hüsran hocam siz bu kodları daha az komutlar ile çözüyorsunuz bu özelliğiniz azda olsa uygulama örnekleri ile bizlere yansıtmanızı öneriyorum. Hocam aynı eski tebeşir tahta düzeni gibi yoksa başka türlü olmaz yani tebeşirin tahtanın tozunu yutmamız lazım öyle hazıra konmakta yok bu konuları takip edenlerde doğru yanlış katılacak'lar, benim öğrenme isteğim ve anlamıyan birisinin bile birşeyler yapabilme isteği bu konularda yanlış anlamayın ama iş yazılım bilgisi ile sınırlı değil donanım bilgiside iyi olacak yani anolog elektronik, geçenlerde pic butonuna bağlı pullup direnci breadboard üzerinde temas etmiyordu saatlerce yazılımla uğraş'tım. Yanılgı desem daha doğru olabilir. Hocam bu size çok fayda sağlayacak siz sadece yazılım mantığına odaklanın özür diliyorum ama bende dahil olmak üzere ki duruma göre bu cevabı özet olarak alıyoruz. Yani "özel projelere kapı kapalı" yanıtı hocam mantık işini nasıl geliştiririz neye bağlı bu iş!...Hocam şu özel ileti izninide verebilir'sen bir konuda görüşmek istiyorum.

ete

#6
Normalde simulasyon içinde digital pot model dosyaları yok. Bende bir yerlerden bulup kullanmış idim. Senin buldukların ile benimkiler farklı . Sen DS1868 kodları ile 1867 çalıştırıyorsun. Neticede kod farketmez ama o 1867 model dosyası doğru değil gibi geliyor bana. Zira bir zamanlar DS1868 ile uğraşır iken shift registere nasılyaıyorum görebileyim diye sisteme hem DS1868 hemde kendi uyarladığım 17 bitlik bir shift register bağlamıştım. Oradan gördümki ben doğru yazıyorum. Zaten bu deneme devrem doğru çalışıyor.
İlişikte bu dosyaları veriyorum. Ayrıca benim kullandığım model dosyalarınıda veriyorum. MODELS içindekiler simulasyon model klasörüne Library içindekilerde  sim. içindeki aynı klasöre kopyalanacak. Madem bu iş üzerinde çalışıyorsun. Bence orada bir text dosyası var. ne tarif ediyor ise onu yapman daha doğru olur. Bu komple bir paket.
Bunları yapmadan önce Sim içinde Models ve Library klasörlerinin bir kopyasını aynı yere alıver. Bir şeyler ters giderse mevcutları silip tekrar kendi dosyalarının adını düzeltip geri dönüş yapabilirsin.

PORTE ve PORTA hala analog giriş olarak gözüküyor. Analogları kapatıp pinleri digital yapmadığın için doğru çalışmıyor. Başka sebeplerde var tabiiki. Önce ;
ADCON1=7 komutunu başlarda bir yere yerleştir.
Bu arada Sigorta ayarlarında OSC komutunda yanlış. Sistem 20 Mhz de çalışıyor ama sen XT_OSC seçmişsin. Buda HS_OSC olmalı.
Sigorta ayarlarındaki ilk satırı aşağıdaki ile değiştir.
__CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H 

PortE deki tuş kontrollerini şöyle yapmalısın;
    IF TUSM=0 THEN
    TOGGLE LED   
'    PORTA=PORTA ^ %00000001  'bu TOGGLE LED komutu ile aynı işi yapar daha doğru olur.
    while tusm=0:wend  'bu satırı ilave etmezsen led yanıp söner zira program hızlı çalışır ve sürekli aynı komutu tekrarlar.
    pause 50
    ENDIF
   
    IF TUSN=0 THEN
    gosub ledyak1
'    PORTA=PORTA ^ %00000010   
    while tusn=0:wend
    pause 50   
    ENDIF
   
    IF TUSO=0 THEN
    PORTA=PORTA ^ %00000100
    while tuso=0:wend
    pause 50   
    ENDIF


Digital pot 17 bitlik bir veri ister. SPI modunda ki sen öyle kullanıyorsun MSB ilk verilir. Bu nedenle önemli olan 16+1 biti vermek. Bunu ister word+1 bit ister 8+8+1 bit şeklinde ver.
Kullandığın mevcut durumda 1+8+8 şeklinde yapıyorsun ki bu iki pota farklı değerler vermek açısından daha doğru.
Özel projelere kapı kapalı terimini bazı durumla riçin getirdim. Her gün sanada onlarca proje yap isteği gelirse sende aynısını yapardın. Ben burada bilmeyenlere ışık tutmak için varım. Özel proje üretmek için bu siteyi açmadım. Dolayısıyla amacıma ters gelen isteklerin önünü bu şekilde tıkamış oluyorum.
Özel mesajlarım açık şu anda ara ara kapatıyorum. Çünki sitede konu açarak sorulması gereken soruları ve benzer soruları direk özel mesajla soruyor pek çok kişi. Sebebini çok merak ediyorum. Utanma duygusumudur bilemiyorum ama bu site zaten bu amaçla açıldı. Bilmediğini sor bilen bir kaç kişi cvaplayabilsin. Yalnızca bir kişiye mesaj atmak niye?.
Cevap vermeyim diyorum ama onada gönlüm elvermiyor. Fırsatım oldukça özel mesajlara cevap vermeye çalışıyorum. Ama lütfen genel konuları özel mesaj ile sormayın. Adı üzerinde özel mesaj. Yani özel bir şey olması gerekir o mesajın içinde.

Mantık işi yeri geldikçe geliştirilecek bir iş. Bazı temel konular var. En başta lojik bilgiye sahip olmanız gerkiyor. Öncelike kapılar (AND - OR - XOR - NOT) nedir bunu elektronik anlamda öğrenmeniz sonra bunların BIT - BYTE üzerindeki uygulamalarınıda öğrenmeniz gerekir. Gerisi artık beyninizi işletebilme yeteneğine kalıyor. Bazen hızlı işler bazende zaman içinde bu yeteneği kazanırsınız. Buna kafanızı takmayın olmuyor diye. Olur mutlaka.

Ete



huseyin0579

Sağolasın hocam ALLAH sana uzun sağlıklı bereket'li ömür versin inşallah....

huseyin0579

Hocam bar uygulaması bahsettiğiniz bölümde pbp kodları yok hex kodu var. 4 x 20 lcd ekran ekleyecem 4 potun alacağı değerleri ekrana getirebilir'sem mucize olur artık benim için!...

ete

Örnek bar çalışması aşağıdadır. Artır Tuşu ekrandaki bar'ı artırıyor, Azalt tuşu bar sayısını azaltıryor.
4x20 Lcd ye göredir.

      IF ARTIR=0 THEN
         BAR=BAR+1
         IF BAR>20 THEN BAR=20
         WHILE ARTIR=0:WEND
         PAUSE 20
      ENDIF
     
      IF AZALT=0 THEN
         BAR=BAR-1
         IF BAR=255 THEN BAR=0
         WHILE AZALT=0 :WEND
         PAUSE 20
      ENDIF
     
      LCDOUT $fe,$80,REP 255\bar   ' bu satır yazılacak adet kadar bar şeklini ekrana basar
      LCDOUT REP 32\(20-bar)        'bu satırda sonbar karekterinden sonrakileri siler.

      PAUSE 100
      GOTO BASLA

Ete

huseyin0579

Tamam hocam örnek programı hazırlayıp ekleyecem, yalnız mikrodenetleyici 18f452 yerine pic16f877a olabilir. Düzenleyip dosyaları eklerim. Sağolasın hocam teşekkür ederim.

huseyin0579

Hocam yeni kodu hazır'ladım fakat hatalarım olabilir. Simülasyonda bahsettiğiniz proteus eklentilerini yaptım. Önceki denemelerde sorun çıkmadı. Son denemede ds1867 için uyarı veriyor, bu uyarı proteus default ayarları yani malzeme yerleşimi ile alakalı bir sorun olabilir,hex kodu hazır. Hocam porta girişleri, ilk üç pin çıkış diğer pinler anolog giriş oluyor. Anolog girişlerden ilk giriş adc0 kanalı; 15volt batarya ölçümü için 10.5v altına inerse ekranda en üst satır orta kısımda uyarı verecek, diğer iki anolog kanal girişlerine gelen 0-5v arasındaki değerlere göre lcd 2'.ci satırda ortadan sağa veya sola artış gösterecek bar çıkışı elde etmek için, anolog1 giriş sinyali geldiğinde | >>>>>>>> bu şekilde, anolog2 giriş sinyali geldiğinde <<<<<<<< | bu şekilde artacak sinyal yok iken 2'.ci satır orta noktasında | bu şekilde sabit işaret olabilir. Pot ayar'larıda 3 ve 4'cü satırda dört pota göre ayrılmış ekran gibi basılan potlar için ayarlanmış bölgede gösterilebilir veya bu gösterim 3 ve 4'.cü satırlarda sıralı gösterilebilir artık nasıl kolay olursa diyecem ama kolay değil bunu çok iyi öğrendim.

'****************************************************************
'*  Name    : DİJİTALPOTUYGULAMASI.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2016 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 25.01.2016                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16F877A
@ DEVICE pic16F877A, WDT_OFF
@ DEVICE pic16f877A, PWRT_ON
@ DEVICE pic16F877A, PROTECT_OFF
@ DEVICE pic16F877A, HS_OSC
@ DEVICE pic16F877A, BOD_ON
@ DEVICE pic16F877A, CPD_ON
@ DEVICE pic16F877A, PROTECT_ON


DEFINE OSC 20
CMCON=7
ADCON1=7
DEFINE ADC_BITS      10
DEFINE ADC_CLOCK      3
DEFINE ADC_SAMPLES   50

DEFINE LCD_DREG   PORTB ;LCD  data bacakları hangi porta bağlı?
DEFINE LCD_DBIT   4 ;LCD  data  bacakları hangi bitten başlıyor?
DEFINE LCD_RSREG  PORTB ;LCD  RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT   1 ;LCD  RS  bacağı Hangi Bite bağlı ?
define LCD_RWREG  PORTB
define LCD_RWBIT      3
DEFINE LCD_EREG   PORTB ;LCD  Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT   2 ;LCD  Enable Bacağı Hangi bite bağlı ?
DEFINE LCD_BITS   4 ;LCD 4  bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES   4 ;LCD 4 sıra yazabiliyor


TRISA=%00111000
TRISB=%00000000
TRISC=%00000000
TRISD=%11111111
TRISE=%00000111
PORTA=0
PORTB=0
PORTC=0
PORTD=0
PORTE=0


ZAMAN VAR WORD
VOLT VAR WORD
MVOLT VAR BYTE
TOPLAMVOLT VAR WORD

RAW VAR BYTE
HAM VAR BYTE
BAR VAR BYTE
BAR1 VAR BYTE
BAR2 VAR BYTE
BAR3 VAR BYTE
BAR4 VAR BYTE
BAR5 VAR BYTE
POT_0 VAR BYTE
POT_1 VAR BYTE
POT_2 VAR BYTE
POT_3 VAR BYTE
POT_4 VAR BYTE
POT_5 VAR BYTE
POT_6 VAR BYTE
POT_7 VAR BYTE
E_SIF VAR BYTE
E_BIR VAR BYTE
E_IKI VAR BYTE
E_UC VAR BYTE
E_DORT VAR BYTE
E_BES VAR BYTE
E_ALTI VAR BYTE
E_YEDI VAR BYTE
STK VAR BYTE
I VAR BYTE
TOPLAM VAR word

SYMBOL TUSA=PORTD.0
SYMBOL TUSB=PORTD.1
SYMBOL TUSC=PORTD.2
SYMBOL TUSD=PORTD.3
SYMBOL TUSE=PORTD.4
SYMBOL TUSF=PORTD.5
SYMBOL TUSG=PORTD.6
SYMBOL TUSH=PORTD.7
SYMBOL TUSI=PORTE.0
SYMBOL TUSK=PORTE.1
SYMBOL TUSL=PORTE.2

SYMBOL LED1=PORTA.0
SYMBOL LED2=PORTA.1
SYMBOL LED3=PORTA.2

SYMBOL RST=PORTC.0
SYMBOL CLK=PORTC.1
SYMBOL BILGI=PORTC.2

SYMBOL RST1=PORTC.3
SYMBOL CLK1=PORTC.4
SYMBOL BILGI1=PORTC.5

ZAMAN=0
STK=0

POT_0=0:POT_1=0:POT_2=0:POT_3=0:POT_3=0:POT_4=0:POT_5=0:POT_6=0:POT_7=0:GOSUB POT_YAZ
E_SIF=POT_0:E_BIR=POT_1:E_IKI=POT_2:E_UC=POT_3:E_DORT=POT_4:E_BES=POT_5:E_ALTI=POT_6:E_YEDI=POT_7


BASLA:     
           IF TUSA=0 THEN
               POT_0=POT_0+1:PAUSE 100
               IF POT_0=0 then POT_0=255
               POT_1=POT_1+1
               IF POT_1=0 THEN POT_1=255
               BAR=BAR+1
               IF BAR >20 THEN BAR=20
               WHILE TUSA=0:WEND:GOSUB EKRAN
               PAUSE 50
            ENDIF   
           
           IF TUSB=0 THEN
               POT_0=POT_0-1:PAUSE 100
               IF POT_0=255 then POT_0=0
               POT_1=POT_1-1
               IF POT_1=255 THEN POT_1=0
               BAR=BAR-1
               IF BAR=255 THEN BAR=0
               WHILE TUSB=0:WEND:GOSUB EKRAN
               PAUSE 50
           
            ENDIF
           
           IF TUSC=0 THEN
               POT_2=POT_2+1:PAUSE 100
               IF POT_2=0 then POT_2=255
               POT_3=POT_3+1
               IF POT_3=0 THEN POT_3=255
               BAR1=BAR1+1
               IF BAR1 >20 THEN BAR1=20
               WHILE TUSC=0:WEND:GOSUB EKRAN
               PAUSE 50
               
            ENDIF
           
           IF TUSD=0 THEN
               POT_2=POT_2-1:PAUSE 100
               IF POT_2=255 then POT_2=0
               POT_3=POT_3-1
               IF POT_3=255 THEN POT_3=0
               BAR1=BAR1-1
               IF BAR1=255 THEN BAR1=0
               WHILE TUSD=0:WEND:GOSUB EKRAN
               PAUSE 50           
            ENDIF
           
           IF TUSe=0 THEN
               POT_4=POT_4+1:PAUSE 100
               IF POT_4=0 then POT_4=255
               POT_5=POT_5+1
               IF POT_5=0 THEN POT_5=255
               BAR2=BAR2+1
               IF BAR2 >20 THEN BAR2=20
               WHILE TUSE=0:WEND:GOSUB EKRAN
               PAUSE 50                             
            ENDIF
           
           IF TUSF=0 THEN
               POT_4=POT_4-1:PAUSE 100
               IF POT_4=255 then POT_4=0
               POT_5=POT_5-1
               IF POT_5=255 THEN POT_5=0
               BAR2=BAR2-1
               IF BAR2=255 THEN BAR2=0
               WHILE TUSF=0:WEND:GOSUB EKRAN
               PAUSE 50           
            ENDIF
           
           IF TUSG=0 THEN
               POT_6=POT_6+1:PAUSE 100
               IF POT_6=0 then POT_6=255
               POT_7=POT_7+1
               IF POT_7=0 THEN POT_7=255
               BAR3=BAR3+1
               IF BAR3 >20 THEN BAR3=20
               WHILE TUSG=0:WEND:GOSUB EKRAN
               PAUSE 50                 
            ENDIF
           
           IF TUSH=0 THEN
               POT_6=POT_6-1:PAUSE 100
               IF POT_6=255 then POT_6=0
               POT_7=POT_7-1
               IF POT_7=255 THEN POT_7=0
               BAR3=BAR3-1
               IF BAR3=255 THEN BAR3=0
               WHILE TUSH=0:WEND:GOSUB EKRAN
               PAUSE 50
           
           
            ENDIF
           
           IF TUSI=0 THEN
           PORTE=PORTE ^ %00000001
           WHILE TUSK=0:WEND
           PAUSE 50
           ENDIF
           
           IF TUSK=0 THEN
           PORTE=PORTE ^ %00000010
           WHILE TUSL=0:WEND
           PAUSE 50
           ENDIF
           
           IF TUSL=0 THEN
           PORTE=PORTE ^ %00000100
           WHILE TUSL=0:WEND
           PAUSE 50
           ENDIF
               
    IF (E_SIF=POT_0) AND (E_BIR=POT_1) AND (E_IKI=POT_2) AND (E_UC=POT_3) AND (E_DORT=POT_4) AND (E_BES=POT_5) AND (E_ALTI=POT_6) AND (E_YEDI=POT_7) THEN BASLA   
                       
    GOSUB POT_YAZ
   
    GOTO BASLA
           
            RAW=0:HAM=0:TOPLAM=0
            FOR I=1 TO 10
            ADCIN 0,RAW 
BAK:        if ADCON0.2=1 then bak             
            TOPLAM=TOPLAM+RAW
            NEXT I:RAW=TOPLAM/10
           
            TOPLAM=0
            FOR I=1 TO 10
            ADCIN 1, HAM
YINE:       IF ADCON0.2=1 THEN YINE
            TOPLAM=TOPLAM+HAM
            NEXT I:HAM=TOPLAM/10
           
            IF RAW<15 THEN BASLA
               IF HAM<127 THEN
                  ZAMAN=(265-RAW)*(4-(127-HAM)/64)
                  GOTO CIK
               ENDIF
            ZAMAN=(265-RAW)*(4+(HAM-127)/64) 'bu digital pot için kademe atlama pause olacak.
CIK:       IF (POT_0=0) AND (POT_1=0) AND (POT_2=0) AND (POT_3=0) AND (POT_4=0)_
            AND (POT_5=0) AND (POT_6=0) AND (POT_7=0) THEN BASLA
            IF STK=1 THEN
                POT_1=POT_1-1
                GOSUB POT_YAZ:PAUSE ZAMAN /1000
                IF POT_1=0 THEN STK=0
             ENDIF
             IF STK=0 THEN 
                POT_0=POT_0-1
                GOSUB POT_YAZ:PAUSE ZAMAN/1000
             ENDIF
'             TOGGLE LED               
             GOTO BASLA
             RETURN
POT_YAZ:     
             HIGH RST:PAUSE 1
             HIGH RST1:PAUSE 1
             low BILGI
             LOW BILGI1
             PULSOUT CLK,1
             PULSOUT CLK1,1
             SHIFTOUT BILGI1,CLK1,1,[POT_7]
             SHIFTOUT BILGI1,CLK1,1,[POT_6]
             SHIFTOUT BILGI1,CLK1,1,[POT_5]
             SHIFTOUT BILGI1,CLK1,1,[POT_4]
             SHIFTOUT BILGI,CLK,1,[POT_3]
             SHIFTOUT BILGI,CLK,1,[POT_2]
             SHIFTOUT BILGI,CLK,1,[POT_1]
             SHIFTOUT BILGI,CLK,1,[POT_0]    'Dpot1868-1
             LOW RST:PAUSE 1
             LOW RST1:PAUSE 1                                             
             E_YEDI=POT_7:E_ALTI=POT_6:E_BES=POT_5:E_DORT=POT_4:E_UC=POT_3:E_IKI=POT_2:E_BIR=POT_1:E_SIF=POT_0
             RETURN
             end

EKRAN:
     LOW PORTB.2
     PAUSE 500
     LCDOUT $FE,$80,REP 255\BAR
     LCDOUT REP 32\(20-BAR)
     PAUSE 100
     GOTO BASLA
END


huseyin0579

Hocam programdaki hatalarımı sonradan görüyorum. Sizide boşa uğraştırmak istemiyorum ama tam olarak programı sorunsuz yazıp çalıştırmak zaman alıyor. Hocam porta pinlerinden ledler için çıkış almıyorum, portb ve portc'de boş kalan pinleri kullandım. Hocam analog giriş için porta tanımlaması için seçilen pinin giriş yapılması gerekiyor. Ayrıca adc kanal ayarları nasıl olacak!...adcon1 ayarları ile oluyor doğrumu? Hocam bazı sorularım mantıksız gelebilir kusura bakmayın acele edince böyle oluyor ama herşey yoluna girecek az kaldı bu programı yazacam!...

ete

Denetleyiciye göre analog kanal ayarları değişiyor. Bu nedenle data sheete bakıp anlamak gerek.
Ete

huseyin0579

Hocam yavaş da olsa ilerleme kaydediyorum, hocam sadece yönlendir'sen yeter kısa kısa şurada şu hata var gibi! Adc voltaj eklentisi v.s kademe kademe gideceğiz artık!...
'****************************************************************
'*  Name    : DİJİTALPOTUYGULAMASI.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2016 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 25.01.2016                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16F877A
@ DEVICE pic16F877A, WDT_OFF
@ DEVICE pic16f877A, PWRT_ON
@ DEVICE pic16F877A, PROTECT_OFF
@ DEVICE pic16F877A, HS_OSC
@ DEVICE pic16F877A, BOD_ON
@ DEVICE pic16F877A, CPD_ON
@ DEVICE pic16F877A, PROTECT_ON


DEFINE OSC 20
CMCON=7
ADCON1=7
OPTION_REG.7=0
ADCON1=%10000100

DEFINE ADC_BITS       8
DEFINE ADC_CLOCK      3
DEFINE ADC_SAMPLES   50

DEFINE LCD_DREG   PORTB ;LCD  data bacakları hangi porta bağlı?
DEFINE LCD_DBIT   4 ;LCD  data  bacakları hangi bitten başlıyor?
DEFINE LCD_RSREG  PORTB ;LCD  RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT   1 ;LCD  RS  bacağı Hangi Bite bağlı ?
define LCD_RWREG  PORTB
define LCD_RWBIT      2
DEFINE LCD_EREG   PORTB ;LCD  Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT   3 ;LCD  Enable Bacağı Hangi bite bağlı ?
DEFINE LCD_BITS   4 ;LCD 4  bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES   4 ;LCD 4 sıra yazabiliyor
LOW PORTB.2
PAUSE 500


TRISA=%00000111
TRISB=%00000000
TRISC=%00000000
TRISD=%11111111
TRISE=%00000111



ZAMAN VAR WORD
VOLT VAR WORD
MVOLT VAR BYTE
TOPLAMVOLT VAR WORD

RAW VAR BYTE
HAM VAR BYTE
BAR VAR BYTE
BAR1 VAR BYTE
BAR2 VAR BYTE
BAR3 VAR BYTE
BAR4 VAR BYTE
BAR5 VAR BYTE

POT_0 VAR BYTE
POT_1 VAR BYTE
POT_2 VAR BYTE
POT_3 VAR BYTE
POT_4 VAR BYTE
POT_5 VAR BYTE
POT_6 VAR BYTE
POT_7 VAR BYTE
E_SIF VAR BYTE
E_BIR VAR BYTE
E_IKI VAR BYTE
E_UC VAR BYTE
E_DORT VAR BYTE
E_BES VAR BYTE
E_ALTI VAR BYTE
E_YEDI VAR BYTE

STK VAR BYTE
I VAR BYTE
TOPLAM VAR word

SYMBOL TUSA=PORTD.0
SYMBOL TUSB=PORTD.1
SYMBOL TUSC=PORTD.2
SYMBOL TUSD=PORTD.3
SYMBOL TUSE=PORTD.4
SYMBOL TUSF=PORTD.5
SYMBOL TUSG=PORTD.6
SYMBOL TUSH=PORTD.7
SYMBOL TUSI=PORTE.0
SYMBOL TUSK=PORTE.1
SYMBOL TUSL=PORTE.2

SYMBOL LED1=PORTB.0
SYMBOL LED2=PORTC.6
SYMBOL LED3=PORTC.7

SYMBOL RST=PORTC.0
SYMBOL CLK=PORTC.1
SYMBOL BILGI=PORTC.2

SYMBOL RST1=PORTC.3
SYMBOL CLK1=PORTC.4
SYMBOL BILGI1=PORTC.5

PORTA=0
PORTB=0
PORTC=0
PORTD=0
PORTE=0

ZAMAN=0
STK=0

POT_0=0:POT_1=0:POT_2=0:POT_3=0:POT_3=0:POT_4=0:POT_5=0:POT_6=0:POT_7=0:GOSUB POT_YAZ
E_SIF=POT_0:E_BIR=POT_1:E_IKI=POT_2:E_UC=POT_3:E_DORT=POT_4:E_BES=POT_5:E_ALTI=POT_6:E_YEDI=POT_7

LCDOUT $FE,1
PAUSE 300


   LCDOUT $FE,$80,"DiJiTAL POT KONTROL"
   LCDOUT $FE,$C0,"     UYGULAMASI    "
   clear                                   
BASLA:     
           
           IF TUSA=0 THEN
               POT_0=POT_0+1:PAUSE 100
               IF POT_0=0 then POT_0=255
               POT_1=POT_1+1
               IF POT_1=0 THEN POT_1=255
               BAR=BAR+1
               IF BAR >10 THEN BAR=10             
               WHILE TUSA=0:WEND
               GOSUB EKRAN               
               PAUSE 50
               ENDIF   
           
           IF TUSB=0 THEN               
               POT_0=POT_0-1:PAUSE 100
               IF POT_0=255 then POT_0=0
               POT_1=POT_1-1
               IF POT_1=255 THEN POT_1=0
               BAR=BAR-1
               IF BAR=255 THEN BAR=0
               WHILE TUSB=0:WEND
               GOSUB EKRAN
               PAUSE 50
               ENDIF
               
               IF TUSC=0 THEN
               POT_2=POT_2+1:PAUSE 100
               IF POT_2=0 then POT_2=255
               POT_3=POT_3+1
               IF POT_3=0 THEN POT_3=255
               BAR1=BAR1+1
               IF BAR1 >10 THEN BAR1=10
               WHILE TUSC=0:WEND
               gosub EKRAN1
               PAUSE 50
               ENDIF
           
           IF TUSD=0 THEN
               POT_2=POT_2-1:PAUSE 100
               IF POT_2=255 then POT_2=0
               POT_3=POT_3-1
               IF POT_3=255 THEN POT_3=0
               BAR1=BAR1-1
               IF BAR1=255 THEN BAR1=0
               WHILE TUSD=0:WEND
               GOSUB EKRAN1
               PAUSE 50           
               ENDIF
           
           IF TUSE=0 THEN
               POT_4=POT_4+1:PAUSE 100
               IF POT_4=0 then POT_4=255
               POT_5=POT_5+1
               IF POT_5=0 THEN POT_5=255
               BAR2=BAR2+1
               IF BAR2 >10 THEN BAR2=10
               WHILE TUSE=0:WEND
               GOSUB EKRAN2
               PAUSE 50                             
               ENDIF
           
           IF TUSF=0 THEN
               POT_4=POT_4-1:PAUSE 100
               IF POT_4=255 then POT_4=0
               POT_5=POT_5-1
               IF POT_5=255 THEN POT_5=0
               BAR2=BAR2-1
               IF BAR2=255 THEN BAR2=0
               WHILE TUSF=0:WEND:GOSUB EKRAN
               GOSUB EKRAN2
               PAUSE 50           
               ENDIF
           
           IF TUSG=0 THEN
               POT_6=POT_6+1:PAUSE 100
               IF POT_6=0 then POT_6=255
               POT_7=POT_7+1
               IF POT_7=0 THEN POT_7=255
               BAR3=BAR3+1
               IF BAR3 >10 THEN BAR3=10
               WHILE TUSG=0:WEND
               GOSUB EKRAN3
               PAUSE 50                 
               ENDIF
           
           IF TUSH=0 THEN
               POT_6=POT_6-1:PAUSE 100
               IF POT_6=255 then POT_6=0
               POT_7=POT_7-1
               IF POT_7=255 THEN POT_7=0
               BAR3=BAR3-1
               IF BAR3=255 THEN BAR3=0
               WHILE TUSH=0:WEND
               GOSUB EKRAN3
               PAUSE 50
               ENDIF
           
           IF TUSI=0 THEN
           GOSUB LEDYAK
           WHILE TUSK=0:WEND
           PAUSE 100
           ENDIF
           
           IF TUSK=0 THEN
           GOSUB LEDYAK1
           WHILE TUSL=0:WEND
           PAUSE 100
           ENDIF
           
           IF TUSL=0 THEN
           GOSUB LEDYAK2
           WHILE TUSL=0:WEND
           PAUSE 100
           ENDIF
                     
IF (E_SIF=POT_0) AND (E_BIR=POT_1) AND (E_IKI=POT_2) AND (E_UC=POT_3) AND (E_DORT=POT_4) AND (E_BES=POT_5) AND (E_ALTI=POT_6) AND (E_YEDI=POT_7) THEN BASLA   
   
    GOSUB POT_YAZ 
    GOTO BASLA
     
           
            RAW=0:HAM=0:TOPLAM=0
            FOR I=1 TO 10
            ADCIN 0,RAW 
BAK:        if ADCON0.2=1 then BAK             
            TOPLAM=TOPLAM+RAW
            NEXT I:RAW=TOPLAM/10
           
            TOPLAM=0
            FOR I=1 TO 10
            ADCIN 1, HAM
YINE:       IF ADCON0.2=1 THEN YINE
            TOPLAM=TOPLAM+HAM
            NEXT I:HAM=TOPLAM/10
           
            IF RAW<15 THEN BASLA
               IF HAM<127 THEN
                  ZAMAN=(265-RAW)*(4-(127-HAM)/64)
                  GOTO CIK
               ENDIF
            ZAMAN=(265-RAW)*(4+(HAM-127)/64) 'bu digital pot için kademe atlama pause olacak.
CIK:       IF (POT_0=0) AND (POT_1=0) AND (POT_2=0) AND (POT_3=0) AND (POT_4=0)_
            AND (POT_5=0) AND (POT_6=0) AND (POT_7=0) THEN BASLA
           
           
             IF STK=1 THEN
                POT_7=POT_7-1
                GOSUB POT_YAZ:PAUSE ZAMAN /1000
                IF POT_1=0 THEN STK=0
             ENDIF
             
             IF STK=0 THEN 
                POT_6=POT_6-1
                GOSUB POT_YAZ:PAUSE ZAMAN/1000
             ENDIF
             
             IF STK=1 THEN
                POT_4=POT_5-1
                GOSUB POT_YAZ:PAUSE ZAMAN /1000
                IF POT_1=0 THEN STK=0
             ENDIF
             
             IF STK=0 THEN 
                POT_4=POT_4-1
                GOSUB POT_YAZ:PAUSE ZAMAN/1000
             ENDIF
           
             IF STK=1 THEN
                POT_3=POT_3-1
                GOSUB POT_YAZ:PAUSE ZAMAN /1000
                IF POT_1=0 THEN STK=0
             ENDIF
             
             IF STK=0 THEN 
                POT_2=POT_2-1
                GOSUB POT_YAZ:PAUSE ZAMAN/1000
             ENDIF
           
           
            IF STK=1 THEN
                POT_1=POT_1-1
                GOSUB POT_YAZ:PAUSE ZAMAN /1000
                IF POT_1=0 THEN STK=0
             ENDIF
             IF STK=0 THEN 
                POT_0=POT_0-1
                GOSUB POT_YAZ:PAUSE ZAMAN/1000
             ENDIF
'             TOGGLE LED               
             GOTO BASLA
           
EKRAN:
      LCDOUT $FE,$80," POT-1 AYARLANIYOR "
      LCDOUT $FE,$C0,"                   "
      LCDOUT $FE,$94,REP 255\BAR
      LCDOUT REP 32\(10-bar)
      pause 100
      GOTO BASLA
      CLEAR
EKRAN1:     
      LCDOUT $FE,$80," POT-2 AYARLANIYOR "
      LCDOUT $FE,$C0,"                   "
      LCDOUT $FE,$D4,rep 255\bar
      LCDOUT rep 32\(10-bar)
      pause 100
      GOTO BASLA
      CLEAR
     
EKRAN2:

      LCDOUT $FE,$80," POT-3 AYARLANIYOR "
      LCDOUT $FE,$C0,"                   "
      LCDOUT $FE,$9E,REP 255\BAR
      LCDOUT REP 32\(10-bar)
      pause 100
      GOTO BASLA
      CLEAR

EKRAN3:
     
      LCDOUT $FE,$80," POT-4 AYARLANIYOR "
      LCDOUT $FE,$C0,"                   "
      LCDOUT $FE,$DE,rep 255\bar
      LCDOUT rep 32\(10-bar)
      pause 100
      GOTO BASLA
      CLEAR
     


LEDYAK:
    PAUSE 100
    TOGGLE LED1   
    RETURN
 
LEDYAK1:
    PAUSE 100
    TOGGLE LED2
    RETURN
LEDYAK2:
    PAUSE 100
    TOGGLE LED3
    RETURN
     
   
POT_YAZ:     
             HIGH RST:PAUSE 1
             low BILGI
             HIGH RST1:PAUSE 1
             LOW BILGI1
             PULSOUT CLK,1
             PULSOUT CLK1,1
             SHIFTOUT BILGI1,CLK1,1,[POT_7]
             SHIFTOUT BILGI1,CLK1,1,[POT_6]
             SHIFTOUT BILGI1,CLK1,1,[POT_5]
             SHIFTOUT BILGI1,CLK1,1,[POT_4]
             SHIFTOUT BILGI,CLK,1,[POT_3]
             SHIFTOUT BILGI,CLK,1,[POT_2]
             SHIFTOUT BILGI,CLK,1,[POT_1]
             SHIFTOUT BILGI,CLK,1,[POT_0]    'Dpot1868-1
             LOW RST:PAUSE 1
             LOW RST1:PAUSE 1                                             
             E_YEDI=POT_7:E_ALTI=POT_6:E_BES=POT_5:E_DORT=POT_4:E_UC=POT_3:E_IKI=POT_2:E_BIR=POT_1:E_SIF=POT_0
             RETURN
             goto BASLA 
END

Powered by EzPortal