Geçen yazımda pic içerisindeki karşılaştırıcı modülünü kullanarak örnek yapacağımı söylemiştim. Karşılaştırma Modülü yazımı incelemek için tıklayınız. Yapacağım örnekte CNY70 sensörünü kullanacağım bu sensör çizgi izleyen robotlarda da kullanılmaktadır. Uygulamada sensör üzerine beyaz kağıt getirdiğimizde led yanmasını sağlayacağım.
CNY70 sensörü üzerine beyaz kağıt getirdiğinizde ben yaklaşık olarak 2V gibi bir değer gözlemledim diğer durumda ise 5V’a yakın bir değer gözlemledim bu yüzden 2.5V referans değerini tercih ettim bir önceki yazımda da bunun için yapılacak ayarları göstermiştim. Şimdide kodları ve çalışır halini göstereceğim. Yukarıda CNY70 ile yapacağımız bağlantıyı görmektesiniz. Aşağıdada devrenin bağlantıları mevcut.
Devreyi yazdıktan kodlamaya başlayalım. İlk önce kullanacağımız PIC ve Osilatör ayarlarını yapıyoruz.
LIST P=16F628A
INCLUDE "P16F628A.INC"
__CONFIG _XT_OSC & _CP_OFF
ORG 0
CLRF PORTB
Daha sonra önceki yazımda anlattığım ayarlama ile 2.5 V referans değeri ayarlıyoruz.VRCON biti bank1 de olduğundan ayarlamasını bank1 e geçtikten sonra yapıyoruz.
MOVLW b'00100010'
MOVWF CMCON
BSF STATUS,RP0
CLRF TRISB
MOVLW b'10101100'
MOVWF VRCON
BCF STATUS,RP0
Şimdi Kontrol ediyoruz kağıt beyaz mı ? yani referans gerilimimiz 2.5 v’nin altında mı altındaysa Ledi yak 2.5 Voltun üstündeyse Led OFF’a git ve ledi söndür. Ledin durumuna karar verdikten sonra tekrar kontrola döndürmeyide unutmuyoruz.
BCF STATUS,RP0
Kontrol BTFSS CMCON,6
GOTO LEDOFF
BSF PORTB,1
GOTO Kontrol
LEDOFF BCF PORTB,1
GOTO Kontrol
END
Uygulamamız burda bitiyor ASM ve Hex Dosyaları için tıklayın.