///////////////////////////////////soft spi iletişimi için gerekli ayarlamaları yaptım///////////////////
sbit Chip_Select at RB7_bit;
sbit SoftSpi_CLK at RB6_bit;
sbit SoftSpi_SDI at RB5_bit;
sbit SoftSpi_SDO at RB4_bit;
sbit Chip_Select_Direction at TRISB7_bit;
sbit SoftSpi_CLK_Direction at TRISB6_bit;
sbit SoftSpi_SDI_Direction at TRISB5_bit;
sbit SoftSpi_SDO_Direction at TRISB4_bit;
////////////////////////////////////////////////////////////////////////////////////////////
char sayi; //sayı adında değişken tanımladım.
void main() {
adcon1=7; //portları dijital olacak şekilde ayarladım.
trisb=0x00; // portb yi çıkış yaptım
portb=0x00; // portb nin içini temizledim.
////////////////////////////////
Chip_Select = 1; // DAC seçimini kaldırın
Chip_Select_Direction = 0; // CS # pinini Output olarak ayarla
Soft_SPI_Init (); // Soft_SPI'yi başlat
Chip_select=0;
soft_spi_write(0x0C); // Max7219 un 0x0c adresine
soft_spi_write(0x01); // 0x01 gönderdim buradaki amacım = max7219 normal operasyon modunda //çalışması için
Chip_select=1;
Chip_select=0;
soft_spi_write(0x09); //max7219 un 0x09 adresine
soft_spi_write(0x00); // 0x00 gönderdim yoğunluk kayıt formatıymış 1/32 de çalışsın diye
Chip_select=1;
Chip_select=0;
soft_spi_write(0x0B); // max7219 un 0x0b adresine
soft_spi_write(0x07); ////0x07 gönderdim Scan-Limit Register bütün dijitler aktif olsun diye
//ama burada yanlış yapmış olabilirim doğrusunu bilmiyorum.
Chip_select=1;
Chip_select=0;
soft_spi_write(0x0F); // Display-Test Register Format Adresine 00 gönderdim
soft_spi_write(0x00); // test değil de normal modda çalışması için
Chip_select=1;
Chip_select=0;
soft_spi_write(0x0A);
soft_spi_write(0x01);
Chip_select=1;
sayi=0;
while(1){
Chip_select=0;
soft_spi_Write(0x07); // işte ekranda görmek istediğim değerleri buraya yazdım ama muhtemel
// olasıkla yanlış adres çünkü tam adresini bilmiyorum
soft_spi_Write(sayi); // sayı adındaki registerin içini 0x07 adresine yani ekrana gösterme
// adresine yazmaya çalıştım ama burada yapmak istediğim şey şu : soldan sağa 7 dijit 0 göstersin en sağ en
// düşük değerli dijit sayı registerinin içini göstersin.
Chip_select=1;
sayi++;
if (sayi>9){
sayi=0;
}
delay_ms(250);
}
}