led yakma yardım

Başlatan tuncay1273, 05 Eylül 2013, 11:47:10

tuncay1273

merhaba arkadaşlar , yapmış olduğum projemin isis çizimi aşağıdadır. fakat bir sorunum var , 1,2,3 ve 4 nolu butonların hangisine basılırsa o butonun karşılığı olan ledin yanıp sönmesini istiyorum, ayrıca gövde isimli led de hangi butona basılırsa basılsın devamlı yanacak , benim sorunum şu ; ledler istediğim gibi yanıp sönüyor fakat birden fazla butona bastığımda da aynı şekilde yanıp sönmesini istiyorum , mesela 1.butona bastım diyelim , 2.butona da bastığımda 2.butonun karşılığı olan ledin de yanmasını istiyorum , fakat yanmıyor, sadece ilk bastığım butonun ledi yanıyor , ben istiyorum ki her buton bağımsız olarak kontrol etsin , mesela 4 butona da bastıysam 4 ünün de yanıp sönmesini istiyorum , fakat olmuyor, kodları da gönderiyorum,eksik olan kod nedir , lütfen yardımcı olun şimdiden teşekkürler,

LIST P=16F84A
PORTA EQU h'05'
PORTB EQU h'06'
STATUS EQU h'03'
TRISA EQU h'85'
TRISB EQU h'86'
CLRF PORTB ;PORTB temizle
BSF STATUS,5 ;BANK1e geç
CLRF TRISB ;PORTB uçlarını çıkış yap
MOVLW h'FF' ;W registerine h'FF' yükle
MOVWF TRISA ;PORTA uçlarını giriş yap
BCF STATUS,5 ;BANK0 geç
SAYAC1   EQU   h'20'
SAYAC2   EQU   h'0D'
BUTON
  BTFSC PORTA,0 ; Butona basıldı mı?
  GOTO BUTON1
;======================================================================
TEKRAR
  MOVLW b'10000001'
  MOVWF PORTB
  CALL GECIKME
  MOVLW b'10000000'
  MOVWF PORTB
  CALL GECIKME
  BTFSS PORTA,0 ;BUTONU TEST ET AÇILDI İSE TÜM LEDLERİ SÖNDÜR
  GOTO TEKRAR
  BCF PORTB,0
  BCF PORTB,7
  GOTO BUTON
;=======================================================================
TEKRAR1
  MOVLW b'10000010'
  MOVWF PORTB
  CALL GECIKME
  MOVLW b'10000000'
  MOVWF PORTB
  CALL GECIKME
  BTFSS PORTA,1 ;BUTONU TEST ET AÇILDI İSE TÜM LEDLERİ SÖNDÜR
  GOTO TEKRAR1
  BCF PORTB,1
  BCF PORTB,7
  GOTO BUTON1
;=======================================================================
TEKRAR2
  MOVLW b'10000100'
  MOVWF PORTB
  CALL GECIKME
  MOVLW b'10000000'
  MOVWF PORTB
  CALL GECIKME
  BTFSS PORTA,2 ;BUTONU TEST ET AÇILDI İSE TÜM LEDLERİ SÖNDÜR
  GOTO TEKRAR2
  BCF PORTB,2
  BCF PORTB,7
  GOTO BUTON2
;=======================================================================
TEKRAR3
  MOVLW b'10001000'
  MOVWF PORTB
  CALL GECIKME
  MOVLW b'10000000'
  MOVWF PORTB
  CALL GECIKME
  BTFSS PORTA,3 ;BUTONU TEST ET AÇILDI İSE TÜM LEDLERİ SÖNDÜR
  GOTO TEKRAR3
  BCF PORTB,3
  BCF PORTB,7
  GOTO BUTON3
;=======================================================================
GECIKME ;alt program başlangıcı
  MOVLW h'FF'
  MOVWF SAYAC1
DONGU1
  MOVLW h'FF'
  MOVWF SAYAC2
DONGU2
  DECFSZ SAYAC2, F
  GOTO DONGU2
  DECFSZ SAYAC1, F
  GOTO DONGU2
  RETURN
;=======================================================================
BUTON1
  BTFSC PORTA,1
  GOTO BUTON2
  GOTO TEKRAR1
;=======================================================================
BUTON2
  BTFSC PORTA,2
  GOTO BUTON3
  GOTO TEKRAR2
;=======================================================================
BUTON3
  BTFSC PORTA,3
  GOTO BUTON
  GOTO TEKRAR3
DONGU
  GOTO DONGU
  END



Bayramsumbul

Merhabalar...Aslında Basit Ama,Buyurun Kodunuz.
list      p=16F84A
	#include <p16F84A.inc>
	__CONFIG   _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _LVP_OFF
	ORG    		0x000
MAIN
	BSF 	STATUS, RP0;Bank 1'deyiz
	MOVLW	0X0F;Porta İlk 4 Bit Giriş
	MOVWF	TRISA
	CLRF 	TRISB;Portb Çıkış
	BCF 	 STATUS, RP0
	CLRF 	PORTB//Portb Tamamen Low Oldu
BASLA;sonsuz Döngü
MOVFW	PORTA;Porta Oku
MOVWF	PORTB,Portb Yaz
GOTO	BASLA
END

Bu Arada 628 İle Yapsaydınız İyi Olurdu.
Kolay Gelsin,İyi Çalışmalar..
Bir Elektronik Meraklısının Serüveni...

tuncay1273

ilginiz için tşkler,sizin kodu mpasm debir türlü  derleyemedim , sürekli error veriyor , 628 hangi program onu duymamıştım,

Maxim


ipek

hata nerede config satırımı ??

tuncay1273

hata dosyasını aynen kopyalıyorum , aşağıdaki hataları veriyor,

Warning[205] C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 1 : Found directive in column 1. (LIST)
Warning[203] C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 7 : Found opcode in column 1. (CLRF)
Warning[203] C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 8 : Found opcode in column 1. (BSF)
Warning[203] C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 9 : Found opcode in column 1. (CLRF)
Message[302] C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 9 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Warning[203] C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 10 : Found opcode in column 1. (MOVLW)
Warning[203] C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 11 : Found opcode in column 1. (MOVWF)
Message[302] C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 11 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Warning[203] C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 12 : Found opcode in column 1. (BCF)
Warning[205] C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 15 : Found directive in column 1. (ORG)
Error[113]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 17 : Symbol not previously defined (RP0)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 17 : Overwriting previous address contents (0000)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 17 : Overwriting previous address contents (0000)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 18 : Overwriting previous address contents (0001)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 18 : Overwriting previous address contents (0001)
Message[302] C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 19 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 19 : Overwriting previous address contents (0002)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 19 : Overwriting previous address contents (0002)
Message[302] C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 20 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 20 : Overwriting previous address contents (0003)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 20 : Overwriting previous address contents (0003)
Error[113]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 21 : Symbol not previously defined (RP0)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 21 : Overwriting previous address contents (0004)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 21 : Overwriting previous address contents (0004)
Error[128]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 22 : Missing argument(s)
Error[113]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 22 : Symbol not previously defined (Portb)
Error[128]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 22 : Missing argument(s)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 22 : Overwriting previous address contents (0005)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 22 : Overwriting previous address contents (0005)

Bayramsumbul

O Zaman;
Şu Kısımdan Öncekini Kendi Programınızla Değiştirin.(Yazmaç İsimlerini Unutmayın!!!)
ORG    		0x000
MAIN
    BSF 	STATUS, RP0;Bank 1'deyiz
...
Bir Elektronik Meraklısının Serüveni...

tuncay1273

konfigirasyon bitleri komple hata veriyor , bu yüzden kendi proğramımda kongirasyon bitlerini yazmadım , ayarları en  yukarıdaki şekilde yazdım , sizin kodlar aşağıdaki gibi hatalar veriyor ,

Error[113]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 18 : Symbol not previously defined (RP0)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 18 : Overwriting previous address contents (0000)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 18 : Overwriting previous address contents (0000)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 19 : Overwriting previous address contents (0001)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 19 : Overwriting previous address contents (0001)
Message[302] C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 20 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 20 : Overwriting previous address contents (0002)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 20 : Overwriting previous address contents (0002)
Message[302] C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 21 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 21 : Overwriting previous address contents (0003)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 21 : Overwriting previous address contents (0003)
Error[113]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 22 : Symbol not previously defined (RP0)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 22 : Overwriting previous address contents (0004)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 22 : Overwriting previous address contents (0004)
Error[128]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 23 : Missing argument(s)
Error[113]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 23 : Symbol not previously defined (Portb)
Error[128]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 23 : Missing argument(s)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 23 : Overwriting previous address contents (0005)
Error[118]   C:\USERS\TOSH\DESKTOP\KOD2\KOD1.ASM 23 : Overwriting previous address contents (0005)

ipek

selam baştan söyleyeyim en az senin kadar amatörüm.

şimdi arkadaşın verdiği kod parçacığının düzenlenmiş hali 'Code tag' ile yolluyorum

list      p=16F84A		: solda bir boşluk bırak
#include <p16F84A.inc>	; sola yaslı
 __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC	; solda bir boşluk
 Errorlevel ,-302	; bank zırvalamalarını filitre ediyoruz
 
    ORG    		0x000
MAIN:												; etiket sola yaslı
    BSF 	STATUS, RP0		;Bank 1'deyiz
    MOVLW	0X0F			;Porta İlk 4 Bit Giriş
    MOVWF	TRISA
    CLRF 	TRISB			;Portb Çıkış
    BCF 	 STATUS, RP0
    CLRF 	PORTB			; Portb Tamamen Low Oldu
BASLA:						;sonsuz Döngü			;etiket sola yaslı
	MOVFW	PORTA			;Porta Oku
	MOVWF	PORTB			;Portb Yaz
	GOTO	BASLA
	END						;diğerlerinin tama komut solda bir boşluk.



buda derlenmiş hali
:020000040000FA
:1000000083160F308500860183128601050886005D
:020010000628C0
:02400E00F13F80
:00000001FF


16F84A'da lvp yok boden yok bu config geçersiz.

PORTB,Portb Yaz buradaki  virgül ; olacaktı

PORTB//Portb Tamamen Low Oldu burada C Lisan'ına  ait // var buda ; olacak

ben denemedim kolay gelsin...

Bayramsumbul

Hayret Bende Çalışmıştı Proteusta :D Zaten 628'in Config Satırıydı Ondan Olsa Gerek Boden,Lvp Olduğunu Bilmiyordun..
şunu Kullanmayı Unutmuşum ; Onun Yerine // Yazmışım.
@tuncay1273 Özür Diliyorum.Yanlış Yönlendirdiğim İçin...
Tekrar Kolay Gelsin...
Bir Elektronik Meraklısının Serüveni...

RaMu

Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

tuncay1273

ilginiz için teşekkürler arkadaşlar ,sayın bayramsümbül kodar için sağolun , sayın ipek ;sizin düzeltmiş olduğunuz kodları derledim , bir sorun çıkmadı , fakat isiste çalırtığımda benim istediğim gibi ledler yanmıyor, ben istiyorum ki , butonlar basılı olmadığı zamanlarda ledlerin tümü sönük olacak , hangi butona basarsam o butonun karşılığı olan led yanıp sönecek , ayrıca gövde isimli led sürekli yanacak , butonlar birbirinden bağımsız olacak , mesela 1 ve 3 nolu butona basıldığı zaman , 1 ve 3 nolu ledler yanıp sönecek , gövde isimli led de devamlı yanacak , düzelttiğiniz bayram beiyn  kodları çok güzel butonlar bağımsız , ama daha butonlara basılmadan ledler yanık durumda ,butona basıldığında ise ledler sönüyor, biraz düzenler misiniz lütfen ,ben bu kodlar üzerinde uğraştım ama başaramadım , şimdiden teşekkürler ,

Bayramsumbul

O Zaman Şöyle Bir Kod Yazıp Eklerim.Ama Bu Sefer 628'ile Olsun :)
PORTB 0123 Buton PORTB 4567 Ledler Porta,0 Gövde Uygunmudur...
Bir Elektronik Meraklısının Serüveni...

musti463

isis de osilatör devresi bağlamanıza gerek yok PIC'i çift tıklayıp frekans değeri kısmında gerekli işlemci hızı değerini girebilirsiniz.(Not:4MHz için işlemci hızına 1MHz girmelisiniz)
Mustafa Emir SADE

ipek

tuncay1273 
anladığım kadarı ile işlemin tersimi istiyorsun.bu çok kolay çunki işlemcinin tristate özelliği
mevcut. bütün ledleri çevirip ters tak, ledler gnd yerine +5 volta direç ile bağlı olsun hepsi bu kadar.sürekli yanması gereken led'de yanar çünki tris satırından sonra clear edimiş.