Timer0 ile Kesme Oluşturup Led Yakmak

Timer0 ile Kesme Oluşturup Led Yakmak
      Tmr0 Kesmesini kullanarak 125 Mili saniye ... 16 Saniye Arasında kesme oluşturabileceğimiz kod örneği. kod içerisinde yaptığım açıklamaları ve yönlendirmeleri dikkate alarak option_reg üzerinden yapacağınız değişikliklerle 125 mili saniye 250 mili saniye ... 1 saniye 2 saniye... 16 saniye gibi farklı değerlerde kesmeler üretip bağlı led üzerinde değişiklikleri gözlemleye bileceksiniz.



							#INCLUDE "P16F877.INC"
TMR0SAYACI EQU 0X25
ORG 0X00
GOTO MAIN
ORG 0X04			;Herhangi Bir Kesme Gelirse bu adrese dallanacak
GOTO KESME		;beliredliğimiz kesme gelince kesme alt dalına yönlenecek

MAIN
BANKSEL TRISB
BCF TRISB,0		;B,0 A led bağladığımız için çıkış yapıyoruz
CALL ILK_ISLEMLER	;ilk ayarları yapacağız

SON				;ilk ayarlama yapıldıktan sonra
GOTO SON

ILK_ISLEMLER
	CLRF TMR0SAYACI	;Tmr0 8 bittir
	BANKSEL OPTION_REG	;option reg ile tmr0 ayarlamasını yapacağız
	MOVLW B'11010010'		;son3 bit psa değerini verir 010 = 1:8
	MOVWF OPTION_REG	

	BANKSEL PORTA
	BCF PORTB,0	

	MOVLW 0X06	;Tmr0 a ilk değer olarak 6 yukluyoruz 
	MOVWF TMR0	;(FF-Tmr0)*Tmr0Psa*Tkomut ile tmr 0 ın kaç mikrosaniyede bir çalışacağını hesaplıyoruz
				;MegaHertz mertebesinde Çalıştığımız için mikrosaniye üzerinden hesaplama yapacağız
	BSF INTCON,5	;tmr0 kesmesini aktif hale getiriyoruz
	BSF INTCON,7	;genel kesme açıyoruz
RETURN

KESME	
	BTFSS INTCON,2	;Tmr0 dan kesme gelince işlemleri yapıyoruz	  (Tmr0IF)
	GOTO INT_J1		;Tmr0 Kesmesi gelmediyse çıkıyoruz geldiğimiz yere dönüyoruz
	MOVLW 0X06		;yeniden tmr0 için 6 değerini yukluyoruz
	MOVWF TMR0
	BCF INTCON,2		;Tmr0IF tekrardan kapatılmalı eğer açık unutulursa kesme içinden çıkamayız
	INCF TMR0SAYACI,F
	MOVLW 0XFA		;2MiliSaniye de bir kesmeye geleceği için her 250. gelişte yakma yada söndürme işini yağacağız
	SUBWF TMR0SAYACI,W		;500 milisaniye (0,5 Saniye) de bir
	BTFSS STATUS,C
	GOTO INT_J1
	CLRF TMR0SAYACI
	BTFSS PORTB,0		;PortB,0 Yanıyorsa Sönürecek Sönükse Yakacak
	GOTO INT_J2
	BCF PORTB,0
	GOTO INT_J1

INT_J2
	BSF PORTB,0		;~~ WWW.MIKROISLEMCIM.COM ~~
INT_J1
	RETFIE
;4mhz kristal ile çalışıyoruz
;Option Reg in son 3 bitinden vereceğimiz psa değeri ile 
;Son3 Bit PSA degeri GecikmeSüresi
;    000         1:2              125 MiliSaniye
;    001	  1:4		   250 MiliSaniye
;    010         1:8              500 MiliSaniye  (0,5 Saniye)
;    011	  1:16	   1000 MiliSaniye (1Saniye)
;    100         1:32            2  Saniye
;    101	  1:64	   4 Saniye
;    110         1:128          8 Saniye
;    111	  1:256	   16 Saniye
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
1069
17-09-2018