pic16f84 ile ledleri flaş şeklinde yakma

Başlatan OzanCan.Net, 15 Aralık 2011, 09:02:13

OzanCan.Net

merhaba arkadaşlar öncelikle hepinize kolay gelsin

PortB'deki ledleri flaş şeklinde yakıp söndüren program. isimli bir program hazırlamaya çalışıyorum. Fakat programın asm kodlarını yazıp isis üzerinde kurup çalıştırdığımda flaş kararsız bir şekilde oluyor. Kodlar aşağıda bunun sebebi nedir acaba ?

LIST P=16F84
		PORTB 	EQU H'06'
		TRISB 	EQU H'86'
		STATUS 	EQU H'03'
BASLA	
		CLRF PORTB
		BSF STATUS,5
		CLRF TRISB
		BCF STATUS,5
		MOVLW H'FF'
		MOVWF PORTB
		GOTO BASLA
		END



OzanCan.Net

Kendim çözdüm arkadaşlar kodlar aşağıda :)

LIST P=16F84
		PORTB 	EQU H'06'
		TRISB 	EQU H'86'
		STATUS 	EQU H'03'
		SAYAC1 	EQU H'0C'
		SAYAC2 	EQU H'0D'
BASLA	
		CLRF PORTB
		CALL BEKLE
		BSF STATUS,5
		CLRF TRISB
		BCF STATUS,5
		MOVLW H'FF'
		MOVWF PORTB
		CALL BEKLE
		GOTO BASLA
BEKLE
		MOVLW D'255'
		MOVWF SAYAC1
DONGU1
		MOVLW D'255'
		MOVWF SAYAC2
DONGU2
		DECFSZ SAYAC2,F
		GOTO DONGU2
		DECFSZ SAYAC1,F 
		GOTO DONGU1
		RETURN
END

Mujdat117

#2
OzanCan hocam
yazdığınız programda aralara gecikme rutni koynanız gerekiyor oyuzden karasız çalışıyordur. bu devreyi bort uzerinde kurdugunuzda kısık bir şekilde ledlerin yandıgını görürsünüz sebebi; mcu portlerın durumunu okadar hızlı değiştiriki sizin gözlerini ledlerin tam yandığını algılayamıyacaktır.
birde her seferinde portları çıkış olarak ayarlamanıza gerek yok başlangıçta bir sefer çıkış olarak ayarlamaz-nız yeterli olacaktır.
LIST P=16F84
 ;       PORTB 	EQU H'06'
 ;       TRISB 	EQU H'86'
 ;       STATUS 	EQU H'03'
;tektek tanımlamanıza gerek yok
#include "16f84.inc";bu satır mcu da bulunan tüm Regestirileri tanımlamalarını içerir. 
;gecikme yapabilmek için gerekli değişken
        sayı1               EQU  0X20
 kurulum
        BSF STATUS,5
        CLRF TRISB
        BCF STATUS,5
BASLA	
        CLRF PORTB
        call     bekle
        MOVLW H'FF'
        MOVWF PORTB
        call     bekle
        GOTO BASLA
bekle
      movlw      0xff
      movwf      sayı1
b1
       decfsz    sayı1,f
       goto   b1
       return

        END
Ayinesi iştir kişinin lâfa bakılmaz.Şahsın görünür rütbe-i aklı eserinde

kaypic38

Arkadaşa katılıyorum birde yazımın kolay olması açısından "INCLUDE" yani önceden oluşturulan bir programı programınıza çağırma işlemini kullanmanızı tavsiye ederim böylede EQU atama komutunu kullanarak zorluk yaşamazsınız örneğin ; INCLUDE "P16F84.INC" bu sekilde tek tek yok portb yok porta şeklinde atama yapmanıza gerek kalmaz tabi bu INCLUDE dosyalarını tek tek kendiniz hazırlayamazsınız daha doğrusu çok zor olur MIKROCHIP'in sitesinde mevcut derlemek için MPLAB kullanıyorsanız program içinde zaten bulunuyor.

INCLUDE kullanarak şu şekilde yazabilirsiniz ;
;=============================
LIST      P=16F84
INCLUDE    "P16F84.INC"
;-----------------------------------------
BASLA   
        CLRF PORTB
        CALL BEKLE
        BSF STATUS,5
        CLRF TRISB
        BCF STATUS,5
        MOVLW H'FF'
        MOVWF PORTB
        CALL BEKLE
        GOTO BASLA
BEKLE
        MOVLW D'255'
        MOVWF SAYAC1
DONGU1
        MOVLW D'255'
        MOVWF SAYAC2
DONGU2
        DECFSZ SAYAC2,F
        GOTO DONGU2
        DECFSZ SAYAC1,F
        GOTO DONGU1
        RETURN
END

kolay gelsin...                                                                                             
Bir şeyi gerçekten öğrenmek, yapmak istiyorsan o şeyi yapmışsın, öğrenmişsin demektir...