Soru:16f84 ile binary 9 dan geriye saydırma

Başlatan sermokhan, 01 Mart 2008, 23:20:43

sermokhan

Devrede a portunun 1.bitine bağlı butona basılınca b portuna bağlı olan 8 tane led binary olarak 9 dan geriye sayacak.Fakat benim yaptığımda ledler sürekli yanıyor hiç sönmüyor.Bİlenler yardımcı olabilirse sevinirim

LIST 	P=16F84
	INCLUDE "P16F84.INC"
SAYAC1	EQU	H'0C'
SAYAC2  EQU     H'0D'        
	CLRF 	PORTB
	BSF 	STATUS,5
	CLRF 	TRISB
	MOVLW 	H'FF'
	MOVWF 	TRISA
	BCF 	STATUS,5
BASLA
	MOVLW 	H'0A'
	MOVWF 	SAYAC1
TEST	
	BTFSC	PORTA,1
	GOTO 	TEST
	MOVLW	H'FF'
	MOVWF 	SAYAC2
GECIKME
	NOP	
	NOP
	NOP
	DECFSZ	SAYAC2,F
	GOTO 	GECIKME
AZALT
	DECFSZ 	SAYAC1
	GOTO 	YAK
	GOTO 	BASLA
YAK
	MOVF	SAYAC1
	MOVWF	PORTB
	GOTO 	TEST
	END


Buda yaptığım devre

alabora

Koddaki olması gereken değişiklikleri koyu renkle belirttim.
Bir de isiste butonun pice giren ayağını (basılı değilken değer oluşması için) 0 V a bağla ya da tam tersini yap.

LIST    P=16F84 
INCLUDE "P16F84.INC" 

SAYAC1   EQU   H'0C' 
SAYAC2  EQU     H'0D'        
   CLRF    PORTB 
   BSF    STATUS,5 
   CLRF    TRISB 
   MOVLW    H'FF' 
   MOVWF    TRISA 
   BCF    STATUS,5 
BASLA 
   MOVLW    H'0A' 
   MOVWF    SAYAC1 
TEST    
   [B]BTFSS   PORTA,1[/B]
   GOTO    TEST 
   [B]BTFSC PORTA,1
   GOTO $-1[/B]   
   MOVLW   H'FF' 
   MOVWF    SAYAC2 
GECIKME 
   NOP    
   NOP 
   NOP 
   DECFSZ   SAYAC2,F 
   GOTO    GECIKME 
AZALT 
   DECFSZ    SAYAC1 
   GOTO    YAK 
   GOTO    BASLA 
YAK 
   [B]MOVF   SAYAC1,w[/B]
   MOVWF   PORTB 
   GOTO    TEST 
   END

ayhani

Kod kısmını bilmem ama isi şemanda problem var.
MCLR pinini +5 volta çek
En iyi bildiğim şey hiçbir şey bilmediğimdir.

sermokhan

Teşekkür ederim devre çalışıyor fakat anlamadağım 2  nokta var.

1.
TEST   
   	-BTFSC	PORTA,1-
   	GOTO    TEST
   	-BTFSS PORTA,1-
   	GOTO $-1  
   	MOVLW   H'FF'
   	MOVWF    SAYAC2
böyle olunca buton bırakılırken yanıyor
TEST   
   	-BTFSS	PORTA,1-
   	GOTO    TEST
   	-BTFSC PORTA,1-
   	GOTO $-1  
   	MOVLW   H'FF'
   	MOVWF    SAYAC2


böyle olunca ise buton basılırken yanıyor

2.GOTO $-1" kısmı ne işe yarıyor onu çözemedim(Daha yeniyimde :D)

Logan

Goto $-1 satırı programı bir satır geriye götürür. Buradaki $ değeri PCLATH'in o anki değerini gösterir. Yukarıdaki programda Btfss PortA,1 ve Btfsc PortA,1 satırlarının arka arkaya gelmelerinin sebebi, butona bastıktan sonra elimizi butondan çekene kadar beklemesi durumunu ifade etmesidir. YÜkselen kenar mantığının değişik bir versiyonudur. Buradaki $-1 satırıda PortA'nın 1. bacağının 0 olma durumunu bekler. Eğer olasılık gerçekleşmezse program $-1 satırına gelir ve tekrar Btfsc PortA,1 kısmına döner yani bir satır geriye.
İmza.