CCS ile ilk programımızı yazalım. CCS derleyicisini açarak Yeni bir proje oluşturunuz. Projenize uygun bir isim verdikten sonra, proje ayarları sayfasıyla karışılacaksınız. Oradan PIC olarak device olarak 16f877A entegresini seçiniz, clock ise 8 Mhz olsun.

Bu programımızda 0-9 arası bir sayıcı yapalım. Ortak katot bir display kullanarak 0’dan 9’a kadar 1 er saniye aralıklarla sayan programı gerçekleştireceğiz.

Siz yeni bir proje oluşturunca kod sayfamıza bazı kodlar eklendi. Bu projemizin hangi birimleri kullanacağını gösteriyor. Sizinde gördüğünüz gibi hemen hemen hepsi “disable” yani etkin değil. Çünkü bu özellikler henüz bize çok yabancı. Bizim niyetimiz basit bir sayıcı yapmak:

#include "main.h"
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);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

}

Bu yukarıdaki satırlar otomatik türedi demiştik ve bizimle bir alakası yok. Şimdi bir dizi tanımlayarak içine 0’dan 9’a kadar olan sayıların karşılıklarını atayalım. Dizi nasıl tanımlanır diye soracak olursanız. Size MikroC ile Dizi tanımlamasını öğretmiştik. Aynısı burada da geçerlidir. Unutanlar geçmiş dersimize bakabilirler.

int8 tablo[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

Yukarıdaki satırla tablo adlı bir integer dizisi oluşturup içine de sırayla 0,1,2,…9 bilgisini attık. İnt8 ifadesi MikroC’deki int ifadesiyle aynı manadadır.

int16 i;

Bu da başka bir int tanımlama yukarıdakinden farkı bunun 16 bit olması. Diğeri ise 8 bitlikti.

Set_tris_b(0x00);

Bu komutla PORTB’yi çıkış olarak kullanacağımızı beyan ediyoruz.

output_b(0);
while(1){
for (i=0;i<=9;i++)
{
output_b(tablo[i]);
delay_ms(2000);
}
}

Derlemeye hazır kodumuzun görüntüsü şu şekilde olacak:

#include "main.h"

void main()
{ int8 tablo[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int8 i;
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);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

output_b(0);

while(1){

for (i=0;i<=9;i++)
{
output_b(tablo[i]);
delay_ms(2000);
}

}
}

Anahtar Kelimeler: Mikrodenetleyici

peynir6 suyu tozu , 10/06/2008-13:59 Facebook'ta Paylas