Ana sayfa | Hakkımda | İletişim | Sosyal platform
PIC CCS C & ASM / Uygulamalar
74HC595 ile port çoğullama

Bu uygulamada kendi kütüphanemizi kullanarak 74HC595 entegresi ile port çoğullama işlemi yaptık.

Uygulamayı buraya tıklayarak indirebilirsiniz. Arşiv şifresi isterse elektrocavus.com giriniz.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <16f84.h>
#fuses XT, NOWDT
#use delay(clock=4M)

#define bilgi_pini      pin_a0
#define sinyal_pini     pin_a1
#define izin_pini       pin_a2

int veri_dizisi[3]={0}; // Butün diziye sıfır bilgisi yüklendi.
int i=0, j=0;

Void F_74HC595(int *veri, int ilk_veri, int son_veri)
{
// veri: 74hc595'e yüklenecek olan byte ya da byte dizisi
// ilk_veri: Veri değişkeni eğer dizi ise dizinin ilk baytından başlanacak(yüklemek için)
// son_veri: Veri değişkeni eğer dizi ise dizinin son baytı 
   if(ilk_veri == 0 && son_veri == 0)
   {
      for(i=0;i<8;i++)
      {
         if(bit_test(*veri,i))
            output_high(bilgi_pini);
         else 
            output_low(bilgi_pini);
            
         output_high(sinyal_pini);
         output_low(sinyal_pini);
      } 
      output_high(izin_pini);
      output_low(izin_pini);
   }
   else
   {
      for(i=0;i<=(son_veri-ilk_veri);i++)
      {
          for(j=0;j<8;j++)
          {
            if(bit_test(veri[i+ilk_veri],j))
               output_high(bilgi_pini);
            else 
               output_low(bilgi_pini);
            output_high(sinyal_pini);
            output_low(sinyal_pini);        
          }
      }
      output_high(izin_pini);
      output_low(izin_pini);
   }
}

Void main()
{

   for(;;)
   {
      if(input(pin_b2))
      {
         while(input(pin_b2));
         delay_ms(20);
         veri_dizisi[0]++;
         F_74HC595(veri_dizisi,0,2);
      }
      else if(input(pin_b1))
      {
         while(input(pin_b1));
         delay_ms(20);
         veri_dizisi[1]++;
         F_74HC595(veri_dizisi,0,2);
      }
      else if(input(pin_b0))
      {
         while(input(pin_b0));
         delay_ms(20);
         veri_dizisi[2]++;
         F_74HC595(veri_dizisi,0,2);
      }
   }
}


ELEKTRO ÇAVUŞ
Ana sayfa | Hakkımda | İletişim | Sosyal platform
ELEKTRO ÇAVUŞ2012 | elektrocavus.com