Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

HATALI SAYMA

Başlatan cuneytsezmis1, 22 Kasım 2006, 15:01:44

cuneytsezmis1

ARKADAŞLAR.16F877 ile bir çalışma yapıyorum.bir sensörden gelen palsleri sayıp lcd ekranda gösteriyorum ama ,programımda başka yerleride kontrol ederken veya lcd ye yazma işlemi sırasında geçen zamanda  sensörden gelen palsi kaçırıyorum.NE YAPMALIYIM.pic basic pro kullayıyorum.

Veli B.

Birinci adım olarak, kodu paylaşmaya ne dersin
 :?:

cuneytsezmis1

KOD DERKEN PROGRAMI MI? PROGRAMI İSE NASIL GÖNDERMELİYİM

XX_CİHAN_XX

bu tip bir çalışma için;
1. tavsiyem picbasic yerine mümkünse C yada asm kullan.
2. tavsiyem pals sayma işini interrupt kullanarak yap.
Not : interrupt vektorunde hic oyalanmamalısın sayımını yap ve cık(gereklı degerlendırmelerı ana dpngude hallet).
Kolay gelsin...
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

XX_CİHAN_XX

Alıntı yapılan: "cuneytsezmis1"KOD DERKEN PROGRAMI MI? PROGRAMI İSE NASIL GÖNDERMELİYİM
Evet kod dan kastımız programındır.Sana daha detaylı yardım edebılmemız ıcın gondermende fayda var.Godremek ıcın kopyala yapıstır yapman yeterlı.Fakat Code tagının ıcerısıne yapıstır kodlarını.
bu sekılde
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

cuneytsezmis1

PROGRAM BİRAZ KARIŞIK.C BİLMİYORUM,ASM DE ÇOK UZUYOR.KESMELERİ KULLANMAYI DÜŞÜNDÜM AMA BİR TÜRLÜ ANLAYAMADIM.PORTB.4 Ü KULLANARAK NASIL YAPABİLİRİM.YARDIMIN İÇİN ŞİMDİDEN TEŞEKKÜRLER.

cuneytsezmis1

       Device = 16F877     ;KULLANILAN MİKRO İŞLEMCİ
        DECLARE LCD_INTERFACE 4   ;4 HAT İLE LCD BAĞLANTISI SEÇME
        DECLARE LCD_DTPIN PORTD.4 ;DATA'LAR PORTB.0 DAN BAŞLIYOR PORTB.3(DAHİL)E KADAR
        DECLARE LCD_ENPIN PORTB.5 ;LCD ENABLE ÇIKIŞI
        DECLARE LCD_RSPIN PORTB.4 ;LCD RS ÇIKIŞI
        
	


	
        DECLARE ADIN_RES 8	
	    DECLARE ADIN_TAD FRC 		

        DECLARE ADIN_DELAY 50 		
        
        
        CONFIG WDT_OFF , PWRTE_ON , XT_OSC ,BODEN_OFF ,LVP_OFF ,WRTE_OFF   ;KONFİGİRASYONLAR
        
        XTAL = 4     ;SEÇİLEN KRİSTAL 4 MHZ.
        
        
        TRISA=%11000001
        TRISB=%00000000
        TRISC=%00000000
        TRISD=%00001111
        TRISE=%00000100
        ADCON1=00001110  ;PORTA.0 ANALOG GİRİŞ
        PORTB_PULLUPS = OFF ;PORTB PULLUP DİRENÇLERİ ETKİN DEĞİL
        
        SNSKNT VAR BYTE
		
		
		VAGSAY VAR BYTE
        POTSAY VAR BYTE
        BIDSAY VAR BYTE
        BRLSAY VAR BYTE
        
        VAGAL VAR BYTE
        XAL VAR BYTE
        YAL VAR BYTE
        BRLAL VAR BYTE
        
        VAGBR VAR BYTE
        XBR VAR BYTE
        YBR VAR BYTE
        BRLBR VAR BYTE 
     
        KONT1 VAR WORD
        KONT2 VAR WORD
        KONT3 VAR BYTE
        
        HAVAKONT VAR BIT
        VSENSKONT VAR SNSKNT.0
        BIDSENSKONT VAR SNSKNT.1
        BAYSENSKONT VAR SNSKNT.2
        BRLSENSKONT VAR SNSKNT.3
        
        BLLED VAR PORTB.0
        BRLED VAR PORTB.1

        VGLED VAR PORTB.2
        VILED VAR PORTB.3

        BYLED VAR PORTB.4
        BALED VAR PORTB.5

        BGLED VAR PORTA.3
        BILED VAR PORTA.5
        
        TALED VAR PORTE.0
        TYLED VAR PORTE.1

        HAVALED VAR PORTA.2
        HIDLED  VAR PORTA.1          
        YC1   VAR PORTA.4

        
        G1 VAR PORTD.2
        G2 VAR PORTD.3
        G3 VAR PORTE.2
        G4 VAR PORTD.0
        G5 VAR PORTD.1
        


        MENUB VAR KONT1.0
        SETB VAR KONT1.1     
		UPB VAR KONT1.2
        DOWNB VAR KONT1.3
        RSTB VAR KONT1.4
		ELB VAR KONT1.5        
        TESTB VAR KONT1.6
        OTOB VAR KONT1.7
        HAVAB VAR KONT1.8 ;;KALICI NO KONTAK (0-1) 
        HIDB VAR KONT1.9 ;;KALICI NO KONTAK (0-1)           
        BAB VAR KONT1.10
        BYB VAR KONT1.11
        VIB VAR KONT1.12
        VGB VAR KONT1.13       
        BLB VAR KONT1.14
        BRB VAR KONT1.15
        BIB VAR KONT2.0
        BGB VAR KONT2.1              
        BIRAKB VAR KONT2.2		

        
		VIS VAR KONT2.3
        VGS VAR KONT2.4              
        BRS VAR KONT2.5
        BLS VAR KONT2.6
        TAS VAR KONT2.7
        TOS VAR KONT2.8
        TYS VAR KONT2.9
        DYMS VAR KONT2.10
        VSENS VAR KONT2.11
        BIDSENS VAR KONT2.12       
        BRLSENS VAR KONT2.13
        BESB VAR KONT2.14
        PALET VAR KONT2.15
        
        PORTA=0
        PORTB=0
        PORTC=0
        PORTD=0
        PORTE=0
        
BASLA1:
        GOSUB RESETLE
BASLA:
        
        
        PRINT $FE,1
        
        PORTC=%11111111
        PORTB=0
        LOW TALED
        LOW TYLED
        LOW HAVALED
        LOW HIDLED
        LOW YC1                     

        HAVAKONT=0

        PAUSE 500
        PRINT $FE,128 ;;BOM İLERİ-GERİ EKSENİ
        PRINT "x:"    ;;BOM İLERİ-GERİ EKSENİ
        PRINT $FE,139 ;;BOM SAĞ-SOL EKSENİ
        PRINT "z:"    ;;BOM SAĞ-SOL EKSENİ
        PRINT $FE,192 ;;BOM AŞAĞI-YUKARI EKSENİ
        PRINT "y:"    ;;BOM AŞAĞI-YUKARI EKSENİ
        PRINT $FE,203 ;;VAGON EKSENİ
        PRINT "v:"    ;;VAGON EKSENİ
        PRINT $FE,133 ;;
        PRINT "      "  ;;
        PRINT $FE,197 ;;
        PRINT "      "  ;;
          


ANA_PROGRAM1:
        GOSUB BUTKONT
        IF TESTB=1 THEN TEST_KONUM
        GOTO ANA_PROGRAM1

ANA_PROGRAM:
        GOSUB BUTKONT
        IF TESTB=1 THEN TEST_KONUM
        GOTO EL_KONUM
        
TEST_KONUM:
        GOSUB BUTKONT
        IF RSTB=1 THEN GOSUB RESETLE ;;RESET BUTONUNA BASILIRSA SAYAÇLAR SIFIRLANIR
        GOSUB HIDROLIK
        GOSUB HAVA
        GOSUB LCDLER
        GOSUB VAGON
        GOSUB BOM
        GOSUB DONER
        GOSUB ASAGI_YUKARI
        GOSUB TABLA
        IF PORTB<>0 OR TALED=1 OR TYLED=1 OR HAVALED=1 THEN TEST_KONUM ;;HAVA VEYA EKSENLER ÇALIŞIYORKEN TEST KONUMUNDAN ÇIKILAMAZ
        GOTO ANA_PROGRAM




        
        
EL_KONUM:;VAGON VE BOM SW VE SAYACA KADAR İLERİ GİDER.TAŞA DAYANINCA 
        VGLED=0            ;VAGON-BOM-TABLA DURUR VE ALMA SAYAÇLARI YÜKLENİR HAVA ÇALIŞTIRILIR 0,5 SN BEKLENİR
        BGLED=0            ;BOM 0,2 SN YUKARI KALDIRILIR VE DURDURULUR
        GOSUB BUTKONT
        GOSUB TABLA
        IF TESTB=1 THEN TEST_KONUM
        
        
        IF VIS=1 THEN ;VAGON İLERİ
        VILED=1
        ELSE
        VILED=0
        ENDIF
        
        IF BIDSAY<50 THEN ;BOM İLERİ
        BILED=1
        ELSE
        BILED=0
        ENDIF
        
        GOSUB LCDLER  ;EKRAN
        
		IF DYMS=1 THEN EL_KONUM ;;;TAŞ YOK=1 TAŞ VAR=0
        VILED=0
        BILED=0
        TALED=0
        TYLED=0
        
        VAGAL=VAGSAY
        XAL=BIDSAY
        YAL=POTSAY
        BRLAL=BRLSAY
        
        
        HAVALED=1
        
        PAUSE 500
        BYLED=1
        PAUSE 200
        BYLED=0
        
EL_GERI:; VAGON VE BOM SW VE SAYACA KADAR GERİ GELİR,VAGON VE BOM DURUNCA VE VAGON GERİ SW AÇILINCA
        VILED=0           ; 
        BILED=0            
        GOSUB BUTKONT
        GOSUB TABLA
        IF TESTB=1 THEN TEST_KONUM
        
        
        IF VGS=1 THEN ;VAGON GERİ
        VGLED=1
        ELSE
        VGLED=0
        ENDIF
        
        IF BIDSAY>0 THEN ;BOM GERİ
        BGLED=1
        ELSE
        BGLED=0
        ENDIF
        
        GOSUB LCDLER
		
		IF VGLED=1 OR BGLED=1 OR VGS=1 THEN EL_GERI
        VGLED=0            
        BGLED=0  
        
EL_DON:
        GOSUB BUTKONT
        GOSUB TABLA
        IF TESTB=1 THEN TEST_KONUM
        
        GOSUB LCDLER
		
		IF BRS=1 AND BLLED=0  AND VGS=0 AND VIS=1 THEN ;palete dayalı değil=0
        LOW BLLED
        HIGH BRLED
        GOTO EL_DON
        ELSE
        LOW BRLED
        ENDIF

EL_ILERI:
		GOSUB BUTKONT
        GOSUB TABLA
        IF TESTB=1 THEN TEST_KONUM
        
        
		GOSUB LCDLER
        
		IF BIB=1 AND BGLED=0 AND PALET=0 AND HIDLED=1 AND BIDSAY<50 THEN ;BOM İLERİ
        BILED=1
        ELSE
        BILED=0
        ENDIF
		
		
        IF BGB=1 AND BILED=0 AND HIDLED=1 AND BIDSAY<>0 THEN
        LOW BILED
        HIGH BGLED
        ELSE
        LOW BGLED
        ENDIF
        
        IF BAB=1 AND HIDLED=1 AND PALET=0 AND BYLED=0  THEN 
        LOW BYLED
        HIGH BALED
        ELSE
        LOW BALED
        ENDIF
        
		IF BYB=1 AND HIDLED=1 AND PALET=0 AND BALED=0  THEN
        LOW BALED
        HIGH BYLED
        ELSE
        LOW BYLED
        ENDIF
		
		IF PALET=0 OR BIRAKB=0 THEN EL_ILERI
        
		LOW HAVALED
        
		VAGBR=VAGSAY
        XBR=BIDSAY
        YBR=POTSAY
        BRLBR=BRLSAY
        
BEKLEME:        
        GOSUB BUTKONT
        IF TESTB=1 THEN TEST_KONUM
        IF OTOB=1 THEN OTO_KONUM
        GOTO BEKLEME

OTO_KONUM:   ;BOM GERİ ÇEKİLİR
       	GOSUB BUTKONT
        IF TESTB=1 THEN TEST_KONUM
        GOSUB TABLA
        
        GOSUB LCDLER
        
        IF BIDSAY>0 THEN
        LOW BILED
        HIGH BGLED
        GOTO OTO_KONUM
		ELSE
        LOW BGLED
        ENDIF
                

OTO_DON:   ;;BOM ALMA SAYACINA KADAR SOLA DÖNER

        GOSUB BUTKONT
        IF TESTB=1 THEN TEST_KONUM
        GOSUB TABLA
        
        GOSUB LCDLER
        
        IF BLS=1 AND BRLAL<>BRLSAY THEN
        BLLED=1
        GOTO OTO_DON
		ELSE
        BLLED=0
        ENDIF

OTO_AS_YUK:
        GOSUB BUTKONT
        IF TESTB=1 THEN TEST_KONUM
        GOSUB TABLA
        
        GOSUB LCDLER
		IF YAL=POTSAY THEN OTO_ILERI
		IF YAL>POTSAY THEN OTO_YUKARI
        IF YAL<POTSAY THEN OTO_ASAGI
OTO_YUKARI:
        GOSUB BUTKONT
        IF TESTB=1 THEN TEST_KONUM
        GOSUB TABLA
        
        GOSUB LCDLER

		IF YAL>POTSAY THEN
        BYLED=1
        GOTO OTO_YUKARI
		ELSE
        BYLED=0     
		GOTO OTO_ILERI
		ENDIF
        
OTO_ASAGI:
        GOSUB BUTKONT
        IF TESTB=1 THEN TEST_KONUM
        GOSUB TABLA
        
        GOSUB LCDLER
		
		IF YAL<POTSAY THEN
        BALED=1
        GOTO OTO_ASAGI
		ELSE
        BALED=0        
		ENDIF        
		
		
		
OTO_ILERI:                 ;VAGON VE BOM SW VE SAYACA KADAR İLERİ GİDER.TAŞA DAYANINCA 
        VGLED=0            ;VAGON-BOM-TABLA DURUR VE ALMA SAYAÇLARI YÜKLENİR HAVA ÇALIŞTIRILIR 0,5 SN BEKLENİR
        BGLED=0            ;BOM 0,2 SN YUKARI KALDIRILIR VE DURDURULUR
        GOSUB BUTKONT
        GOSUB TABLA
        IF TESTB=1 THEN TEST_KONUM
        
        
        IF VIS=1 THEN ;VAGON İLERİ
        VILED=1
        ELSE
        VILED=0
        ENDIF
        
        IF BIDSAY<50 THEN ;BOM İLERİ
        BILED=1
        ELSE
        BILED=0
        ENDIF
        
        GOSUB LCDLER  ;EKRAN
        
		IF DYMS=1 THEN OTO_ILERI ;;;TAŞ YOK=1 TAŞ VAR=0
        VILED=0
        BILED=0
        TALED=0
        TYLED=0
        
        VAGAL=VAGSAY
        XAL=BIDSAY
        YAL=POTSAY
        BRLAL=BRLSAY
        
        
        HAVALED=1
        
        PAUSE 500
        BYLED=1
        PAUSE 200
        BYLED=0
        
OTO_GERI:; VAGON VE BOM SW VE SAYACA KADAR GERİ GELİR,VAGON VE BOM DURUNCA VE VAGON GERİ SW AÇILINCA
        VILED=0           ; 
        BILED=0            
        GOSUB BUTKONT
        GOSUB TABLA
        IF TESTB=1 THEN TEST_KONUM
        
        
        IF VGS=1 THEN ;VAGON GERİ
        VGLED=1
        ELSE
        VGLED=0
        ENDIF
        
        IF BIDSAY>0 THEN ;BOM GERİ
        BGLED=1
        ELSE
        BGLED=0
        ENDIF
        
        GOSUB LCDLER
		
		IF VGLED=1 OR BGLED=1 OR VGS=1 THEN OTO_GERI
        VGLED=0            
        BGLED=0  


OTO_AS_YUK1:
        GOSUB BUTKONT
        IF TESTB=1 THEN TEST_KONUM
        GOSUB TABLA
        
        GOSUB LCDLER
		IF YBR=POTSAY THEN OTO_DON2
		IF YBR>POTSAY THEN OTO_YUKARI1
        IF YBR<POTSAY THEN OTO_ASAGI1
OTO_YUKARI1:
        GOSUB BUTKONT
        IF TESTB=1 THEN TEST_KONUM
        GOSUB TABLA
        
        GOSUB LCDLER

		IF YBR>POTSAY THEN
        BYLED=1
        GOTO OTO_YUKARI1
		ELSE
        BYLED=0     
		GOTO OTO_DON2
		ENDIF
        
OTO_ASAGI1:
        GOSUB BUTKONT
        IF TESTB=1 THEN TEST_KONUM
        GOSUB TABLA
        
        GOSUB LCDLER
		
		IF YAL<POTSAY THEN
        BALED=1
        GOTO OTO_ASAGI1
		ELSE
        BALED=0        
		ENDIF        
		
		
		



OTO_DON2:
        GOSUB BUTKONT
        GOSUB TABLA
        IF TESTB=1 THEN TEST_KONUM
        
        GOSUB LCDLER
		
		IF BRS=1 AND BLLED=0  AND VGS=0 AND VIS=1 THEN ;palete dayalı değil=0
        LOW BLLED
        HIGH BRLED
        GOTO OTO_DON2
        ELSE
        LOW BRLED
        ENDIF
OTO_ILERI2:     ;PALETE DAYANANA KADAR BOM İLERİ GİDER.DAYANINCA TAŞI BIRAKIR
        GOSUB BUTKONT
        GOSUB TABLA
        IF TESTB=1 THEN TEST_KONUM
        
        
		GOSUB LCDLER
        
		IF  BGLED=0 AND PALET=0 AND HIDLED=1 AND BIDSAY<50 THEN ;BOM İLERİ
        BILED=1
        ELSE
        BILED=0
        ENDIF
        IF PALET=0 THEN  OTO_ILERI2
        PAUSE 500
        HAVALED=0
        PAUSE 200
        GOTO OTO_KONUM


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;LCD BAŞLANGIÇ;;;;;;;;;;;;;;;
LCDLER:

        IF VSENS=1 AND VSENSKONT=0 AND VILED=1 THEN
        VSENSKONT=1
        VAGSAY=VAGSAY+1
        ENDIF
        IF VSENS=1 AND VSENSKONT=0 AND VGLED=1 THEN
        VSENSKONT=1
        VAGSAY=VAGSAY-1
        ENDIF
        
        
        IF VAGSAY>99 THEN
        PRINT $FE,205
        PRINT #VAGSAY
        GOTO BOMIDLCD
        ENDIF
        
        IF VAGSAY>9 THEN
        PRINT $FE,205
        PRINT "0"
        PRINT $FE,206
        PRINT #VAGSAY
        GOTO BOMIDLCD
        ENDIF
        
        PRINT $FE,205
        PRINT "00"
        PRINT $FE,207
        PRINT #VAGSAY
        


BOMIDLCD:

        IF BIDSAY>100 THEN BIDSAY=0
        IF BIDSENS=1 AND BIDSENSKONT=0 AND BILED=1 THEN
        BIDSENSKONT=1
        BIDSAY=BIDSAY+1
        ENDIF
        IF BIDSENS=1 AND BIDSENSKONT=0 AND BGLED=1 THEN
        BIDSENSKONT=1
        BIDSAY=BIDSAY-1
        ENDIF
        
        IF BIDSAY>99 THEN
        PRINT $FE,130
        PRINT #BIDSAY
        GOTO BOMAYLCD
        ENDIF
        
        IF BIDSAY>9 THEN
        PRINT $FE,130
        PRINT "0"
        PRINT $FE,131
        PRINT #BIDSAY
        GOTO BOMAYLCD
        ENDIF
        
        PRINT $FE,130
        PRINT "00"
        PRINT $FE,132
        PRINT #BIDSAY
        
        
BOMAYLCD:
        POTSAY = ADIN 0	
		IF ADCON0.2=1 THEN BOMAYLCD
		DELAYUS 1		
		


        IF  POTSAY>99 THEN
        PRINT $FE,194
        PRINT #POTSAY
        GOTO BRLLCD
        ENDIF
        
        IF POTSAY>9 THEN
        PRINT $FE,194
        PRINT "0"
        PRINT $FE,195
        PRINT #POTSAY
        GOTO BRLLCD
        ENDIF
        
        PRINT $FE,194
        PRINT "00"
        PRINT $FE,196
        PRINT #POTSAY



BRLLCD:
        IF BRLSENS=1 AND BRLSENSKONT=0 AND BRLED=1 THEN
        BRLSENSKONT=1
        BRLSAY=BRLSAY-1
        ENDIF
        IF BRLSENS=1 AND BRLSENSKONT=0 AND BLLED=1 THEN
        BRLSENSKONT=1
        BRLSAY=BRLSAY+1
        ENDIF
        
        
        IF BRLSAY>99 THEN
        PRINT $FE,141
        PRINT #BRLSAY
        RETURN
        ENDIF
        
        IF BRLSAY>9 THEN
        PRINT $FE,141
        PRINT "0"
        PRINT $FE,142
        PRINT #BRLSAY
        RETURN
        ENDIF
        
        PRINT $FE,141
        PRINT "00"
        PRINT $FE,143
        PRINT #BRLSAY
        RETURN
        
        

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;LCD BİTİŞ;;;;;;;;;;;;;;;;;;;		        
        

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;HİDROLİK BAŞLANGIÇ;;;;;;;;;;
HIDROLIK:
        IF HIDB=1 THEN
        HIGH HIDLED
        ELSE
        LOW HIDLED
        ENDIF
        RETURN
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;HİDROLİK BİTİŞ;;;;;;;;;;;;;;
        
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;HAVA BAŞLANGIÇ;;;;;;;;;;;;;;
HAVA:
        IF HAVAB=1 THEN
        HIGH HAVALED
        ELSE
        LOW HAVALED
        ENDIF
        RETURN
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;HAVA BİTİŞ;;;;;;;;;;;;;;;;;;
        
        
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;VAGON BAŞLANGIÇ;;;;;;;;;;;;;
        
VAGON:  ;VAGON YÖNÜ BLOĞA DOĞRU
        IF VIS=1 AND VIB=1 AND VGLED=0 AND DYMS=1 THEN ;;TAŞA DAYALI=0 TAŞA DAYALI DEĞİL=1
        LOW VGLED
        HIGH VILED
        RETURN
        ELSE
        LOW VILED
        ENDIF
        
VAGON_DISARI:  ;VAGON YÖNÜ BLOĞUN AKSİ
        IF VGS=0 THEN VAGSAY=0
        IF VGS=1 AND VGB=1 AND VILED=0 THEN
        LOW VILED
        HIGH VGLED
        RETURN
        ELSE
        LOW VGLED
        ENDIF
        RETURN
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;VAGON BİTİŞ;;;;;;;;;;;;;;;;;
        
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;BOM İLERİ-GERİ BAŞLANGIÇ;;;;;;;;;;;;;
BOM:
        IF DYMS=1 THEN BOM_ICERI  ;TAŞA DAYALI DEĞİL=1
        IF BRS=0 THEN BOM_ICERI
        LOW BILED
        GOTO BOM_DISARI
        
BOM_ICERI:
        IF BIB=1 AND BGLED=0 AND HIDLED=1 AND BIDSAY<40 THEN ;BOM YÖNÜ BLOĞA DOĞRU
        LOW BGLED
        HIGH BILED
        RETURN
        ELSE
        LOW BILED
        ENDIF
        
BOM_DISARI:
        IF BGB=1 AND BILED=0 AND HIDLED=1 AND BIDSAY<>0 THEN
        LOW BILED
        HIGH BGLED
        RETURN
        ELSE
        LOW BGLED
        ENDIF
        RETURN
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;BOM İLERİ-GERİ BİTİŞ;;;;;;;;;;;;;;;;;
        
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;BOM SAĞ-SOL BAŞLANGIÇ;;;;;;;;;;;;;;;;;;
DONER:
        IF BRB=1 AND BRS=1 AND BLLED=0 AND VGS=0 AND VIS=1 THEN 
        LOW BLLED
        HIGH BRLED
        ELSE
        LOW BRLED
        ENDIF
        
BOM_SOLA:
        IF BLB=1 AND BLS=1 AND BRLED=0 AND VGS=0 AND VIS=1 THEN
        LOW BRLED
        HIGH BLLED
        ELSE
        LOW BLLED
        ENDIF
        RETURN
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;BOM SAĞ-SOL BİTİŞ;;;;;;;;;;;;;;;;;;;;;;
        
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;BOM AŞAĞI-YUKARI BAŞLANGIÇ;;;;;;;;;;;;;
ASAGI_YUKARI:
        IF BAB=1 AND HIDLED=1 AND BYLED=0  THEN 
        LOW BYLED
        HIGH BALED
        ELSE
        LOW BALED
        ENDIF
        
BOM_YUKARI:
        IF BYB=1 AND HIDLED=1 AND BALED=0  THEN
        LOW BALED
        HIGH BYLED
        ELSE
        LOW BYLED
        ENDIF
        RETURN
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;BOM AŞAĞI-YUKARI BİTİŞ;;;;;;;;;;;;;;;;;
        
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;TABLA AŞAĞI-YUKARI BAŞLANGIÇ;;;;;;;;;;;
TABLA:
        IF TOS=1 THEN
        LOW TALED
        LOW TYLED
        RETURN
        ENDIF
        
TABLA_ASAGI:
        IF TAS=1 THEN 
        LOW TALED
        HIGH TYLED
        RETURN
        ELSE
        LOW TYLED
        ENDIF
        
TABLA_YUKARI:
        IF TYS=1 THEN 
        LOW TYLED
        HIGH TALED
        ELSE
        LOW TALED
        ENDIF
        RETURN
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;TABLA AŞAĞI-YUKARI BİTİŞ;;;;;;;;;;;;;;;







;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;BUTON KONTROL BAŞLANGIÇ;;;;;;;;;;;;;;;
BUTKONT:
        KONT1=0
        KONT2=0
        KONT3=0
        PORTC=%11111111
        DELAYUS 1
        
        PORTC=%11111110
        DELAYUS 1
        IF G1=0 THEN UPB=1
        IF G2=0 THEN DOWNB=1
        IF G3=0 THEN BESB=1
        IF G4=0 THEN TESTB=1
        IF G5=0 THEN RSTB=1
        
        
        PORTC=%11111101
        DELAYUS 1
        IF G1=0 THEN OTOB=1
        IF G2=0 THEN
        HAVAB=1
        ELSE
        HAVAKONT=0
        ENDIF
        
        IF G3=0 THEN HIDB=1
        IF G4=0 THEN MENUB=1
        IF G5=0 THEN SETB=1
        
        
        PORTC=%11111011
        DELAYUS 1
        IF G1=0 THEN BLB=1
        IF G2=0 THEN BAB=1
        IF G3=0 THEN BYB=1
        
        
        
        
        PORTC=%11110111
        DELAYUS 1
        IF G1=0 THEN VIB=1
        IF G2=0 THEN VGB=1
        IF G3=0 THEN BIB=1
        IF G4=0 THEN BGB=1
        IF G5=0 THEN BRB=1
        
        
        PORTC=%11101111
        DELAYUS 1
        IF G1=0 THEN VIS=1
        IF G2=0 THEN VGS=1
        
        
        IF G5=0 THEN BRS=1
        
        
        PORTC=%11011111
        DELAYUS 1
        IF G1=0 THEN BLS=1
        IF G2=0 THEN TAS=1
        IF G3=0 THEN TOS=1
        IF G4=0 THEN TYS=1
        IF G5=0 THEN DYMS=1
        
        
        PORTC=%10111111
        DELAYUS 1
        IF G1=0 THEN
        VSENS=1
        ELSE
        VSENSKONT=0
        ENDIF
        
        IF G2=0 THEN
        BIDSENS=1
        ELSE
        BIDSENSKONT=0
        ENDIF
        
        
        
        IF G4=0 THEN
        BRLSENS=1
        ELSE
        BRLSENSKONT=0
        ENDIF
        
        IF G5=0 THEN PALET=1
        
        DELAYUS 1
        
        
        PORTC=%01111111
        DELAYUS 1
        
        IF G1=0 THEN BIRAKB=1
        
        RETURN
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;BUTON KONTROL BİTİŞ;;;;;;;;;;;;;;;;;;;        
                
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;RESET BAŞLANGIÇ;;;;;;;;;;;;;;;;;;;;;;;
RESETLE:
        VAGSAY=0
        VAGAL=0
        VAGBR=0
        
        BIDSAY=0
        XAL=0
        XBR=0
        
        
        YAL=0
        YBR=0
        
        BRLSAY=0
        BRLAL=0
        BRLBR=0
        
        SNSKNT=%11111111
        RETURN
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;;;;;;;;;;RESET BİTİŞ;;;;;;;;;;;;;;;;;;;;;;;;;;;

XX_CİHAN_XX

Sensorden gelen bılgı pals olarak gelıyorsa b0 kesmesını yada ra4TOCKI ucu ıle tımer1 saydırarak sayısal deger elde edebılırsın b4 kesmesını bu tıp bır ıse kullanamktansa b0 ext_ınt kullanman daha ıyı olur sanırım.
Picbasic bilmedıgım ıcın sana kod konusunda yardım edemem ama C yada asm ıstersen yardımcı olabılırım.Siteden kesmeler hakkında ozellıkle b0 kesmesı hakkında hemen her turlu bılgı edınebılırsın.basic ile yapmanı tavsiye etmememın sebebı basic ın kullandıgı ınterrupt gerçek interrupt sayılmaz.Az da olsa gecıkme payı var.Dolayısıyla eger sayman gereken verı cok hızlıysa belkı kritikte kalan noktalar olusabılır.C ve asm basice gor daha hızlı oldukları ıcın onları onerıyorum.En rahat ve saglıklı sayımı o dilleri kullanarak yapabilirsin.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.