PIC 16F84 ile Led Uygulaması Yardım

Katılım
19 Nis 2008
Mesajlar
55
Puanları
1
Yaş
38
Arkadaşlar hepinize kolay gelsin.

Port A uçlarından herhangi 3 tanesine birer buton veya anahtar bağlayacam. Anahtar veya butona bastığımda Port A uçlarına 5V verecek. PortB uçlarının tamamına da birer led bağalyacam.
Yazacağım program bana şunu sağlayacak.

1- Butonlardan üçünede basılmaz ise RB0 daki led yanacak
2- Butonlardan sadece 1.sine basıldığı anda RB1 deki led yanacak
3- Butonlardan sadece 2.sine basıldığı anda RB2 deki led yanacak
4- Butonlardan hem 1 ve hem ikincisine basıldığı anda RB3 deki led yanacak
5- Butonlardan sadece 3.süne basıldığı anda RB4 deki led yanacak
6- Butonlardan hem 3. hemde 1.sine basıldığı anda RB5 deki led yanacak
7- Butonlardan hem 3. hemde 2.sine basıldığı anda RB6 daki led yanacak
8- Butonların hepsine basıldığı anda da RB7 ye bağlı led yanacak

Kısacası ;

z(LSB) y x(MSB) PORTB ye Bağlı LEDler

0 0 0 RB0 bağlı olan led yanacak
1 0 0 RB1 e bağlı olan led yanacak
0 1 0 RB2 ye bağlı olan led yanacak
1 1 0 RB3 e bağlı olan led yanacak
0 0 1 RB4 e bağlı olan led yanacak
1 0 1 RB5 e bağlı olan led yanacak
0 1 1 RB6 ya bağlı olan led yanacak
1 1 1 RB7 ye bağlı olan led yanacak

Benim zorlandığım nokta şurası. Ben mesela 1 tane butonun bağlı olduğu RA0 girişini kontrol edebilirim giriş 1 mi 0 BTFSC veya BTFSS komutları ile . Fakat yukarıda yer alan bir soru ile karşılaştığımda ne yapacağım hakkında hiçbir fikir oluşmadı. Çünki aynı anda iki butonu veya üç butonu kontrol durumu var. Yukarıdaki sorunu cevaplayacak program hakkında birşeyler yapabilmem için yardımlarınıza ihtiyacım var.

Tekrardan hepinize kolay gelsin.
 
Arkadaşlar ben aşağıdaki programı yazdım ama sadece hepsinin 0 0 0 olduğu ve 0 0 1 olduğu durumlardaki led yandı. Diğer durumlarda ledler yanmadı acilen yardımınıza ihtiyacım var hepinize kolay gelsin.

;====================== eigth program ====================
LIST P=16F84
PORTA EQU h'05'
PORTB EQU h'06'
STATUS EQU h'03'
TRISA EQU h'85'
TRISB EQU h'86'
CLRF PORTB
BSF STATUS,5
CLRF TRISB
MOVLW h'FF'
MOVWF TRISA
BCF STATUS,5

TEST1
BTFSC PORTA,0
GOTO TEST1
BTFSC PORTA,1
GOTO TEST1
BTFSC PORTA,2
GOTO TEST1
MOVLW h'01'
MOVWF PORTB
TEST2
BTFSS PORTA,0
GOTO TEST2
BTFSC PORTA,1
GOTO TEST2
BTFSC PORTA,2
GOTO TEST2
MOVLW h'02'
MOVWF PORTB
TEST3
BTFSC PORTA,0
GOTO TEST3
BTFSS PORTA,1
GOTO TEST3
BTFSC PORTA,2
GOTO TEST3
MOVLW h'04'
MOVWF PORTB
TEST4
BTFSS PORTA,0
GOTO TEST4
BTFSS PORTA,1
GOTO TEST4
BTFSC PORTA,2
GOTO TEST4
MOVLW h'08'
MOVWF PORTB
TEST5
BTFSC PORTA,0
GOTO TEST5
BTFSC PORTA,1
GOTO TEST5
BTFSS PORTA,2
GOTO TEST5
MOVLW h'10'
MOVWF PORTB
TEST6
BTFSS PORTA,0
GOTO TEST6
BTFSC PORTA,1
GOTO TEST6
BTFSS PORTA,2
GOTO TEST6
MOVLW h'20'
MOVWF PORTB
TEST7
BTFSC PORTA,0
GOTO TEST7
BTFSS PORTA,1
GOTO TEST7
BTFSS PORTA,2
GOTO TEST7
MOVLW h'40'
MOVWF PORTB
TEST8
BTFSS PORTA,0
GOTO TEST8
BTFSS PORTA,1
GOTO TEST8
BTFSS PORTA,2
GOTO TEST8
MOVLW h'80'
MOVWF PORTB

DONGU
GOTO DONGU
END
 
Kardeş birde şu komutu denesen MOVF olması lazımdı sanırım ra0 basılmışsa rb sıfırı yakar porta da hangi tuşa basılmışsa portbde o çıkışı porta ile eşitler.
 
Artvinli kardeşim cevabın için teşekkür ederim dün geceden beri uğraşıyorum bir sonuca ulaşamadım acaba bana örnek teşkil edecek yol açacak bir program yazabilirmisin.
Tekrar kolay gelsin
 
;========================== buton test 3 =============

LIST P=16F84A
PORTA EQU h'05'
PORTB EQU h'06'
TRISA EQU h'85'
TRISB EQU h'86'
STATUS EQU h'03'
HAFIZA EQU h'0C'

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

KAR1
MOVLW h'00'
MOVWF HAFIZA
MOVF PORTA,W
SUBWF HAFIZA,W
BTFSS STATUS,2
GOTO KAR2
BSF PORTB,0

KAR2
MOVLW h'01'
MOVWF HAFIZA
MOVF PORTA,W
SUBWF HAFIZA,W
BTFSS STATUS,2
GOTO KAR3
BSF PORTB,1

KAR3
MOVLW h'02'
MOVWF HAFIZA
MOVF PORTA,W
SUBWF HAFIZA,W
BTFSS STATUS,2
GOTO KAR4
BSF PORTB,2

KAR4
MOVLW h'03'
MOVWF HAFIZA
MOVF PORTA,W
SUBWF HAFIZA,W
BTFSS STATUS,2
GOTO KAR5
BSF PORTB,3

KAR5
MOVLW h'04'
MOVWF HAFIZA
MOVF PORTA,HAFIZA
SUBWF HAFIZA,W
BTFSS STATUS,2
GOTO KAR6
BSF PORTB,4

KAR6
MOVLW h'05'
MOVWF HAFIZA
MOVF PORTA,W
SUBWF HAFIZA,W
BTFSS STATUS,2
GOTO KAR7
BSF PORTB,5

KAR7
MOVLW h'06'
MOVWF HAFIZA
MOVF PORTA,W
SUBWF HAFIZA,W
BTFSS STATUS,2
GOTO KAR8
BSF PORTB,6

KAR8
MOVLW h'07'
MOVWF HAFIZA
MOVF PORTA,W
SUBWF HAFIZA,W
BTFSS STATUS,2
GOTO KAR1
BSF PORTB,7


END


Arkadaşlar bu programı yaptım ama bir durum dan öbür duruma geçtiğimde bir önceki durumda yanan led sönmedi. Programdanda bunu görüyoruz zaten. her kar etiketinden sonra clrf portb yazdım bunun sonucunda led yanıp yanıp söndü. bana devamlı yanması lazım.

Herkese kolay gelsin.
 
Arkadaşlar yardımcı olan kimse yokmu .

Lütfen yardımlarınızı bekliyorum. Hepinize kolay gelsin.
 
cal gecime koy ondan sonrada başlın üstüne clrf port b yaz sonraki komut uygunana kadar led ler yana call gecikmedede istenin zamanı ayarlarsın
 
dostum akış diyagramı çizerek alt programlar oluştur sonra sıra ile bu alt proramları çağır istedini yaparsın.komutları zaten biliyosun
 
100 tane kesme geldiğinde ledi yakan programı yazabilecek arkdaşlar varsa acil yardımınıza ihtiyacım var.
 

Forum istatistikleri

Konular
129,799
Mesajlar
930,199
Kullanıcılar
452,596
Son üye
Medi-terranean

Yeni konular

Geri
Üst