Pic16F84'te 4x4 Keypad

Başlatan anti1990, 12 Ocak 2011, 18:46:51

anti1990

Merhabalar;
pic16f84'te 4x4 keypad için assembly kodunu nasıl yazabiliriz.İnterrupt kullanarak keypad yapabiliyorum ama tarama yöntemini kullanarak keypad kodu yazamadım.
teşekkürler

eseneren

Yerinde olsam once butonlara bastıgında mısal 0 a bastıgında hangılerı "1" hangılerı "0" olacak onları lıstele,
daha sonra asagıdakı gıbı xorlw olan komuta o degerı yaz goto komutu olan satırada ne ıs yapacagını soyle,
daha sonra bunu interrupt ıcınde yaz o kadar..

MOVF PORTB,W         ; PORTB=?2 EVETSE CIK
XORLW H'02'            ; DEGILSE BIRINCIFONK
BTFSS STATUS,Z         
GOTO BIRINCIFONK
RETURN
Seçim yapmak için durum hakkında bilgi sahibi olmak zorunda değilsin, sonucuna hazır olmak için durum hakkında kaygılanırsın.  http://bit.ly/gixfTk

FEHMİ_ASM

16F84 hiç kullanmadım. Sanırım onda da RB4-7 kesmesi var.
     RB0--RB3 pinlerini çıkış(SUTUN), RB4--RB7 pinlerini giriş (SATIR) olarak tanımla.
     RB0 satırını Hıgh yap ve Keypad'ın dikey olan sutunundaki tuşlarından birine bastığını varsayarak  (tercihen sırayla) RB4, RB5,RB6 ve RB7'yi test et. Hangisi Hıgh olmuşsa sutun ve satırda onun kesiştiği tuşa basılmış demektir [Zaten hangi tuşa basıldığını da tam burada buluyorsun ve burada iken ilgili tuş bilgisinin ne yapacağını alt programda yorumluyorsun] .
     Şimdi RB0 satırını Low ve ardından RB1 satırını High yap.  Kalan lojik işlemler için de aynen ilk satırdaki gibi RB4,RB5,RB6 ve RB7 sutunlarını sırayla test et . Son sutun (RB3) taraması sona erdiğinde de tekrar başa dön ve yeni bir taramaya başla. Ancak sutunları aktif ederken mutlaka dikkat etmen bir nokta var: Satırlardan aynı anda sadece bir tanesi Hıgh olmalı. Aksi halde aynı anda birden fazla tuşa basılmış gibi bir durum oluşur.

kudretuzuner

Merhaba
Arşivimde şöyle bir çalışmam vardı işinize yarar mı?
http://www.4shared.com/file/h8QnN76Y/anti1990_TUSTAKM.html
Amatör

mmerve