Sıralı led yakma

Başlatan ennginar, 25 Kasım 2012, 12:52:02

ennginar

Aşağıdaki kodlarla devre kurduğumda sadece A1 portundaki led yanmakta diğerleri yanmamakta. Üzerine düşündüm fakat hatamı bulamadım yardımcı olursanız sevinirim.

list	p=16F84		;hangi pic kullanılyor
	include"P16F84A.inc"

	__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _XT_OSC  
		
		
SAYAC1 		EQU 	D'1'
SAYAC2		EQU	D'2'
SAYAC3 		EQU	D'3'
		
		CLRF	PORTA
		CLRF	PORTB		

		BSF 	STATUS,5
		MOVLW	b'00000000'	;MOVLW	0x00 
		MOVWF	TRISA		;PORTA Tüm pinler çıkış oldu
		MOVLW	b'00000000'	;MOVLW	0x00 
		MOVWF	TRISB		;PORTB Tüm pinler çıkış oldu
		BCF	STATUS,5 
DONGU
		MOVLW	b'00000010'		; MOVLW	b'00000010'
		MOVWF	PORTA		;1 nolu pine 5 Volt gönderdik
		CALL    GECIKME
		MOVLW	b'00001000'		; MOVLW	b'00001000'
		MOVWF	PORTB		;1 nolu pine 5 Volt gönderdik
		CALL  	GECIKME
		MOVLW	b'00010000'		; MOVLW	b'00010000'
		MOVWF	PORTB		;1 nolu pine 5 Volt gönderdik
		CALL  	GECIKME
		MOVLW	b'00000000'
		MOVWF	PORTA
		MOVLW	b'00000000'
		MOVWF	PORTB
		CALL 	GECIKME
		GOTO 	DONGU
		
GECIKME					;alt program başlangıcı
		MOVLW 	D'5'
		MOVWF 	SAYAC3
KALIP
		MOVLW 	D'255'
 		MOVWF 	SAYAC1			
		MOVLW 	D'255'
		MOVWF	SAYAC2
		DECFSZ 	SAYAC2,0
		GOTO	$-2
		DECFSZ 	SAYAC1,0
		GOTO	$-5
		DECFSZ 	SAYAC3,0
		GOTO KALIP
		RETURN
	        END

mir_as82

gecikmeden çıkamıyor olabilir. gecikme programını kontrol et istersen.

ennginar

ISIS de simülasyonda sadece a1 portundaki led yanıp sönüyor belirli aralıklarla ve ısıs'in verdiği hata " Stack overflow executing CALL instruction".. Bakıyorum ama mantıksız bir şey yok gibi, sürekli oynamalar yapıp deniyorum fakat hala çözüme ulaşamadım.

yusufburak

Gecikme kısmını yeniden gözden geçir derim pek anlayamadım :S
Öğretici aranıyor :)

subram

GOTO	$-2


bunun yerine bunu yazıp dener misin?

GOTO	$-1
http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

Kabil ATICI

sayacları atadığın adresi bir bak. Donanım olarak veri kağıdında ne kullanıması gerekiyor.
örneğin
;***** VARIABLE DEFINITIONS
SAYAC1        EQU     0x0C        ; variable used for context saving
SAYAC2      EQU     0x0D        ; variable used for context saving
SAYAC3      EQU     0x0E        ; variable used for context saving

veri kağıdının 2.2 Data Memory Organization ile ilgili bölümünde kullanıcı ram adresi  0Ch olarak belirtilmiş...
ve gecikme için döngüleri çok karıştırmışsın...

GECIKME            
        MOVLW    D'5'
        MOVWF    SAYAC3
KALIP
        MOVLW    D'255'
   MOVWF    SAYAC2
KALIP1
        MOVLW    D'255'
        MOVWF   SAYAC1
KALIP2
        DECFSZ    SAYAC1,F
        GOTO   KALIP2
        DECFSZ    SAYAC2,F
        GOTO   KALIP1
        DECFSZ    SAYAC3,F
        GOTO   KALIP
şeklinde bir dene. Hatta aslında internete baksaydın  vardı... Eğer adreslemede şüphen varsa doğrudan adreslemeleri kullan rahat edersin...
ambar7

ennginar

Çok teşekkür ederim sorun adreslemelerdeymiş. Evet gecikme kısmı biraz karışık orayı da düzenlemiştim uğraşırken.

legolas

bu uygulamaya bir göz atabilirsin. buton kontrollü bit kaydırma uygulaması..