Hepinize kolay gelsin arkaşlar. MPLAB ile hazırladığım kodlarımı Proteus'da simüle edemiyorum veya bir yanlışlık yapıyorum. Çünkü sonucu programa göre hatalı alıyorum. İşin ilginç tarafı ise tek butona basarak çalıştırdığım iş yaptırdığım programlarda sorun yok. Amacıma gelince şöyle özetleyeyim. PORTA çıkış, PORTB giriş olarak tanımlı. PORTB'nın ilk üç portunda butonlar bağlı. RB0, RB1 ve RB2 basılı ise programın istediğimi yapmasını istiyorum. Bunun içinde byte karşılaştırma yapıyorum. W'ye h'07' sayısını yükleyip bunu PORTA ile XORWF işlemine sokuyorum. Bölümün başındaki "PİC ÖĞRENİYORUM" kitabında da bahsettiği gibi byte karşılaştırma için XORWF komutu kullanılıyor. Fakat bir türlü bu komutla işlem yapamadım. Yani karşılaştırılan bytelar aynı ise STATUS,2 "1" olması lazım. Kodlar aşağıda. Bilen arkaşların bir inceleyip yorumlarını bekliyorum. Bu arada byte karşılaştırma için önerecekleri bir yöntem varsa yazarlarsa sevinirim.
Kod:
LIST P=16F84
INCLUDE "P16F84.INC"
ORG h'00'
GOTO BASLA
CLRF PORTA
BASLA BSF STATUS,5
CLRF TRISA
MOVLW h'FF'
MOVWF TRISB
BCF STATUS,5
CLRF PORTA
CLRW
BUT_KONT
BTFSS PORTB,1
GOTO BUT_KONT
MOVLW h'07'
ANDWF PORTB,W
BTFSS STATUS,2
GOTO BUT_KONT
MOVLW h'FF'
MOVWF PORTA
DUR
GOTO DUR
END
Pardon arkadaşlar en son ANDWF ile denemiştim o kalmış orda. ANDWF yerine XORWF olacak. Proteus kullanan başka arkdaşlarda deneyip sonucu bizimle paylaşırsa sevinirim.
Butonlara basılmıyorken bir direnç ile GND'ye bağlı butonlar. Butona basıldığında Vdd oluyor. ORda sorun yok arkadaşlar. Çünkü butona basılmasıyla başka işlemler yapmak istediğimde sorunsuz yapıyorum. Ama şu XORWF komutunda ise takıldım. PORTB ile bir register içeriğini XORWF yaptığımda aynı olmalarına rağmen STATUS,2 hiç 1 olmuyor ((
protesus da topraklama ile ilgili sorun yaşıyorum...örneğin transistör üzrinden toprağa akım gitmiyo...butonları aktif kullanamıyorum programda yerine koysamda..böle bi problemle karşılaşan varmı..arkadaşım sana gelince kodlamalarda aralara boşluk bırakırsan belki faydalı olabilir..bilmiyorum birleşik veya ayrı yazılmasının etkisi varmı ama bide öyle dene..ben ayrı yazıorum çalışıyo...programdada bi ayrı register kullansan ..örneğin say gibi...movf say,w ve xorwf h'07' desen deişebilir sonuç...karşılaştırma sağlam çalışıyo