Sebelum memulai coding 8 Digit Seven Segmen dan untuk meminimalkan kesalahan program, maka sebaiknya dikerjakan "diatas kertas" terlebih untuk pengaturan tampilannya.

Konfigurasi seven segmen memungkinkan untuk menampilkan semua angka dari 0 - 9 dan beberapa karakter antara lain :
A,a,b,C,c,d,E,e,F,H,h,I,J,L,n,o,P,q,r,t,U,u,Y,-,_.
Beberapa huruf tetapi bisa menimbukkan kerancuan yaitu :
G dgn 6, g dgn 9, O dgn 0 (nol), dan S dgn 5.
Untuk huruf M dan W bisa diakali dengan menggabungkan 2 buah tampilan segmen sehingga untuk tampilan M adalah 2 buah segmen dgn tampilan n dan untuk tampilan W adalah 2 buah segmen dgn tampilan u atau mengubah posisi segmen dari vertikal menjadi horizontal (untuk kasus tertentu).

Saya hanya akan membahas tampilan angka saja dengan konfigurasi common anode dan kondisi awal segmen DOT (titik) adalah mati.
Lihat dulu rangkaian Schematik 8 Digit 7 Segmen.
Dari gambar schematic di dapatkan konfigurasi yang diinginkan yaitu:
PORTB.0 - PORTB.7 adalah A,B,C,D,E,F,G,DOT
PORTC.0 - PORTC.7 adalah DRV0 - DRV7
Port DRV atau driver adalah port yang digunakan untuk mengaktifkan segmen yang akan menampilkan suatu angka.
PORTA tidak dipilih karena memiliki ADC sedangkan PORTD karena ada PWM dan USART yang mungkin bisa digunakan nantinya.

Angka yang akan ditampilkan berada pada variable nilai yang nilainya bisa berupa nilai 0 - 9 atau berupa karakter ASCII '0' - '9', karena jika anda memberikan nilai 0 - 9, pada fungsi ini akan di konversi-nya menjadi nilai ASCII '0' - '9' yaitu ditambahkan dengan 0x30 (48 desimal).

Mula-mula semua segmen akan menampilkan angka 0 - 9 dengan tundaan selama 1 detik kemudian semua segman akan menampilkan angka 0, 8, 5, lalu 6 secara bergantian dengan waktu tunda 1 detik.
Ini menunjukkan penggunaan nilai berupa angka dan karakter ASCII.
Scanning 8 DIGIT

Oleh sebab itu fungsi ini hanya untuk menampilkan bilangan pecahan saja (ada komanya).
Coba anda buat sendiri menampilkan bilangan bulat saja atau bahkan berupa huruf.
Penggunaannya fungsi diatas cukup sederhana sebagai contoh :
...............Selamat mencoba.
while(1)
{
DISPLAY_SEGMEN(1234.5678);
}