KESMELER KESMELER
(Interrupts) (Interrupts)
Mikrodenetleyiciler 1
5.Hafta
5.Hafta
Kesmeler Kesmeler
Kesme, mikrodenetleyicinin gerçekleştirdiği işleme bakmaksızın belirli durumların veya olayların oluşması halinde isteklere/olaylara cevap verilmesini sağlayan mekanizmadır. Oluşan her kesme olayı ile
programın normal işlenme süreci değiştirilerek program durdurulur ve
kesme alt programı işletildikten sonra ana programın işlenmesi kalınan
noktadan devam eder. Kesme kaynakları;
Kesme Kaydedici Blok Diyagramları
Kesme Kaydedici Blok Diyagramları
Mikrodenetleyiciler 4
Kesme İsteği/Olayı Lojik Devresi
Kesme İsteği/Olayı Lojik Devresi
RB0/INT KESME OLAYI RB0/INT KESME OLAYI
RB0/INT girişinden harici olarak kesme oluşturulur.
Bu girişe uygulanan interrupt sinyalinin hangi kenarda olacağı OPTION 6. biti ile belirlenir.
INTCON 7.biti GIE ile kesmelerine izin verilir.
INTCON 4. biti INTE ile kesmeye izin verilir.
INTCON 1. biti INTF bitinin 1 olması kesme oluştuğunu 0 olursa harici kesme
oluşmadığının bildirir.
OPTION
INTCON
list p=pic16f877a
#include<p16f877a.inc>
__CONFIG _HS_OSC & _WDT_OFF org 0x000
goto basla org 0x004 goto kesme
basla:
bsf STATUS, RP0 ; Bank 1' gecis
movlw 0x01
movwf TRISB ; PortB I/O atama bcf OPTION_REG, INTEDG
bsf OPTION_REG, NOT_RBPU ; Pull-up disable bcf STATUS, RP0 ; Bank 0'a gecis
clrf PORTB ; Portu temizle bsf PORTB, 7 ; RB7 çıkış lojik1
bsf INTCON, INTE ; RB/INT enable bsf INTCON, GIE ; Global Interrupt Enable
git:
goto git ; sonsuz dongu
kesme:
; Interrupt altprogrami
bcf INTCON, INTF ; bayragi temizle btfss PORTB, 7 ; RB7 lojik1 mi goto alt_prg
bcf PORTB, 7 ; RB7 lojik0 ata retfie
alt_prg:
bsf PORTB,7 ; RB7 lojik1 ata retfie
end
Örnek: RB0 girişine bağlı buton ile harici kesme;Başlangıçta ON durumunda olan RB7
ye bağlı LED, RB0 dan kaynaklanan kesme olayında LED OFF konumuna alınmakta
yeni bir kesme ile yeniden ON konumuna alınması istenmektedir.
PORTB nin 4,5,6,7 pinlerinden en az birinde durum değişikliği olması durumunda RB Port değişimi kesme olayı meydana gelir.
INTCON 7.biti GIE ile kesmelerine izin verilir.
INTCON 3. biti RBIE biti ile kesmeye izin verilir.
INTCON 0. biti RBIF kesme bayrağı biti PORTB nin 4,5,6,7 pinlerindeki değişikliği bildirir.
PORTB Değişim Kesme Olayı
INTCON
list p=pic16f877a
#include<p16f877a.inc>
__CONFIG 0x3F31 ;__CONFIG b'11111100110001'
org 0x000 goto basla org 0x004 goto ISR basla:
bsf STATUS, RP0 ; Bank 1' gecis
movlw 0xF0
movwf TRISB ; PortB I/O atama
bsf OPTION_REG, NOT_RBPU ; Pull-up disable bcf STATUS, RP0 ; Bank 0'a gecis
movlw 0xFF
movwf PORTB ;PortB lojik1
bsf INTCON, RBIE ; PORTB degisim kesme enable
bsf INTCON, GIE ; Global Kesme Enable dongu:
goto dongu ;sonsuz dongu
ISR:
;kesme programi
bcf INTCON, RBIF ; kesme bayragi sil btfss PORTB, 7 ; RB7 test et goto LED0
btfss PORTB, 6 ; RB6 test et goto LED1
btfss PORTB, 5 ; RB5 test et goto LED2
btfss PORTB, 4 ; RB4 test et goto LED3
retfie LED0:
bcf PORTB,0 retfie
LED1:
bcf PORTB,1 retfie
LED2:
bcf PORTB,2 retfie
LED3:
bcf PORTB,3 retfie
end
Örnek: PORTB nin 4,5,6,7 pinlerindeki butonlardan herhangi birisine basılması ile
kesme alt programı çalışarak kesme olayı hangi pinin de olduğunu PORTB nin 0,1,2,3
pinlerindeki LED lerde görülmesi.
Çalışma Sorusu:
1. RB0 pinine bağlı olan bir tuşa her basıldığında
kesme üreten ve PD4-PD7 pinlerine bağlı olan 4
adet led ile 0-9 arasında binary sayan program
kodlarını yazın.
TIMER0 Modülü TIMER0 Modülü
Timer0 modül, timer/sayaç aşağıdaki özelliklere sahiptir.
• 8 bitlik timer/sayaç ,
• Okunabilir ve yazılabilir ,
• 8 bitlik programlanabilir prescaler.,
• İçten veya dıştan saat ayarı ,
• FFh` tan 00h`ye taşma üzeri kesme ,
• Dış saatin kenar seçimi ,
Timer modu; TOCS biti (OPTION<5>) biti lojik 0 atandığında TMR0 kaydedicinin içeriği dahili osilatör frekansı ile artar. Eğer temizlenmesiyle seçilir. Timer modunda Timer0 modülü her bir komut sürecini uzatır. Eğer, Sayaç modu kullanılması için TOCS biti (OPTION<5>) lojik 1 olarak atanır ve RA4 girişinden dışarıdan gelen değişim ile TMR0 kaydedici içeriği artar. Bu modda, artım için yükselen ve düşen kenar tetiklemesi TOSE (OPTION<4>) tarafından belirlenmektedir. TOSE bitinin temizlenmesi ile yükselen sınırları seçecektir.
OPTION_REG
•Bit 5 TOCS: TMR0 saat kaynağını seçme biti
•0 = Dahili komut çevrim clocku kullanılır (CLKOUT)
•1 = RA4/TOCK1 pininden (uçundan) gelen darbeler clock kaynağı olur
•Bit 4 TOSE: TMR0 kaynak kenarı seçme biti (Eğer TOCS = 1 ise)
•0 = RA4/TOCK1 pininden gelen her yükselen kenar için bir artırılır
•1 = RA4/TOCK1 pininden gelen her düşen kenar için bir artırılır.
TMR0 Frekans Önbölücü(PreScaler) TMR0 Frekans Önbölücü(PreScaler)
Ayarları Ayarları
Mikrodenetleyiciler 12
Bit 3 PSA: Önbölücü / önölçekleme yapılacak birimi seçme biti 0 = Önbölücü TMR0 modülü için ayrılır
1 = Önbölücü WDT için ayrılır.
Bit 2,1,0; PS2, PS1, PS0: Önbölücü oranı seçme bitleri OPTION_RE
G
TMR0 Sayıcısının Başlangıç Değerinin Atanması TMR0 Sayıcısının Başlangıç Değerinin Atanması
TMR0 sayıcısı h’00’ değeri yerine istenilen bir sayıdan başlatılabilir.
Kesme Gecikme Süresi= = T
komut zamanı*Prescaler değeri*(256-TMR0 başlangıç sayısı)
Formülü ile istenilen geçikme süresi hesaplanabilir. Formülde TMR0 başlangıç sayısı ve Prescaler değeri ondalık olarak alınmalıdır.
TMR0 ile elde edilebilen en büyük kesme gecikme süresi ;
PD: ‘111’ seçilerek Fosc=4MHz ise T
komut zamanı=1/(fosc/4)=1µs bulunur.
Kesme Gecikme Süresi= T
komut zamanı*Prescaler değeri*(256-TMR0 başlangıç sayısı)
= 1µs*256*(256-0)
= 65536µs = 65,5 ms olur.
1 ms zaman gecikmesi için:
Kesme Gecikme Süresi= T
komut zamanı*Prescaler değeri*(256-TMR0 başlangıç sayısı)
= 1µs*8*(256-131)
= 1000µs = 1 ms olur.
TMR0 Kesmesi TMR0 Kesmesi
TMR0 blok diyagramı
TMR0 kesmesi, TMR0 kaydedicisinin değeri FFh`dan 00h`ye
geçtiğinde üretilmektedir. Bu TMR0 taşması sonucunda TOIF
bayrağı (INTCON<2>) lojik1 olur. Kesme istenmiyorsa, TOIE
bitinin (INTCON<5>) temizlenmesi ile gizlenebilir. Yeni kesme
alınabilmesi için (INTCON<5>) TOIF bayrağı, yazılımdan
silinmelidir.
Örnek Hesaplama İşlemleri Örnek Hesaplama İşlemleri
OPTION yazmacının PS0:PS2 bitleri ‘000’ seçildiğinde TMR0 sayma aralığı ve kesme gecikme sürelerinin bulunması:
PD değerleri ’000’ seçildiğinde TMR0 oranı ½ olmasıyla frekans 2’ye bölünmesi zamanın 2 ile çarpılması olduğunda (1/(1/2)=2) komut zamanının 2 katı
sürede TMR0 değerini bir arttıracaktır.
Fosc=4MHz ise T
komut zamanı=1/(fosc/4)=1µs
TMR0 sayma aralığı zamanı= T
komut zamanı*TMR0 oranı= 1µs*2= 2µs
Kesme Gecikmesi= TMR0 sayma aralığı zamanı*256= 512µs
list p=pic16f877a
#include<p16f877a.inc>
__CONFIG _CP_OFF & _WDT_OFF &
_PWRTE_ON & _XT_OSC &
_BODEN_OFF & _LVP_OFF & _CPD_OFF SAYICI_250 equ 0x20
SAYICI_4 equ 0x21 org 0x000
goto basla org 0x004 goto ISR basla:
clrf PORTB bsf STATUS, 5 clrf TRISB
movlw 0x02 ;b'00000010 movwf OPTION_REG
bcf STATUS, 5 bsf INTCON,7
bsf INTCON,5 dongu:
goto dongu
Örnek: TMR0 zamanlayıcısı kullanılarak 1 sn zaman gecikmesi elde edilmesi uygulaması. PortB.0 a bağlı LED i 1sn aralıkla yakıp söndüren program.
ISR:
bcf INTCON,2 movlw 0x83 movwf TMR0 bcf STATUS,Z incf SAYICI_250,f movlw d'250'
subwf SAYICI_250,w btfss STATUS,Z retfie
bcf STATUS,Z incf SAYICI_4,f movlw d'4'
subwf SAYICI_4,w btfss STATUS,Z retfie
clrf SAYICI_250 clrf SAYICI_4 btfss PORTB,0 goto YAK goto SONDUR YAK:
bsf PORTB,0 retfie
SONDUR:
bcf PORTB,0 retfie
end
TIMER1 Modülü TIMER1 Modülü
Timer1 modül, zamanlayıcı/sayıcı olmak üzere 2 farklı modda çalıştırılabilir.
• 16 bitlik zamanlayıcı/sayıcı,
• Okunabilir ve yazılabilir 2 adet 8-bit yazmaca sahip (TMR1H ve TMR1L),
• 8 bitlik programlanabilir prescaler,
• İçten ve dıştan saat seçimi,
• FFFFh değerinden 0000h değerine geçilirken kesme oluşur,
• CCP modülünden resetleme,
TIMER1 Blok diyagramı TIMER1 Blok diyagramı
Timer1’in aktif/pasif, ayarlama/sıfırlama işlemleri gösterilmektedir.
TIMER1 ZAMANLAYICI MOD TIMER1 ZAMANLAYICI MOD
TIMER1 SAYICI MOD TIMER1 SAYICI MOD
Zamanlayıcı 1 (TIMER1) İşlemleri Zamanlayıcı 1 (TIMER1) İşlemleri
Timer1 aşağıdaki modlardan birini işletebilir.
• Zamanlayıcı olarak
• Senkronize sayacı olarak
• Asenkronize sayacı olarak
TMR1CS (T1CON<1>) biti bu modlardan hangisinin
çalıştırılacağına karar verir. Zamanlayıcı modunda
Timer1 her komut çevrimi artışları, sayaç modunda her
harici saat girişi yükselmesini belirler. Timer1 osilatör
aktifken RC1/T10SI ve RC0/T10S0/T1CKI pinleri giriş
olurlar. TRISC<1:0> değeri ihmal edilir.
T1CON: TIMER1 Kontrol Kaydedicisi T1CON: TIMER1 Kontrol Kaydedicisi
TIMER1’deki işlemlerin kontrol edildiği ve i şlemler yürütülürken bazı bilgilerin alındığı kaydedicidir.
TMR1ON: Timer1’ e yetki veren bittir. TMR1ON biti 1 yapıldığında Timer1 kullanılır durumdadır, 0 ise kullanım dışıdır.
TMR1CS:Timer 1 için clock kaynağının seçildiği bittir. TMR1CS 1 ise clock kaynağı olarak RC0/T1OSO/T1CKI pininden gelen sinyalin yükselen kenarları seçilir. TMR1CS’nin 0 olması halinde ise dahili clock kaynağı kullanılır.
T1SYNC:Harici clock kaynağını n senkron kontrolünü yapan bittir. Eğer harici kaynak ile Timer1 e ş zamanlı çalışmıyorsa T1SYNC 1 seviyesinde olur. Eğer eş zamanlı bir çalışma var ise T1SYNC 0 seviyesindedir.
T1OSCEN: Timer1 osilatör kaynağı yetkilendirme bitidir. T1OSCEN 1 ise
osilatör kaynağı etkindir, 0 ise kullanım dışıdır.
4-5 T1CKPS0,T1CKPS1 :Timer1 giriş sinyalinin bölme (prescaler)
oranının seçildiği bitlerdir. Bu bitlerin aldığı değerlere göre bölme prescaler değeri
değişmekte ve buna bağlı olarak Timer1 artma frekans ı değişmektedir.
11 = 1:8 Prescaler değeri
10 = 1:4 Prescaler değeri
01 = 1:2 Prescaler değeri
00 = 1:1 Prescaler değeri
LIST P=16F877A
INCLUDE "P16F877A.INC"
__CONFIG h'3F31' ;__CONFIG _CP_OFF & _WDT_OFF &
_PWRTE_ON
& _XT_OSC & _BODEN_OFF & _LVP_OFF & _CPD_OFF ; veya __CONFIG b'11111100110001'
;****Program belleginin yapisi***
ORG h'000' GOTO BASLA ORG h'004'
GOTO KESME_ALTPROG BASLA
CLRF PORTB ;PORTB'nin içerigini temizleyerek LED'leri söndürür
BSF STATUS, 5 ;BANK1'e geç
CLRF TRISB ;PORTB'nin uçlarini çikis yap BSF PIE1,0 ;TMR1IE (PIE1<0>) (TMR1 interrupt enable bit)
BCF STATUS, 5 ;BANK0'a geç
BSF INTCON,7 ;Tüm kesmelere izin ver (GIE=1)
BSF INTCON,6 ;PEIE=1 Çevresel kesmelere izin verildi BCF T1CON,1 ; TMR1CS : Timer1 Clock Source Select bit = 0
;(Internal clock Fosc/4)
BSF T1CON,0 ;Timer1 çalistir (1= Enables Timer1,0=Stops Timer1)
BSF T1CON,5 ; T1CON 5.ve 4. bitleri '11' yapilinca frekans
BSF T1CON,4 ; bölme orani 1/8 olmaktadir.
BCF STATUS, 5 ;BANK0'a geç
LOOP
GOTO LOOP
TMR1 zamanlayıcısını kullanarak 1/2 sn (500 ms) zaman gecikmesi elde edilmesi uygulaması
KESME_ALTPROG ; 500 ms sure dolunca kesme olayi olusur.
BCF PIR1,0 ;TMR1IF TASMA
BAYRAGINI SIL
MOVLW h'0B' ;h'OBDC' SAYISINI TMR1H
VE TMR1L YAZMAÇLARINA YÜKLE
MOVWF TMR1H
MOVLW h'DC' ;h'OBDC' SAYISINI TMR1H VE TMR1L YÜKLE
MOVWF TMR1L
BTFSS PORTB,0 ; RB0'i TEST ET (1 MI?)
GOTO YAK ; HAYIR, RB0=ON
RB1=OFF
GOTO SONDUR ; EVET, RB0=OFF RB1=ON YAK
BSF PORTB,0 ; RB0 ON
BCF PORTB,1 ; RB1 OFF
RETFIE SONDUR
BCF PORTB,0 ; RB0 OFF
BSF PORTB,1 ; RB1 ON
RETFIE
;=======================================================
END ;Prog. Sonu
Zamanlayıcı 2 (TIMER2) Modülü Zamanlayıcı 2 (TIMER2) Modülü
Timer2 modül aşağıdaki özelliklere sahiptir.
• 8 bit zamanlayıcı (TMR2 kaydedici),
• 8 bit peryot kaydedici (PR2),
• Okunabilir ve yazılabilir,
• Yazılım ile programlanabilir prescaler,
• TMR2, PR2 eşlemesinde kesme,
• Saat kaymasını üretmek için TMR2 çıkışının seçimli kullanımı SSP modülü,
TIMER2 Blok diyagramı
Zamanlayıcı 2 (TIMER2) İşlemleri Zamanlayıcı 2 (TIMER2) İşlemleri
Timer2, CCP modülünün PWM modu için PWM zaman tabanı olarak kullanılabilir. Giriş saati (Fosc/4)‘in prescaler seçeneğine sahip olur.
Aşağıdaki durumlardan herhangi biri gerçekleştiğinde prescaler ve postscaler sayaçları temizlenirler.
• TMR2 kaydedicisine yazıldığında ,
• T2CON kaydedicisine yazıldığında,
• Herhangi bir aygıt hazır olduğunda ,
***T2CON yazıldığında, TMR2 temizlenemez.
T2CON: TIMER2 Kontrol Kaydedicisi T2CON: TIMER2 Kontrol Kaydedicisi
T2CKPS0,T2CKPS1: Timer2’de prescaler’in ayarlandığı bitlerdir. Bu bitlerin aldığı değerlere göre prescaler değeri değişmektedir.
When using the TMR2 timer, one should know several specific details that have to do with its
registers:
• Upon the power is on, the PR2 register contains the value FFh.
• Both prescaler and postscaler are cleared by writing to the TMR2 register.
• Both prescaler and postscaler are cleared by writing to the T2CON register.
• On any reset - you guess, both prescaler and postscaler are cleared.
TMR2ON: Timer2’ e yetki veren bittir. TMR2ON biti 1 yapıldığında Timer2 kullanılır durumdadır, 0 ise kullanım dışıdır.
TOUTPS3:TOUTPS0: Timer2’de postscaler ayarlarını n yapıldığı bitlerdir. Bu
bitlerin aldığı değerlerle timer2 değişik postscaler değerlerine ulaşmaktadır.
TMR2 zamanlayıcısını kullanarak 1 sn zaman gecikmesi elde edilmesi uygulaması TMR2 zamanlayıcısını kullanarak 1 sn zaman gecikmesi elde edilmesi uygulaması
LIST P=16F877A
INCLUDE "P16F877A.INC"
__CONFIG h'3F31' ;__CONFIG _CP_OFF & _WDT_OFF &
_PWRTE_ON & _XT_OSC & _BODEN_OFF & _LVP_OFF &
_CPD_OFF
; veya __CONFIG b'11111100110001' SAYICI_250 EQU h'20'
SAYICI_4 EQU h'21'
ORG h'000' GOTO BASLA ORG h'004'
GOTO KESME_ALTPROG BASLA
CLRF PORTB BSF STATUS, 5 CLRF TRISB BCF OPTION_REG,7
BSF PIE1,1 ; TMR2 ile PR2 degeri ayni ; olunca kesme olayi izni verildi)
MOVLW d'125' ; TMR2 üst sayma degeri d'125' olarak MOVWF PR2 ; TMR2'ye yüklendi
BCF STATUS, 5 ;BANK0'a geç
MOVLW b'00111100' ;bit(6:3)= 0111->1/8 son frekans bölme,bit(2)TMR2ON=1,
MOVWF T2CON ;bit (1:0) = 00 -> 1/1 ön frekans bölücü
BSF INTCON,7 BSF INTCON,6 LOOP
GOTO LOOP
KESME_ALTPROG
BCF PIR1,1 ;TMR2IF KESME BAYRAGINI SIL
BCF STATUS,Z ;STATUS ZERO BAYRAGINI SIL INCF SAYICI_250,F ; HER 1 MS DE SAYICI DEGERI BIR ARTAR
MOVLW d'250‘ ; W <- d'250‘
SUBWF SAYICI_250,W ; W = SAYICI_250 - W
BTFSS STATUS,Z ; SAYICI_250 =250 DEGERINE ULASTI MI?
RETFIE
BCF STATUS,Z
INCF SAYICI_4,F ;SAYICI_4 = (her 250 ms'de bir artar)
MOVLW d'4' ; W <- d'4'
SUBWF SAYICI_4,W ; W = SAYICI - W
BTFSS STATUS,Z ; SAYICI_4 =4 DEGERINE ULASTI MI?
RETFIE
CLRF SAYICI_250 SAYICILARI SIFIRLA (1 sn SÜRE ELDE EDILDI)
CLRF SAYICI_4
BTFSS PORTB,0 ; RB0'I TEST ET (1 MI?)
GOTO YAK ; HAYIR, RB0=ON RB1=OFF
GOTO SONDUR ; EVET, RB0=OFF RB1=ON YAK
BSF PORTB,0 ; RB0 ON
BCF PORTB,1 ; RB1 OFF
RETFIE SONDUR
BCF PORTB,0 ; RB0 OFF
BSF PORTB,1 ; RB1 ON
RETFIE
END
WDT (Watch-dog Timer - Zamanlayıcı) WDT (Watch-dog Timer - Zamanlayıcı)
WDT 'nin kullanım amacı, PIC 'i veya herhangi bir işlemciyi bir döngüde kilitlenmekten uzak tutmaktır. Böyle bir durum yazılımda bir hata veya harici bir elektriksel kıvılcımlar nedeniyle ortaya çıkabilir. WDT, PIC 'e bir çeşit kalp atışı sağlar ve eğer WDT yazmacını düzenli aralıklarla temizlenmezse bu kalp atışları PIC 'i resete zorlar. Bu mükemmel bir özelliktir ve Güvenlik Sistemleri gibi ana kontrol panelinde bir kilitlenmenin asla söz konusu olmaması gereken uygulamalar için birebirdir. Güç koruması gereken ve yalnızca periyodik olarak açılması gereken ürünlerde WDT 'den faydalanırlar. WDT’ın birkaç özelliği;
Watchdog Timer, başka hâricî bileşenler talep etmeyen serbest çalışan on-chip RC osilatörüdür.
Bu osilatörün WDT’a sağladığı nominal zaman aşımı süresi 18 ms’dir. Prescaler değeri artırılarak bu değer 2-3 sn’ye kadar çıkarılabilir.
WDT RC osilatörü , OSC1/CLKIN pininin RC osilatöründen ayrılmıştır. Yani, WDT , OSC1/CLKIN ve OSC2/CLKOUT pinlerindeki saat palsı (clock) dursa bile çalışacaktır. Örneğin , SLEEP komutu yürürlüğe konduğu durumlarda buna rastlanır. Normal işletim esnasında bir WDT zaman aşımı (time-out) PIC reset’i yaratacaktır. Eğer PIC SLEEP modunda ise bir WDT cihazın uyanmasını (wake-up) ve normal işletimine devam etmesine sebep olur.
OPTION kayıtçısının sadece ilk 4 biti (prescaler ve TMR0/WDT seçim bitleri) WDT’la ilgilidir.
OPTION kayıtçısının 3.biti 1 yapılarak WDT seçilir ve prescaler bitleri (OPTION<0:2>) ile de frekans bölme değeri ayarlanır.
WDT’ın, CLRWDT komutuyla reset yapıldıktan sonra, saymasını tamamlayıp baştan tekrar saymaya başladığı ana kadar geçen süreye zaman aşımı süresi (time-out) denir. WDT saymasını tamamladığı anda zaman aşımı sinyali verir. Bu sinyal STATUS kayıtçısının 3. ve 4.
bitlerindeki (TO ve PD bayrakları) bayrakların durumunu değiştirir.
Eğer WDT ile, kontrolden çıkmış bir programı tekrar resetleyerek, kontrolü ele almayı
planladıysanız , ana program başında STATUS kayıtçısının bu bitlerini kontrol etmelisiniz. Daha sonra da reset gerçekleştikten hemen sonra da bu bitleri kontrol etmelisiniz. Böylece WDT’ın zaman aşımı süresi dolduğunda program akışını başka bir yere dallandırabilirsiniz.
Örnek program parçası aşağıdaki gibi olabilir.
WDT_KONTROL BTFSS STATUS,TO ;TO bayrağı 1 mi?
CALL KUR ;hayır (zaman aşımı oluşmuş) , KUR altprogramını çağır.
MOVLW h’CC’ ;Evet (zaman aşımı oluşmamış) programa devam et.
.
.
PIC içerisinde bulunan WDT zamanlayıcısının durumunu konfigürasyon bitlerini yazarken belirleyebiliriz. Bu konfigürasyon bitlerini program içerinde aşağıdaki gibi yazabiliriz.
_CONFIG _CP_OFF & _WDT_ON &_ PWRT_ON & _RC_OSC
Zaman Aşım ı Süresi Zaman Aşım ı Süresi
WDT'nin CLRWDT komutuyla reset yapıldıktan sonra saymasını tamamlayıp, baştan
tekrar saymaya başladığı anda kadar geçen süredir. WDT'nin saymasını tamamladığı
anda zaman aşımı sinyali verir. Bu sinyal STATUS registerin 3. ve 4. bit'indeki flagların
durumunu değiştirir .
WDT zamanlayıcısı blok diyagramı WDT zamanlayıcısı blok diyagramı