C ile Pic basic arası Bir soru

Başlatan breathness, 20 Aralık 2011, 19:37:10

breathness

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

ibrsel

#1
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..

haydarpasamikro

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
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

breathness

Bir dakika dostlar hemen deneyeyim kendi devremde

breathness

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





breathness

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

haydarpasamikro

@ 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)
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

haydarpasamikro

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.
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

haydarpasamikro

son olarak hata!
giriş butonların 5v dc generatore gidiyor. bağlantıyı ayır ve butonları gnd ye ver.
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

breathness

#9
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

breathness




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

haydarpasamikro

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.
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

breathness


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   




@ 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

haydarpasamikro

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.
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

haydarpasamikro

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.
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi