0-9 sayıcı hakkında

Başlatan serdaripek85, 09 Ağustos 2006, 15:09:57

serdaripek85

Arkadaşlar ben bir 0-9 sayıcı yapmaya çalıştım ama takıldığım bir yer oldu.Yapmak istediğim butona her basmamda sayı 0-9 arasında sayması ama ben istediğim rakamda durdurabilmeliyim.Aşağıdaki programda butona basılı tuttuğumda  9 a kadar saydırıyorum ama istediğim bir rakamda durduramıyorum.Yani butona basılı tuttuğum zaman 0 ile 9 arasında sayıyor ama örneğin 7 de durmak istediğimde display 0 ı gösteriyor.Program bu hali ile proteus ta denediğimde,rakamları istediğim değerde durdurabiliyorum.

1.Rakamları istediğim değerde durdurabilmem için ne yapmalıyım?

2.Proteus ta istediğim  rakamda durdurabiliyorum.Yani gerçekte yaptığım devre proteus taki gibi çalışmıyor neden?

LIST P=16F84
PORTA	EQU	h'05'
PORTB	EQU	h'06'
STATUS	EQU	h'03'
TRISA	EQU	h'85'
TRISB	EQU	h'86'
SAYAC1	EQU	h'0C'
SAYAC2	EQU	h'0D'

	CLRF	PORTB
	BSF	STATUS,5
	CLRF	TRISB
	MOVLW	h'FF'
	MOVWF	TRISA	
	BCF	STATUS,5

BASLA


;0***********************************************

	CLRF	PORTB
	MOVLW	b'00111111'   
	MOVWF	PORTB         
	CALL	GECIKME	      
TEST1
	BTFSS	PORTA,1	      
	GOTO	TEST1	     

;1**********************************************
	
	CLRF	PORTB
	MOVLW	b'00000110'    
	MOVWF	PORTB	     
	CALL	GECIKME	      

TEST2			       	       
	BTFSS	PORTA,1	       
	GOTO	TEST2	       

;2**********************************************

	CLRF	PORTB	       
	MOVLW	b'01011011'
	MOVWF	PORTB
	CALL	GECIKME

TEST3          		   
	BTFSS	PORTA,1    
	GOTO	TEST3      

;3*********************************************

	CLRF	PORTB
	MOVLW	b'01001111'
	MOVWF	PORTB
	CALL	GECIKME
TEST4
	BTFSS	PORTA,1
	GOTO	TEST4

;4********************************************

	CLRF	PORTB
	MOVLW	b'01100110'
	MOVWF	PORTB
	CALL	GECIKME
TEST5
	BTFSS	PORTA,1
	GOTO	TEST5

;5**************************************************

	CLRF	PORTB
	MOVLW	b'01101101'
	MOVWF	PORTB
	CALL	GECIKME
TEST6
	BTFSS	PORTA,1
	GOTO	TEST6

;6**************************************************

	CLRF	PORTB
	MOVLW	b'01111101'
	MOVWF	PORTB
	CALL	GECIKME
TEST7
	BTFSS	PORTA,1
	GOTO	TEST7

;7**************************************************

	CLRF	PORTB
	MOVLW	b'00000111'
	MOVWF	PORTB
	CALL	GECIKME
TEST8	
	BTFSS	PORTA,1
	GOTO	TEST8

;8**************************************************

	CLRF	PORTB
	MOVLW	b'01111111'
	MOVWF	PORTB
	CALL	GECIKME
TEST9
	BTFSS	PORTA,1
	GOTO	TEST9

;9*************************************************

	CLRF	PORTB
	MOVLW	b'01101111'
	MOVWF	PORTB
	CALL	GECIKME
TEST0
	BTFSS	PORTA,1
	GOTO	TEST0
	GOTO	BASLA

GECIKME
	MOVLW	D'255'
	MOVWF	SAYAC1
DONGU1
	MOVLW	D'255'
	MOVWF	SAYAC2
DONGU2
	DECFSZ	SAYAC2,F
	GOTO	DONGU2
	DECFSZ	SAYAC1,F
	GOTO	DONGU1
	RETURN

DONGU
	GOTO	DONGU
	END


serdaripek85, Code kullanınca nasıl olmuş?

Logan

@serdaripek85,
Yazdığın programda bir hata görünmüyor.TEST0 etiketinin altında BTFSS PORTA,1 komutundan sonra bir gecikme daha koysaydın iyi olurdu.Ayrıca gecikme programının süresini biraz daha uzatıp denemeni tavsiye ederim. Gerçekte kurduğun devreyi de gözden geçirsen iyi olur.
Not: Mesajını code içine alsan fena olmaz.
İmza.

PhD

Selam

1. @Logan arkadaşın dediği gibi bence de ksinlikle butonlara bir gecikme koymalısın.

2. Sıfır görüyorum demişsin. Beslemende bir sorun olabilir yani sen butona bastığın zaman PIC reset görüyor diye düşünüyorum. Yada Reset bacağını boşta faln unutmuşsun gibi. Bunlar aklıma gelenler eğer devre şemanıda gönderebilirsen daha net yardımcı olabiliriz.

Kolay gelsin.
...hiç...

POWER

TB6BKG

serdaripek85

arkadaşlar bence programda eksik olan bir şeyler var ama ne olduğunu bilmiyorum.
sanki hafızaya alınması gereken bir şeyler var gibi geliyor...

:cry:

Farklı fikirleri olanların mesaj yazmalarını istiyorum ...

saygılar

POWER

@serdaripek85
gönderdiğim proğramda butona sürekli basılı tuttuğun zaman sayıcı saymaz.Sayma yapabilmesi için butona basıp bırakmak lazım.Bu özelliği özellikle ekledim.Misal 7 durmak istiyorsan <butona 7 defa bas bırak 7 durmuş olacaksın.Sende istediğin özelliği daha net yazarsan daha kolay olacak."İstediğim yerde duramıyorum" diyorsun tam olarak neyi kast ediyorsun?
TB6BKG

serdaripek85

arkadaşlar sorunu çözdüm.

 

hatam pici programlarken ICprog ta sigortalardan WDT aktif iken programlıyordum.WDT yi pasif duruma getirdim ve öyle denedim sorun halloldu...

yanlız anlamadığım bir şey oldu

;9*************************************************

CLRF PORTB
MOVLW b'01101111'
MOVWF PORTB
CALL GECIKME
TEST0
BTFSS PORTA,1
GOTO TEST0
GOTO BASLA


buradaki CLRF PORTB programda varken 0 ile 8 arasında sayıyor.

CLRF PORTB satırını programdan silipde denediğimde bu sefer 0 ile9 arasında sayıyor.Ben bunun mantığını anlamadım.Anlayan varsa açıklasın...