Daha önceki konularımız anlaması daha kolay, port sayısı daha az olan 16F84A modeliydi. Bugün 16F877 modeline geçeceğiz. 16F877 modeli, birçok yönden 16F84A modelinden üstün bir pic tir. Öncelikle 16F877'ten bahsedersek, A, B, C, d ve E olmak üzere 5 tane port vardır ve toplam 40 ayağı bulunur. CCS'te 16F877'yi programlarken, 16F84'te tanımlamadığımız birkaç farklı kod olacaktır.

HEX ve Binary sayı sistemlerinden haberdar olmak önemlli ve gereklidir. Hex sayı sistemi, 16'lık tabanda yazılan sayı sistemidir. Binary ise, 'lik tabanda. Örneğin 0b0001 bir binary sayıdır. 0b kısmı bu sayının binary olduğunu göstermek içindir. Aynı şekilde 0x00 da bir hex sayısıdır. Burada da 0x kısmı bu sayının hexa desimal bir sayı olduğunu göstermek içindir.

16F877 için hazırlamış olduğumuz kodlara bakacak olursak;

#include "C:Program FilesPICCExamplesilg. -3. h"

#fuses xt, nowdt, noprotect, nobrownout, nolvp, noput, nowrt, nodebug, nocpd

#use delay(clock=4000000)

#use fast_io(b)

void main()

{

setup_adc_ports(NO_ANALOGS);

setup_adc(ADC_OFF);

setup_psp(PSP_DISABLED);

setup_spi(SPI_SS_DISABLED);

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

setup_timer_1(T1_DISABLED);

setup_timer_2(T2_DISABLED, 0, 1);

// TODO: USER CODE!!

setup_CCP1(CCP_OFF); //CCP1 devre dışı bırakılır

setup_CCP2(CCP_OFF); //CCP2 devre dışı bırakılır

set_tris_b(0x00); //RB portu tamamı çıkış

output_b(0x00); // B portu çıkış olarak ayarlanır.

basla:

delay_ms(400); //400ms gecikme

output_toggle(pin_b0); //RB0 ucunun çıkış durumu tersleniyor

delay_ms(400); //400ms gecikme

output_toggle(pin_b1); //RB0 ucunun çıkış durumu tersleniyor

delay_ms(400); //400ms gecikme

output_toggle(pin_b2); //RB0 ucunun çıkış durumu tersleniyor

delay_ms(400); //400ms gecikme

output_toggle(pin_b3); //RB0 ucunun çıkış durumu tersleniyor

delay_ms(400); //400ms gecikme

output_toggle(pin_b4); //RB0 ucunun çıkış durumu tersleniyor

delay_ms(400); //400ms gecikme

output_toggle(pin_b5); //RB0 ucunun çıkış durumu tersleniyor

delay_ms(400); //400ms gecikme

output_toggle(pin_b6); //RB0 ucunun çıkış durumu tersleniyor

delay_ms(400); //400ms gecikme

output_toggle(pin_b7); //RB0 ucunun çıkış durumu tersleniyor

delay_ms(400); //400ms gecikme

goto basla;

}

Aynı programı farklı kodlarla ve farklı şekillerde yapmak isterseniz;

Sırayla binary sayı sayan bir kod;

#include "C:Program FilesPICCExamplesilg. -3. h"

#fuses xt, nowdt, noprotect, nobrownout, nolvp, noput, nowrt, nodebug, nocpd

#use delay(clock=4000000)

#use fast_io(b)

int16 x;// x isminde bir sayı

void main()

{

setup_adc_ports(NO_ANALOGS);

setup_adc(ADC_OFF);

setup_psp(PSP_DISABLED);

setup_spi(SPI_SS_DISABLED);

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

setup_timer_1(T1_DISABLED);

setup_timer_2(T2_DISABLED, 0, 1);

// TODO: USER CODE!!

setup_CCP1(CCP_OFF); //CCP1 devre dışı

setup_CCP2(CCP_OFF); //CCP2 devre dışı

set_tris_b(0x00); //RB portu tümüyle çıkış

output_b(0x00); // B portu çıkış

basla:

x=0;

a:

if (x<0b1111111)

{

x++;

output_b(x);

delay_ms(100);

goto a;

}

goto basla;

}

Bir başka; sırayla yukardan aşağı doğru sönen bir kod;

#include "C:Program FilesPICCExamplesilg. -3. h"

#fuses xt, nowdt, noprotect, nobrownout, nolvp, noput, nowrt, nodebug, nocpd

#use delay(clock=4000000)

#use fast_io(b)

int16 x;// x isminde bir sayı

int a;

void main()

{

setup_adc_ports(NO_ANALOGS);

setup_adc(ADC_OFF);

setup_psp(PSP_DISABLED);

setup_spi(SPI_SS_DISABLED);

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

setup_timer_1(T1_DISABLED);

setup_timer_2(T2_DISABLED, 0, 1);

// TODO: USER CODE!!

setup_CCP1(CCP_OFF); //CCP1 devre dışı

setup_CCP2(CCP_OFF); //CCP2 devre dışı

set_tris_b(0x00); //RB portu tümüyle çıkış

output_b(0x00); // B portu çıkış

basla:

a=0b11111111;

x=0;

for(x=0;x<8;x++ )

{

output_b(a);

delay_ms(100);

a=a<<1;

}

goto basla;

}



Görüldüğü üzere, komutlarda oynanarak, aynı devre üzerinde farklı oluşumlar hazırlamak mümkündür. Ben hazırladığım bütün devreleri similatör üzerinde test ettim ve sorunsuz çalışıyor, aynı şekilde sizlerde kodları deneyebilirsiniz.

Başarılar...

Kategoriler:

Yapılan Yorumlar

Henüz kimse yorum yapmamış.

Bu sayfada yer alan bilgilerle ilgili sorularınızı sorabilir, eleştiri ve önerilerde bulunabilirsiniz. Yeni bilgiler ekleyerek sayfanın gelişmesine katkıda bulunabilirsiniz.

Yorum Yapın

Güvenlik Kodu
Coğafya Tarih Sitesi Matematik Sorusu Türkçe Sitesi