void kucuktenBuyuge(void); // Küçükten büyüğe sayar.
void buyuktenKucuge(void); // Büyükten küçüğe sayar.
void sayiGoster(int); // O anki sayıyı displayde gösterir.
void bekle(void); // Sayılar arası bekleme.
int i;
long int delay;
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P1DIR = 0xFF; // P1 çıkış olarak ayarlandı.
P1OUT = 0x3F; // 0 sayısı displaye basıldı.
P1OUT = 0x00; // 0 sayısı displaye basıldı.
P1OUT = 0x86; // 0 sayısı displaye basıldı.
while(1) // Sonsuz döngü.
{
kucuktenBuyuge(); // Fonksiyonlar çağrılıyor.
buyuktenKucuge();
}
}
void kucuktenBuyuge(void)
{
for (i = 0 ; i < 9 ; i++) // 0'dan 9'a kadar sayar.
{
sayiGoster(i); // O anki sayıyı basması için fonksiyonu çağırır.
bekle(); // Bir süre bekle.
}
}
void buyuktenKucuge(void)
{
for (i = 9 ; i > 0 ; i--) // 9'dan 0'a kadar sayar.
{
sayiGoster(i); // Sayının basılması için fonksiyon çağırır.
bekle(); // Bir süre bekle.
}
}
void sayiGoster(int sayi)
{
switch(sayi) // Gelen sayı kaç?
{
case 0 : P1OUT = 0x3F; break; // Sayı 0 ise ilgili pinler ayarlanır.
case 1 : P1OUT = 0x86; break; // 1
case 2 : P1OUT = 0x5B; break; // 2
case 3 : P1OUT = 0xCF; break; // 3
case 4 : P1OUT = 0x66; break; // 4
case 5 : P1OUT = 0xED; break; // 5
case 6 : P1OUT = 0xFD; break; // 6
case 7 : P1OUT = 0x07; break; // 7
case 8 : P1OUT = 0xFF; break; // 8
case 9 : P1OUT = 0xE7; break; // 9
default : P1OUT = 0x0D; break; // Hata oluştu, displayde 'E' harfini göster.
}
}
void bekle(void)
{
for(delay = 0 ; delay < 20000 ; delay++); // Hiçbir işlem yapmadan bekle.
}
Hiç yorum yok:
Yorum Gönder