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 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);
0 0 votes
Article Rating
Abone ol
Bildir
1 Yorum
Beğenilenler
En Yeniler Eskiler
Satır İçi Geri Bildirimler
Tüm yorumlar
Akif
08/02/2019 20:12

Seo uyumlu başlıklar kullanarak trafik artışı sağlanabilir.

1
0
Düşüncelerinizi paylaşınx