Merhaba dostlar
balıkesir"den selamlar
Baü Myo Elektronik haberleşme bölümlü öğrencisiyim ve geçen seneden kaldığım bir ders var onun içinde bu projeyi teslim etmem lazım
elektronik kumbara yapıyorum ve aşağıda 25kuruş deliğine ait sensörün komutlarını yazmaya çalışıyorum
kısaca yapmak istediğim para atıldımı atıldıysa pic16f628a nın hafızasına kaydet bu değeri lcd ekrana yazdır bunuda Pic Basic dilinde yazmam gerekiyor elimde C var biraz kafadan yazdım ama microcode hata veriyor sizden ricam
if(alici4==1){while(alici4==1); sayac+=25; LCD_yaz();}
bu C dilindeki komutun Pic Basicde ki KOdlamasını yazabilirmisiniz hemen bir satır ?¿
belki ilgi alanı olur daha detaylı bakmak isterse aşağıda kendim yazdığım kadarı ve esinlendiğim kaynak var şimdiden teşekkürler
kaynak:=> http://www.biltek.tubitak.gov.tr/gelisim/elektronik/22.htm
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 1
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
TRISA=%11111111
TRISB=%10000000
DEVICE@PIC16F628A
EWEN Con %10011
EWDS Con %10000
ERAL Con %10010
WRAL Con %10001 bunlar eepproma bilgi giriş çıkışı için kopyala yapıştır hazır aldım
ERD Con %1100
EWR Con %1010
ERASE Con %1110
PARA VAR WORD PARA değişken dedim
LCDOUT $FE,1,"DIGITAL KUMBARA" ilk satırda her zaman sabit "dijital kumbara" yazacak
PAUSE 200
BASLA:
IF PORTb.3=1 then bosalt sIFIRLA BUTONUNA BASILIMI KUMBRAYI BOŞALTTIĞIMDA BASMAK İÇİN
IF PORTA.0=1 THEN PARA=PARA+1 1 KURUŞ ATILMASI
WRITE 0,PARA
LCDOUT $FE,$CO,#PARA,"LIRA"
IF PORTA.1=1 THEN PARA=PARA+5 5 KURUŞ
WRITE 0,PARA
LCDOUT $FE,$CO,#PARA,"LIRA"
IF PORTA.2=1 THEN PARA=PARA+10 10 KRŞ
WRITE 0,PARA
LCDOUT $FE,$CO,#PARA,"LIRA"
IF PORTA.3=1 THEN PARA=PARA+25
WRITE 0,PARA 25 KRŞ
LCDOUT $FE,$CO,#PARA,"LIRA"
IF PORTBA.4=1 THEN PARA=PARA+50
WRITE 0,PARA 50 KRŞ
LCDOUT $FE,$CO,#PARA,"LIRA"
IF PORTB.0=1 THEN PARA=PARA+100 100 KRŞ
WRITE 0,PARA
LCDOUT $FE,$CO,"LIRA"
GO TO BASLA
BOSALT:
ERASE ALL EEPROMU SIFIRLA
LCDOUT $FE,$CO,#PARA,"LIRA" EKRANA PARA MİKTARINI YAZDIR
GOTO BASLA BAŞA DÖN
Alıntı Yap
If alici4=1 Then
While alici4=1
sayac=sayac+25
Gosub LCDYaz
Wend
EndIf
Not: LCDYaz diye bir alt programının olması gerekiyor. C kodlarında orada ne yaptırdığını bilmediğim için o alt programı yazamadım..Basic e dönüştürmek için LCDYaz alt programınıda düzenlemen gerek..
DEFINE OSC 4 'OSC 4MHZ
DEFINE LCD_DREG PORTB 'LCD DATA PORTU
DEFINE LCD_DBIT 4 'LCD DATA BASLANGID PORT NO
DEFINE LCD_RSREG PORTB 'LCD RS PORTU
DEFINE LCD_RSBIT 2 'LCD RS PORT NO
DEFINE LCD_EREG PORTB 'LCD ENABLE PORTU
DEFINE LCD_EBIT 1 'LCD ENABLE PORT NO
DEFINE LCD_BITS 4 'DATA BIT SAYISI
DEFINE LCD_LINES 2 'LCD SATIR SAYISI
DEFINE LCD_COMMANDUS 2000 'LCD KOMUT BEKLEME SURESI
DEFINE LCD_DATAUS 50 'LCD DATA BEKLEME SURESI
SYMBOL SENSOR=PORTB.0 'PORTB.0 PARA SENSORU 0 --> 1 GEÇISTE AKTIF
SYMBOL SIFIRLA=PORTB.3 'SIFIRLAMA GIRISI PORTB.3
SAYAC VAR BYTE 'PARA SAYACINI TUT HAFIZADA 1 BYTE 0-255 ARASI
TRISB.3 = 1 'SIFIRLAMA GIRISI
TRISB.0 = 1 'SENSOR PINI PORTB.0 GIRIS
READ 0,SAYAC 'ILK ACILISTA EEPROMUN 0.ADRESI SAYAC DEGERINI OKU
LCDOUT $FE,1,"KUMBARA FONU:)" 'ILK KARSILAMA EKRANI
LCDOUT $FE,$C0,"SAYAC=",DEC3 SAYAC 'EPROMDAKI DEGERI EKRAN ALT SATIRA YAZ 3 BASAMAK DESIMAL
WHILE 1==1 'SONSUZ DONGU
IF SENSOR==1 THEN 'EGER SENSOR AKTIF ISE
SAYAC = SAYAC + 1 'SAYACI ARTIR
LCDOUT $FE,$C0,"SAYAC=",DEC3 SAYAC 'LCD ALT EKRANA SAYACI YAZ
WRITE 0,SAYAC 'SAYACI EEPROMA YAZ
WHILE SENSOR ==1 'SENSOR 0 SIFIRA
WEND 'DONENE KADAR BEKLE
ENDIF
IF SIFIRLA==1 THEN 'EGER SIFIRLAMA GIRISI AKTIF ISE (1)
SAYAC = 0 'AKTIF ISE SAYACI SIFIRLA
LCDOUT $FE,$C0,"SAYAC=",DEC3 SAYAC 'EKRANA YAZ
WRITE 0,SAYAC 'SAYACI EEPROMA YAZ
WHILE SIFIRLA==1 'SIFIRLAMA GIRISI PASIF OLANAN KADAR BEKLE
WEND
ENDIF
WEND
END
'yukardaki programı yazdım isis te test ettim. İşini görür umarım. pic16f84a 4mhz kristal,lm016l sembol lcd ile test ettim. 2x16 karakter lcd. rb0 portuna 1 ver. para sensörü algıla yapmış sayılır. sonra 0 a çek. tekrar 1 verirsen tekrar algılama yapmış sayılır. portb.3 e 1 verirsen dahili eepromdaki sayac saklı değerini sıfırlıyoruz. sonra tekrar 0 a çek. yani artırma için rb0, sıfırlama için rb3. lcd uçlarını yukarıda senin tanımladığın gibi.
Arslan Lüleci
Haydarpaşa Teknik EML
Bir dakika dostlar hemen deneyeyim kendi devremde
ibrsel bana pic basic lazım ki seninki bildiğim kadarıyla C dili
ben bildiklerimide söyleyeyim biz derste hocayla eğer porta.1=1 ise then reset
reset:
portb=%11111111
yap led yak lcd ye isim yazdır sadece bunları gördük
Arslan hocam while wendi pek anlamadım direk derledim 16f28a yükledim osilatörü bağladım şuan yüklediğim resimdeki gibi ekranda sadece "kumbara fonu" diye yazı çıkıyor butonlar aktif değil birde sizin programa baktım "BASLA:" gibi etiket olması lazım sanki direk başlamış pek algılayamadım kusuruma bakmayın biraz daha açık anlatırmısınız yada bu kodlarda çalışan devrede niye butonlar çalışmıyo0r olabilir
birde sizin kodlara sadece @device 16f628a ekledim microcodestüdyoda hata verdi kafanızı ağrıtacağım biraz ama yardımcı olursanız Çok makbule gececek
Esen kalın
(http://a1112.hizliresim.com/s/p/188qq.jpg) (http://bit.ly/c25MCx)
(http://a1112.hizliresim.com/s/p/188ru.jpg) (http://bit.ly/c25MCx)
hocam hatta daha anlaşılır olması için direk devremi vereyim linkten hatam belki şekildedir
http://www.dosya.tc/server8/pBysAD/ELEKTORN_KKUMBARA_ALI_MASAYFASI-fAT_H.rar.html
@ DEVICE pic16F628a, INTRC_OSC_NOCLKOUT
DEFINE LCD_DREG PORTB 'LCD DATA PORTU
DEFINE LCD_DBIT 4 'LCD DATA BASLANGID PORT NO
DEFINE LCD_RSREG PORTB 'LCD RS PORTU
DEFINE LCD_RSBIT 2 'LCD RS PORT NO
DEFINE LCD_EREG PORTB 'LCD ENABLE PORTU
DEFINE LCD_EBIT 1 'LCD ENABLE PORT NO
DEFINE LCD_BITS 4 'DATA BIT SAYISI
DEFINE LCD_LINES 2 'LCD SATIR SAYISI
DEFINE LCD_COMMANDUS 2000 'LCD KOMUT BEKLEME SURESI
DEFINE LCD_DATAUS 50 'LCD DATA BEKLEME SURESI
SYMBOL SENSOR=PORTB.0 'PORTB.0 PARA SENSORU 0 --> 1 GEÇISTE AKTIF
SYMBOL SIFIRLA=PORTB.3 'SIFIRLAMA GIRISI PORTB.3
SAYAC VAR BYTE 'PARA SAYACINI TUT HAFIZADA 1 BYTE 0-255 ARASI
CMCON = 7
TRISB.3 = 1 'SIFIRLAMA GIRISI
TRISB.0 = 1 'SENSOR PINI PORTB.0 GIRIS
READ 0,SAYAC 'ILK ACILISTA EEPROMUN 0.ADRESI SAYAC DEGERINI OKU
LCDOUT $FE,1,"KUMBARA FONU:)" 'ILK KARSILAMA EKRANI
LCDOUT $FE,$C0,"SAYAC=",DEC3 SAYAC 'EPROMDAKI DEGERI EKRAN ALT SATIRA YAZ 3 BASAMAK DESIMAL
WHILE 1==1 'SONSUZ DONGU
IF SENSOR==1 THEN 'EGER SENSOR AKTIF ISE
SAYAC = SAYAC + 1 'SAYACI ARTIR
LCDOUT $FE,$C0,"SAYAC=",DEC3 SAYAC 'LCD ALT EKRANA SAYACI YAZ
WRITE 0,SAYAC 'SAYACI EEPROMA YAZ
WHILE SENSOR ==1 'SENSOR 0 SIFIRA
WEND 'DONENE KADAR BEKLE
ENDIF
IF SIFIRLA==1 THEN 'EGER SIFIRLAMA GIRISI AKTIF ISE (1)
SAYAC = 0 'AKTIF ISE SAYACI SIFIRLA
LCDOUT $FE,$C0,"SAYAC=",DEC3 SAYAC 'EKRANA YAZ
WRITE 0,SAYAC 'SAYACI EEPROMA YAZ
WHILE SIFIRLA==1 'SIFIRLAMA GIRISI PASIF OLANAN KADAR BEKLE
WEND
ENDIF
WEND
END
senin kurduğun devrede simülasyon için portlara değer gelmiyor. çünkü 7404 lü sürücü devre çıkış üretmiyor. gerçekde çalışabilir. ancak isis simülasyonda çalışmaz. en basit denemek için rb0 portu ile +5v arasına buton ve port ile eksi arasına 10k pulldown direnci koy. aynısını rb3 portu için de yap. rb0 portu saydırmak için rb3 port sıfırlamak için. pic16f628a için programın başına dahili rc osilatörü kurmak için satır ekledim(@ DEVICE pic16F628a, INTRC_OSC_NOCLKOUT). bir de sen porta yı dijital kullanabilmen için comparatörü.kapattık(cmcon=7)
bir de pic16f628a nın besleme uçları VDD ve VSS kaynaklarına bağlı. bu sebeple not kapılarının girişinde kullandığın 10k pullup dirençlerini beslediğin 5v dc generatoru kaldırıp isis terminal modu ndaki power sembolünü kullan.
son olarak hata!
giriş butonların 5v dc generatore gidiyor. bağlantıyı ayır ve butonları gnd ye ver.
hocam sensörler analog çıkışlı bildiğim kadarıyla bunları elektroniksel olarak lojik 1 ve sıfır algılaması için 74hc14n i kullanıyoruz, dediğiniz gibi bağlantıları ayırdım 10k.lık potları koydum, terminal sekmesinden POWER kullandım dediğiniz gibi basit mantık buton pull down yaptım, anlamadığım benim aldığım kaynakdaki devre şemasında giriş butonları aynı benim önceki bağladığım gibi bağlı şimdi aynı işlev nasıl olacak, ve SAYAC ı BYTe olarak tanımladık 6 liraya kadar sayması lazım bu aletin SAYAC VAR WORD dememiz lazım sanki
ve sizin verdiğiniz kodlardaki buton kısmını bütün madeni paralar için yazdım ayar çekerek yine aynı hata oldu ekranda kumbura fonu sayac yazıyor butonlar yine servis dışı neresini atladım hala çözemedim
(http://c1112.hizliresim.com/s/q/18xfx.jpg) (http://bit.ly/c25MCx)
http://www.dosya.tc/server8/IlRQaS/Kumbra_al__maBAl_kesiR.rar.html (http://www.dosya.tc/server8/IlRQaS/Kumbra_al__maBAl_kesiR.rar.html)
dosyaları eklemeyi unutmuşum şöyle, yani aldığım devre şemasımı yanlış tübitakda geçiyor gerçi kesin ben yanlış bağlamışımdır simülasyonla gerçek arasında çok fark var herhal
cny17 ler önlerine engel gelirse çıkış kollektörü 0 olur ve 7414 not işlemi sonunda pic portlarına 1 gelmiş olur. Yani isis te bunu canlandırmak için bir butonla porta 5V verebilirsin. Butona basınca 5v, basmazsa 10k pulldown direnci ile eksi vermen gerek. Şemada dirençleri butondan önce eksiye vermişsin.Hata! Butondan sonra port ile eksi arasına gelmesi gerekirdi. Rb3 deki butonda da benzer sıkıntı var. Bunları düzeltirsen gerisi programı istediğin gibi ayarla. ben denedim ok.
Hocam çok başınızı ağrıttım ama sizin verdiğiniz kodları Whıle sonsuz döngüsüyle yaptım devreyi düzelttim butonları pull up pull down yerlerini dğeiştirdim çalıştırdım çalışma modunda iken sadece buton bir çalışıyor oda kararsız bir kere basıyorum 15 arttırıyor ikinciye basıyorum değer değişmiyor mcRL ucu boş ondanmı dedim orayı doldurdum, nerede hata yapıyorum bir türlü çözemedim
(http://b1112.hizliresim.com/s/s/1b3qg.jpg) (http://bit.ly/c25MCx)
@ DEVICE pic16F628a, INTRC_OSC_NOCLKOUT
DEFINE LCD_DREG PORTB 'LCD DATA PORTU
DEFINE LCD_DBIT 4 'LCD DATA BASLANGID PORT NO
DEFINE LCD_RSREG PORTB 'LCD RS PORTU
DEFINE LCD_RSBIT 2 'LCD RS PORT NO
DEFINE LCD_EREG PORTB 'LCD ENABLE PORTU
DEFINE LCD_EBIT 1 'LCD ENABLE PORT NO
DEFINE LCD_BITS 4 'DATA BIT SAYISI
DEFINE LCD_LINES 2 'LCD SATIR SAYISI
DEFINE LCD_COMMANDUS 2000 'LCD KOMUT BEKLEME SURESI
DEFINE LCD_DATAUS 50 'LCD DATA BEKLEME SURESI
SYMBOL SENSOR=PORTA.0 'PORTB.0 PARA SENSORU 0 --> 1 GEÇISTE AKTIF
SYMBOL SENSORQ=PORTA.1
SYMBOL SENSORW=PORTA.2
SYMBOL SENSORE=PORTA.3
SYMBOL SENSORR=PORTA.4
SYMBOL SENSORT=PORTB.0
SYMBOL SIFIRLA=PORTB.3 'SIFIRLAMA GIRISI PORTB.3
SAYAC VAR WORD
CMCON = 7
TRISA=%11111111
TRISB=%10010000
READ 0,SAYAC 'ILK ACILISTA EEPROMUN 0.ADRESI SAYAC DEGERINI OKU
LCDOUT $FE,1,"KUMBARA FONU:)" 'ILK KARSILAMA EKRANI
LCDOUT $FE,$C0,"SAYAC=",DEC5 SAYAC 'EPROMDAKI DEGERI EKRAN ALT SATIRA YAZ 3 BASAMAK DESIMAL
BASLA: 'SONSUZ DONGU
IF SENSOR==1 THEN 'EGER SENSOR AKTIF ISE
SAYAC = SAYAC + 1 'SAYACI ARTIR
LCDOUT $FE,$C0,"SAYAC=",DEC5 SAYAC 'LCD ALT EKRANA SAYACI YAZ
WRITE 0,SAYAC 'SAYACI EEPROMA YAZ
WHILE SENSOR ==1 'SENSOR 0 SIFIRA
WEND 'DONENE KADAR BEKLE
ENDIF
IF SENSORQ==1 THEN 'EGER SENSOR AKTIF ISE
SAYAC = SAYAC + 5 'SAYACI ARTIR
LCDOUT $FE,$C0,"SAYAC=",DEC5 SAYAC 'LCD ALT EKRANA SAYACI YAZ
WRITE 0,SAYAC 'SAYACI EEPROMA YAZ
WHILE SENSOR ==1 'SENSOR 0 SIFIRA
WEND 'DONENE KADAR BEKLE
ENDIF
IF SENSORW==1 THEN 'EGER SENSOR AKTIF ISE
SAYAC = SAYAC + 10 'SAYACI ARTIR
LCDOUT $FE,$C0,"SAYAC=",DEC5 SAYAC
pause 3000 'LCD ALT EKRANA SAYACI YAZ
WRITE 0,SAYAC 'SAYACI EEPROMA YAZ
WHILE SENSOR ==1 'SENSOR 0 SIFIRA
WEND 'DONENE KADAR BEKLE
ENDIF
IF SENSORE==1 THEN 'EGER SENSOR AKTIF ISE
SAYAC = SAYAC + 25 'SAYACI ARTIR
LCDOUT $FE,$C0,"SAYAC=",DEC5 SAYAC 'LCD ALT EKRANA SAYACI YAZ
WRITE 0,SAYAC 'SAYACI EEPROMA YAZ
WHILE SENSOR ==1 'SENSOR 0 SIFIRA
WEND 'DONENE KADAR BEKLE
ENDIF
IF SENSORR==1 THEN 'EGER SENSOR AKTIF ISE
SAYAC = SAYAC + 50 'SAYACI ARTIR
LCDOUT $FE,$C0,"SAYAC=",DEC5 SAYAC 'LCD ALT EKRANA SAYACI YAZ
WRITE 0,SAYAC 'SAYACI EEPROMA YAZ
WHILE SENSOR ==1 'SENSOR 0 SIFIRA
WEND 'DONENE KADAR BEKLE
ENDIF
IF SENSORT==1 THEN 'EGER SENSOR AKTIF ISE
SAYAC = SAYAC + 100 'SAYACI ARTIR
LCDOUT $FE,$C0,"SAYAC=",DEC5 SAYAC 'LCD ALT EKRANA SAYACI YAZ
WRITE 0,SAYAC 'SAYACI EEPROMA YAZ
WHILE SENSOR ==1 'SENSOR 0 SIFIRA
WEND 'DONENE KADAR BEKLE
ENDIF
IF SIFIRLA==1 THEN 'EGER SIFIRLAMA GIRISI AKTIF ISE (1)
SAYAC = 0 'AKTIF ISE SAYACI SIFIRLA
LCDOUT $FE,$C0,"SAYAC=",DEC5 SAYAC 'EKRANA YAZ
WRITE 0,SAYAC 'SAYACI EEPROMA YAZ
WHILE SIFIRLA==1 'SIFIRLAMA GIRISI PASIF OLANAN KADAR BEKLE
WEND
ENDIF
GOTO BASLA
her para deliği için kodları kopyalarken bir yerde dizin hatası oldu herhal
hatta üstüne sizinkilerle kendiminkileri karıştırıp bir kod yazdım aşağıda microcode de hata vermeden derledi bu seferde ekranda kurus=00000 Hiç butona basmadan daha 100er 100er saymaya geçiyor
İnsanın beynini sudokudan daha fazla yoran birşeymiş bu iş bunu anladım
@ DEVICE pic16F628a, INTRC_OSC_NOCLKOUT
DEFINE LCD_DREG PORTB 'LCD DATA PORTU
DEFINE LCD_DBIT 4 'LCD DATA BASLANGID PORT NO
DEFINE LCD_RSREG PORTB 'LCD RS PORTU
DEFINE LCD_RSBIT 2 'LCD RS PORT NO
DEFINE LCD_EREG PORTB 'LCD ENABLE PORTU
DEFINE LCD_EBIT 1 'LCD ENABLE PORT NO
DEFINE LCD_BITS 4 'DATA BIT SAYISI
DEFINE LCD_LINES 2 'LCD SATIR SAYISI
DEFINE LCD_COMMANDUS 2000 'LCD KOMUT BEKLEME SURESI
DEFINE LCD_DATAUS 50 'LCD DATA BEKLEME SURESI
SYMBOL SENSOR=PORTA.0 'PORTB.0 PARA SENSORU 0 --> 1 GEÇISTE AKTIF
SYMBOL SENSORQ=PORTA.1
SYMBOL SENSORW=PORTA.2
SYMBOL SENSORE=PORTA.3
SYMBOL SENSORR=PORTA.4
SYMBOL SENSORT=PORTB.0
SYMBOL SIFIRLA=PORTB.3 'SIFIRLAMA GIRISI PORTB.3
SAYAC VAR WORD 'PARA SAYACINI TUT HAFIZADA 1 BYTE 0-255 ARASI
CMCON = 7
TRISA=%11111111 'SIFIRLAMA GIRISI
TRISB=%10010000 'SENSOR PINI PORTB.0 GIRIS
READ 0,SAYAC 'ILK ACILISTA EEPROMUN 0.ADRESI SAYAC DEGERINI OKU
LCDOUT $FE,1,"KUMBARA FONU:)" 'ILK KARSILAMA EKRANI
LCDOUT $FE,$C0,"SAYAC=",DEC5 SAYAC
PARA VAR WORD
LCDOUT $FE,1,"DIGITAL KUMBARA"
PAUSE 200
BASLA:
IF SIFIRLA=1 THEN BOSALT
IF SENSOR=1 THEN PARA=PARA+1
WRITE 0,PARA
LCDOUT $FE,$C0,"kurus=",DEC5 para
IF SENSORQ=1 THEN PARA=PARA+5
WRITE 0,PARA
LCDOUT $FE,$C0,"kurus=",DEC5 para
IF SENSORW=1 THEN PARA=PARA+10
WRITE 0,PARA
LCDOUT $FE,$C0,"kurus=",DEC5 para
IF SENSORE=1 THEN PARA=PARA+25
WRITE 0,PARA
LCDOUT $FE,$C0,"kurus=",DEC5 para
IF SENSORR=1 THEN PARA=PARA+50
WRITE 0,PARA
LCDOUT $FE,$C0,"kurus=",DEC5 para
IF SENSORT=1 THEN PARA=PARA+100
WRITE 0,PARA
LCDOUT $FE,$C0,"kurus=",DEC5 para
GOTO BASLA
BOSALT:
WRITE 0,0
LCDOUT $FE,$C0,"kurus=",DEC5 para
GOTO BASLA
IF SENSOR=1 THEN PARA=PARA+1
WRITE 0,PARA
LCDOUT $FE,$C0,"kurus=",DEC5 para
ve altındaki buton testlerini şöyle yap.
IF SENSORx=1 THEN //x HERNHANGİ TEST ETTİĞİN SENSÖR
PARA=PARA+1
WRITE 0,PARA
LCDOUT $FE,$C0,"kurus=",DEC5 para
BIRAKMADIx:
IF SENSORX=1 THEN GOTO BIRAKMADIx //TUŞU BIRAKMASINI BEKLE. TUŞA BIRAKINCA DEVAM ET.
ENDIF
Yukarıda görüldüğü gibi tuşu basılınca işlem mikrosaniyeler hızında mikro tarafından yürütülür. Tuşu bırakmasını dahi doğrusu sensörün eski konuma dönmesi beklenir. Yoksa birçok kez aynı işi yapar. Ekranda yüzlerce kez if bloğuna girmiş olur.
bir de 6 tane pullup dirençlerini butonları sağ tarafına al. yani direk portlara gelmesi lazım. öbür tek duran butona bağlı direnç de direk port ile power arasına bağla.
Hocam dediğinizi yaptım birazda oynadım şöyle bir kod çıkdı Allah razı olsun bu kod aşamasını tamamladık, Allah nasip ederse okulda ares e aktarıp baskı devresini yapacağım
sonucu adım adım paylaşacağım inşallah
[/code]@ DEVICE pic16f628a, INTRC_OSC_NOCLKOUT
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 1
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50
SYMBOL SIFIRLA=PORTB.3
SYMBOL SENSOR=PORTA.0
SYMBOL SENSORQ=PORTA.1
SYMBOL SENSORW=PORTA.2
SYMBOL SENSORE=PORTA.3
SYMBOL SENSORR=PORTA.4
SYMBOL SENSORT=PORTB.0
PARA VAR WORD
CMCON = 7
TRISA=%11111111
TRISB=%00001001
LCDOUT $FE,1,"KUMBARA FONU(;"
READ 0,para
LCDOUT $FE,$C0,"kurus=",DEC5 PARA
PAUSE 200
BASLA:
IF SIFIRLA=0 THEN BOSALT
IF SENSOR=0 THEN PARA=PARA+1
WRITE 0,PARA
LCDOUT $FE,$C0,"kurus=",DEC5 para
BIRAKMADI:
IF SENSOR=0 THEN GOTO BIRAKMADI
IF SENSORQ=0 THEN PARA=PARA+5
WRITE 0,PARA
LCDOUT $FE,$C0,"kurus=",DEC5 para
BIRAKMADIQ:
IF SENSORQ=0 THEN GOTO BIRAKMADIQ
IF SENSORW=0 THEN PARA=PARA+10
WRITE 0,PARA
LCDOUT $FE,$C0,"kurus=",DEC5 para
BIRAKMADIW:
IF SENSORW=0 THEN GOTO BIRAKMADIW
IF SENSORE=0 THEN PARA=PARA+25
WRITE 0,PARA
LCDOUT $FE,$C0,"kurus=",DEC5 para
BIRAKMADIE:
IF SENSORE=0 THEN GOTO BIRAKMADIE
IF SENSORR=0 THEN PARA=PARA+50
WRITE 0,PARA
LCDOUT $FE,$C0,"kurus=",DEC5 para
BIRAKMADIR:
IF SENSORR=0 THEN GOTO BIRAKMADIR
IF SENSORT=0 THEN PARA=PARA+100
WRITE 0,PARA
LCDOUT $FE,$C0,"kurus=",DEC5 para
BIRAKMADIT:
IF SENSORT=0 THEN GOTO BIRAKMADIT
GOTO BASLA
BOSALT:
PARA=0
WRITE 0,0
LCDOUT $FE,$C0,"kurus=",DEC5 PARA
GOTO BASLA
[size=78%](http://d1201.hizliresim.com/t/2/1jqx5.jpg) (http://bit.ly/c25MCx)[/size]
areside çizdim bol atlamalı oldu maşallah bugün bastım dirençleri soketleri koydum kutu kapağına lcd ve sensörleri koyması kaldı sadece cn70 sensöründede bir diyot bir foto transistor var iki EKSİ yi birleştirdim diğerlerinide devre şemasına göre bağladım devamıda gelecek inşallah
HOcam Bİrtanesiniz,
Katkımız olduysa ne mutlu bize. Başarılar..