PIC16F84 MK-də kəsilmənin təşkili
PIC16F84 MK-də kəsilmənin təyinatı və yerinə yetirilməsi PIC16F84 MK təməlində yaradılmış qurğularda baş verən daxili və ya xarici hadisələrə cavab vermək üçün kəsilmə istifadə edilir Bu hadisələrin izlənilərək onların aşkarlanması və uyğun əməliyyatların icrası üçün PIC16F84 MK –də INTCON SPR registri nəzərdə tutulmuşdur daxil olan kəsilmə siqnallarına cavab vermək və kəsilməyə xidmət proqramının digər siqnallar tərəfindən kəsilmədən başa çatdırılmasını təmin etmək üçün INTCON registrinin bitləri əsas proqramda uyğun şəkildə təyin edilməlidir
PIC16F84 MK-də kəsilmənin tipləri kəsilmə siqnallarının tipləri :daxili /xarici daxili kəsilmə siqnalları mənbələri : TMR0 taymerdən Time out (TO) PortB –nin RB(4-7) xətlərində kod dəyişməsi EEPROM –a yazı əməliyyatı zamanı səhvin yaranması Xarici kəsilmə siqnalı mənbəyi: RB0/INT pininə bağlanmış xarici dövrədən İNT siqnalı
Kəsilmənin təşkili alqoritmində əmməliyyatlar ardıcıllığı 1.Kəsilmə siqnallarının daxil edilməsi və onların əsas proqramda aşkarlanması 2.Əsas proqramın vəziyyətinin (PC-program counter, STATUS və W registrlərinin məzmunları) müvəqqəti olaraq lokal dəyişənlərdə vəya Stek registrlərində yadda saxlanılması 3.Kəsilməyə xidmət proqramının balanğıc ünvanını təyin edən kəsilmə vektoruna keçid (əsas proqramda 0x04 ünvanı üzrə ) 4.GOTO Kəsilməyə xidmət proqramının balanğıc ünvanına 5.Kəsilmədən qayıdış (RETFI) və əsas proqramın vəziyyətinin bərpası (PC, STATUS və W registrlərinə yüklənmə ) Əsas proqramın icrasının davamı
PIC16f84 MK-də əsas proqram üzrə kəsilmənin təşkilinin ümumi strukturu Kəsilmə siqnallarının (daxili/xarici)əsas proqramda aşkarlanması RETFİE proqramın başlanğıcı GOTO əsas proqram Əsas proqr.sonu H 0004H 00xFH əsas proqramın davamı.... Kəsil.xidmət proqram.başlanğıcı 5 4 Proqram yaddaşı Lokal verilənlər/ Stek reg. 1 2 PUSH PC 3 6 PUP PC 7
INTCON registrinin daxili məzmunu INTCON registrinin bitləri və onların təyinatı : GIE (general interrupt enable)- aktiv kəsilmələrə qlobal icazə EEIE(EEPROM interrupt enable)- EEPROM-dan kəsilməyə icazə TOIE(TO interrupt enable from TMR0 timer ) -TMR0 taymerdən TO kəsilməyə icazə INTE(external interrupt enable) -xarici İNT kəsilməyə icazə RBIE(interript enable from changing codes in PORTB) - PORTB-dəki kod dəyişməsindən kəsilməyə icazə TOIF (TO interrupt flag) –dən TMR0 taymer TO kəsilmə bayrağı INTF (External interrupt flag )- xarici kəsilmə bayrağı RBIF (interrupt flag from code changing in PORTB)- PORTB- dəki kod dəyişməsindən kəsilmə bayrağı
INTCON registrinin daxili strukturu İcazə bitləri proqramdan təyin edilir Kəsilmə aşkarlandıqda uyğun bayraq bitləri avtomatik qalxır,lakin proqramdan endirilə bilər INTE RBIF INTFTOIFRBIE T0IEEEIE GIE Kəsilmələrə qlobal icazə 0-aktiv kəsilmələrə qadağa 1- aktiv kəsilmələrə icazə EEPROM-dan kəsilməyə icazə 0-qadağa 1-icazə TMR0dan kəsilməyə icazə 0-qadağa 1-icazə RB(4-7) –dəki kod dəyişməsindən kəsilməyə icazə 0-qadağa 1-icazə Xarici kəsilməyə icazə 0- qadağa 1- icazə TMR0-dan TO kəsilmə bayrağı 0- enmiş 1- qalxmış RB0/INT pinindən kəsilmə bayrağı 0- enmiş 1- qalxmış RB(4-7) –dan kəsilmə bayrağı 0- enmiş 1-qalxmış
MK-nin çıxışlarına bağlanmış LED-lərin açarların vəziyyətindən asılı olaraq idarə edilməsi Mainn proqramda aşağıdakılar icra edilməlidir: PORTB –nin xətlərinin aktiv olması üçün daxili rezistorların onlara qoşulması programdan OPTIONregistrində NOT_ RBPU biti sıfırlanmalıdır PORTA0-a bağlanmış K1 açarı qapalı olduğu halda PORTB1-ə qoşulan LED1 yanır PORTB0/İNT -ə bağlanmış K2 açarı qapananda INT xarici kəsilməsi yaranır Kəsilməyə xidmət proqramı tərəfindən PORTB2-ə bağlanmış LED2 yanır,LED1 sönür LED2 RB2 RB1 LED1 RA0 K2 RB0/INT PIC16F84 dax.müq avimət K1K1
Xarici kəsilmə ilə idarə edilən LED1,LED2-nin yanmasının zaman diaqramı K1basılmışdır K2-nin basılması və xarici İNT kəsilməsinin yaranması LED1 Əsas proqramın icrası Əsas proqrama qayıdış İNT kəsilməsinə xidmət proqramının icrası LED2
LED-lərin vəziyyətinin idarəsi üçün alqoritmin blok-sxemi INTCON registrində INTE=1, GIE=1 -icazələr, INTF=0(bayraq endirilir) PortB(1,2)çıxış, PortB(0),PortA(0) giriş edilməsi OPTION sıfırlanması RA(0)=1? (K1-nin yoxlanılması) Hə yox LED1 yandır START kəsilmə Go to 0004H intr.vect INTCON(INTE=0,INTF=0) RB(1)=0 RB(2)=1 Gecikmə RB(2)=0 INTE=1; RETFIE Go tokəsilm.xidmət proqram. STARTkəsilm.xidmət K2 –ni yoxla yox TEST RB(2)=1 Hə kəsilməyə xidmətə keçid INTCON(INTF)=1 go to Test K1 Hə yox
TOIFbayrağı ilə LED-lərin idarəsi üçün sxem LED1 LED2 RB1 RB2 PIC16F84 Daxili rezistorlar TMR0 TOİF bayrağının qalxması
TMR0-da sayılan impulsların sayından asılı olaraq LED-lərin idarəsi yanma/sönmə LED1 1-ic dəfə əsas proqramda,sonradan isə LED1 və LED2 –TMR0-da TOİF qalxanda T yanma/sönmə müddətləri TMR0-da 16 ədəd impuls sayılana qədərdit TMR0-da TOİF kəsilməsi baş verənə qədər LED-lər yanıb/sönür Kəs.xidm.proq.icrası. TMR0 –da FFH –dən 00H TOIF=1 LED2 T 0 yanma T 0 sönmə T 7 yanma LED2-də 8 dəfə yanıb/sönmə dəfə T yanma/sönmə 8 dəfə yanma/sönmə T yanma/sönmə TMR0 =1-- T fyanma =0 – T sönmə LED1 T 0 yanma T 0 sönmə T 7 yanma T 0 flash T 0 dark T 7 f lash 8 dəfə LED1 yanma/sönmə 8 dəfə LED1 yanacaqdır Əsas.proq.icrası. TMR0 –da FFH –dən 00H TOIF=1
LED1,LED2-nin vəziyyətinin dəyişməsinin idarəsi alqoritmi TEST TMR0(4)=1 RETERN Gecikmə1 no yes TEST TMR0(4)=0 RETERN Gecikmə2 yes no Kəsilm.xidmət START TOIE=0,TOİF=0 in INTCON Desable inter. no TEST TMR0=FFH LED2 yandır yes RETFIE TOIE=1 Gecikmə1 LED2 söndür TMR0 qurmaq TMR0-da impulsların sayılması Gecikmə2 TMR0 qurulması PortB çıxış etmək CLR WDT F CLK =4MHs;T instr =1mks; TMR0 prim =00H PS(0-2), PSA,TOCS-intern.instr. Cycle in OPTION TMR0 başla RB=00H GIE=1,TOIF=0,TOIE=1 in INTCON Gecikmə 1 LED1 söndür Gecikmə2 Main program