Kontrol Fonksiyonları
Kontrol Fonksiyonları
Sleep
Bu komut ile mikroderleyici uyku moduna geçer.
Kullanımı:
sleep();
Mikrodenetleyiciyi uyku modundan çıkarmak için aşağıdaki yöntemler kullanılır.
- MCLR reseti
- WDT reseti
- INT ucuna gelen kesmeler.
- RB port’unda meydana gelen kesmeler.
Reset_cpu
Mikrodenetleyicinin kapanıp tekrar açılmasını sağlar.
Kullanımı:
reset_cpu();
Restart_cause
Mikrodenetleyici sıfırlandığı zaman ( kapanıp açıldığında ) hangi olaydan sıfırlandığını öğrenmek için bu komut kullanılır.
Kullanımı:
değişken ismi=restart_cause();
Bu komut kullanıldığında belirli anahtar kelimeler ile geri döner
- WDT_FROM_SLEEP
- WDT_TIMEOUT
- MCLR_FROM_SLEEP
- NORMAL_POWER UP
Enable_interrupts
Disable_interrupts
İstenilen kesmeyi aktif hale getirmek için kullanılır.
Kullanımı:
enable_interrupts(kesme ismi); enable_interrupts(int_timer0);
İstenilen kesmeyi pasif hale getirmek için kullanılır.
Kullanımı:
disable_interrupts(kesme ismi); disable_interrupts(int_timer0);
Clear_interrupt
interrupt_active
İstenilen kesme bayrağını sıfırlamak için kullanılır.
Kullanımı:
clear_interrupts(kesme ismi); clear_interrupts(int_timer0);
Timer0 kesmesi pasif hale gelir
PCM ve PCH derleyicilerinin desteklediği pic ürünlerinde, aktif olan kesmenin bayrağının kalkıp kalkmadığı kontrol edilir
Kullanımı:
interrupt_active(kesme ismi); if(interrupt_active(int_ext)) output_high(pin_b7);
dış kesme aktif ise (int_ext) RB7 “1” olur.
Brownout_enable
Pic besleme gerilimi (Vdd) belirlenen Vbor değerinden Tbor süresi kadar düşük kalırsa pic kendini resetler. Bu Brown Out Reset olarak tanımlanır. Bu özeliğin kodlar ile açılıp kapandığı denetleiyicilerde bu komut kullanılır.
Kullanımı:
brownout_enable (sabit); brownout_enable(TRUE);
BOR açık FALSE yapılırsa kapanır.
Setup_oscillator
Bazı denetleyicilerde bulunan dahili osilatörlerin çıkış frekansı değerleri kontrol edilebilir. Bu komut ile bazı denetleyicilerin osilatör ayarları yapılır.
Kullanımı:
setup_oscillator(mod,ayar); mod kısmına: OSC_31KHZ,OSC_16KHZ
ayar kısmına:-31 ile+31 arasında bir değer yazılır.
Read_bank
Write_bank
İstenilen bellek bank’ında kullanıcı RAM alanında istenen bilgi okunabilir.
Kullanımı:
değişken ismi=read_bank (bank,ofset); x=read_bank (1,12); //bank1’de 0x12 adersi okunuyor // bank kısmına: bellek bankını (0,1,2,3) // ofset kısmına: okunacak adres
İstenilen bellek bank’ında kullanıcı RAM alanında istenen bilgiyi yazılabilir.
Kullanımı:
değişken ismi=write_bank (bank,ofset,bilgi); int8 x; x=0x59; write_bank(1,12,x); //bank1 0x12 aderesi 0x59 değeri yazılıyor
Goto_address
Label_address
ROM bellekte istenilen adrese gitmek için kullanılır. Adres 16 bit veya 32 bit olmalıdır.
Kullanımı:
goto_address (gidilecek adres); const int16 x=0x2814; goto_address(x);
program x de yazılan adrese gider
İstenen etiketten sonra ilk komutun adresini öğrenmeye yarar.
Kullanımı:
label_address (etiket); // oku: a=read_bank(1,19);…. b=label_address(oku);
oku etiketinden sonra ilk kodun adresini alır b ye yükler
Getenv
Bilinen anahtar kelimeler kullanılarak, denetleyici ve program hakkında bilgiler alınır.
Kullanımı:
değişken ismi=getenv(“anahtar kelime”); if getenv(“version”)<3.235 printf(lcd_put,”Program versiyon”);
Yukarıdaki örenek “version” anahtar kelimesi kullanılarak program versiyonu derleyiciden alınmaktadır.
Aşağıda bazı kullanılacak anahtar kelimeler gösterilmiştir. Eğer derleryici bu anahtar kelimeleri tanımazsa “0” ile döner.
- DATA_EEPROM=DATA EEPROM belleğinin byte olarak büyüklüğünü verir.
- FUSE_VALID=Eğer kofügürasyon özeliği (BROWNOUT,WDT,PUT) varsa 1 değeri döner.
- ADC_CHANNELS=A/D çevirici kanal sayısını verir.
- READ_PROGRAM=Kod belleiği okunabiliyorsa 1 deer ile döner.
- COMP=Kullanılan mikrodenetleyicide karşılaştırıcı varsa 1 değeri ile geri döner.
- ID=Kullanılan mikrodenetleyici ID’si döner
- DEVİCE=Kullanılan mikrodenetleyici ismi ismi ile döner.
- VERSION=Derleyici sürüm bilgisi ile döner.
- CAN=CAN birim varsa 1 ile döner.
- SPI=Kullanılan mikrodenetleicide SPI birimi varsa 1 değeri ile döner.
- TIMERx=Kullanılan mikrodenetleyicide timerx(timer0,timer1 vb). birimi varsa 1 değeri ile döner.
- STACK=Stack boyutunu verir.
Ext_int_edge
Dış kesmenin (ext) dıştan gelen sinyalinin düşen mi yoksa yükselen kenarında mı aktif olacağının seçimi yapılır.
Kullanımı:
ext_int_edge(kaynak,sinyalin istenen kenarı);
kaynak kısmına 0,1 veya 2 (EXT0,EXT1,EXT2) yazılır.
sinyalin istenen kısmı
yükselen kenar için: L_TO_H
düşsen kenar için=H_TO_L
ext_int_edge(2,L_TO_H);
Seo uyumlu başlıklar kullanarak trafik artışı sağlanabilir.