Timer1 Gecikmesini Kullanarak Farklı Değerlerde Kesmeler Oluşturmak

Timer1 Gecikmesini Kullanarak Farklı Değerlerde Kesmeler Oluşturmak
      Tmr1 Gecikmesini kullanarak kesme içerisine girdiğimizde kullandığımız döngümüz ve Tmr1 in 16 bitlik scala sının verdiği imkanla Tmr0 dan çok daha esnek çalışabilme imkanını buluyoruz. çok küçük değerleri de (Nano Saniye Mikro Saniye) çok büyük değerleri de (Mili Saniye Saniye Dakika) hesaplama imkanımız oluyor. kod içerisinde yaptığım açıklamalar ve Tmr1 hesaplaması sayesinde istediğiniz değerleri hesaplaya bileceksiniz. 500 Nano Saniye ... 67 Saniye Arasındaki Değerleri hesaplamak için 8Mhz kristal ile çalışmanızı tavsiye ederim



							#INCLUDE "P16F877.INC"
SAYAC EQU 0X21
ORG 0X00
GOTO MAIN
ORG 0X04
GOTO KESME

MAIN
BANKSEL TRISB
CLRF TRISB	;B PORTU ÇIKIŞ YAPILDI

BANKSEL T1CON	;T1ON  tmr1 sayacı açıldı 0.biti
MOVLW B'000001'	;5 ve 4.bitler psa değerini verecektir
MOVWF T1CON		;00 oldugu için 1:1 psa değeri belirledik
				;T1con 7ve6. bitleri kullanılmadığı için son5 bitine değer verdik
BCF PIR1,0			;kesme bayrağı ilk etapta kapalı olacak
BANKSEL PIE1
BSF PIE1,0			;tmr1 kesmesi aktif hale gelecek

BANKSEL PORTB
MOVLW B'10100101'	;ilk başta yanacaklar ledleri belirledik
MOVWF PORTB		;tmr1 değerini 3CB0 verdiğimizde
MOVLW 0X3C		;(FFFF-Tmr1)*Psa*Tkomut
MOVWF TMR1H	;FFFF-3CB0 = 50.000 
MOVLW 0XB0		;50.000 * 1 * 0.5 = 25miliSaniye
MOVWF TMR1L		;8mhz de Tkomut 0,5 mikroSaniye dir
CLRF SAYAC
MOVLW B'11000000'		;genel ve yerel kesmeleride aktif hale getirdik
MOVWF INTCON

DONGU
	MOVLW 0X50		;dongu içerisine 80.gelişte her gelişte 25 milisaniye geçmiş olacaktır
	SUBWF SAYAC,W	;25 miliSaniye * 80 = 2Saniye geçmiş olacaktır  hex (0x50)=80
	BTFSS STATUS,C		;0x50 degerini 0x28 yaparsak 1 saniye geçmiş olacaktır
	GOTO DONGU
	COMF PORTB,W
TERS_AL
	MOVWF PORTB
	CLRF SAYAC
	GOTO DONGU
KESME
	INCF SAYAC,F
	BANKSEL PIR1
	BCF PIR1,0
	MOVLW 0X3C
	MOVWF TMR1H
	MOVLW 0XB0
	MOVWF TMR1L
	RETFIE			;~~ www.mikroislemciler.com ~~
;8Mhz için Yaptığım birkaç hesaplama	Tmr1 = 3CB0 alındığında psa ve dongu degerlerine göre 
;T1CON 	5. ve 4. bit Degerleri 	Dongu icindeki W degeri	Zaman Gecikmesi
;		00 > 1:1 psa			0x00				25 Mili Saniye (En Düşük Değerimiz)
;		00>  1:1 psa			0xFF				6,4 Saniye (1:1 PSA için en yüksek değer)
;		11>  1:8 psa			0x00				200 MiliSaniye (1:8 psa için en düşük deger)
;		11>  1:8 psa			0xFF				51,2 Saniye (En yüksek Değer)

;Tmr1 degeri 0x00 alınırsa 1:8 psa değerinde 0xFF döngü değerinde Tmr1 in alacağı maximum değeri bulmuş oluruz
;Tek döngü içerisinde en fazla 67 saniye (1 dakika 7 saniye olacaktır) ___ Değerlerin 8mhz için oldugunu unutmayınız
;65536 * 8 * 0.5 = 262 miliSaniye 
;256 döngüde 67 saniye olacaktır
;Tmr1 degerini FFFE olarak alırsak 1:1psa değeri ve 0x00 döngüde 500 nanosaniye gibi çok küçük bir değeride hesaplamış olacağız
END
						



Proje kodlarını ve Proteus ISIS Tasarımını İndirmek İçin Aşağıdaki Bağlantıya Tıklayınız
download





Gönderen : Erdoğan CANBAY
826
18-09-2018