/*
2 adet 7segment display kullanılmıştır.
c0 ve c1 uçları ortak katot transistörlerini sürer
b portu displaylerin abcdefg lerine bağlıdır.
display a sı b0' a bağlı sıraile gider.
buton A0 bacağına pull-down bağlıdır.
tacettin
*/
#include <16f877.h>
#fuses HS,NOWDT,PUT,NOPROTECT
#use delay(clock=20000000)
#bit buton=0x05.0
#byte segment=0x06
#byte tarama=0x07
#bit onlar_uc= tarama.0
#bit birler_uc= tarama.1
int gosterge[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0xff,0x6f};
// 0 1 2 3 4 5 6 7 8 9
int onlar=0,birler=0,sayi=2;
void hesapla()
{
onlar=sayi/10;
birler=sayi%10;
}
void yaz()
{
segment=gosterge[onlar];
onlar_uc=1;
delay_ms(3);
onlar_uc=0;
segment=gosterge[birler];
birler_uc=1;
delay_ms(3);
birler_uc=0;
}
void main()
{
set_tris_b(0x00);
set_tris_a(0xff);
set_tris_c(0x00);
segment=0,tarama=0;
onlar_uc=birler_uc=0;
while(true)
{
hesapla();
yaz();
if(buton)
{
sayi++;
if (sayi>12) sayi=2;
hesapla();
while(buton) {yaz();}
delay_ms(3);
}
}
}