'*******************************************************************************
'* Filename    : PWM 8-channel                                                 *
'* Revision    : 1.5                                                           *
'* Controller  : ATMEGA8                                                       *
'* Compiler    : BASCOM-AVR 1.11.9.1                                           *
'* Author      : Rubashka Vasiliy , Ukraine , 2008                             *
'* WWW         : http://ledeffects.net                                         *
'* Mail        : info@ledeffects.net                                           *
'*******************************************************************************

$regfile = "m8def.dat"                                      'определяем контроллер
$crystal = 8000000                                          'внутренний генератор
$lib "lcd4.lbx"                                             'подключаем библиотеку ЖКИ
$lib "mcsbyte.lbx"                                          'подключаем библиотеку функций
Config Portd = Output                                       'настройка порта d на выход (LED 1-8)
Config Pinc.0 = Input                                       'настройка пина c0 на вход (S1)
Config Pinc.1 = Input                                       'настройка пина c1 на вход (S2)
Config Pinc.2 = Input                                       'настройка пина c2 на вход (S3)
Config Pinc.3 = Input                                       'настройка пина c3 на вход (S4)
Config Pinc.4 = Input                                       'настройка пина c4 на вход (S2)
Config Pinc.5 = Input                                       'настройка пина c5 на вход (S3)
Config Pinb.3 = Input                                       'настройка пина b3 на вход (S4)
Set Portc.0                                                 ' включить внутренний подтягивающий резистор
Set Portc.1                                                 ' включить внутренний подтягивающий резистор
Set Portc.2                                                 ' включить внутренний подтягивающий резистор
Set Portc.3                                                 ' включить внутренний подтягивающий резистор
Set Portc.4                                                 ' включить внутренний подтягивающий резистор
Set Portc.5                                                 ' включить внутренний подтягивающий резистор
Set Portb.1                                                 ' включить внутренний подтягивающий резистор

Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7
Config Lcd = 16 * 2                                         'настраиваем ЖКИ

Dim S As Byte                                               'переменная скорости
Dim Tik As Byte                                             'счётчик тиков таймера
Dim Shag As Byte                                            'счётчик шагов эффекта
Dim Effect As Byte                                          'счётчик эффектов
Dim Channel As Byte                                         'номер канала
Dim Lamda As Word                                           'дополнительная переменная
Dim X(8) As Byte                                            'значения каналов из таблицы эффектов
Dim Y(8) As Byte                                            'яркость каналов из таблицы градаций яркости
Dim Temp As Byte                                            'скорость повторов
Dim Kl As Byte                                              'переменная для отрисовки графики
Dim N As Byte                                               'начальная ячейка таблицы эффектов в зависимости от выбранного эффекта
Dim Takt As Byte                                            'счётчик шагов в главном цикле

Dim Line1 As String * 8 , Line1d(8) As Byte At Line1 Overlay       'линия 1 для псевдографики 8 знакомест
Dim Line2 As String * 8 , Line2d(8) As Byte At Line2 Overlay       'линия 2 для псевдографики 8 знакомест

Config Timer0 = Timer , Prescale = 1                        'настраиваем таймер
Enable Timer0                                               'разрешаем работу таймера 0
Enable Interrupts                                           'Разрешаем прерывания
On Timer0 Pwms                                              'работа по таймеру 0
Start Timer0                                                'старт таймера 0

Cursor Off                                                  'Выключить курсор

Y(1) = 255
Y(2) = 255
Y(3) = 255
Y(4) = 255
Y(5) = 255
Y(6) = 255
Y(7) = 255
Y(8) = 255
'Логотип РАДИОКОТ
Cls
Deflcdchar 0 , 32 , 31 , 31 , 12 , 6 , 3 , 1 , 32           ' 1.1
Deflcdchar 1 , 32 , 31 , 31 , 7 , 2 , 6 , 30 , 31           ' 1.2
Deflcdchar 2 , 7 , 31 , 31 , 3 , 1 , 25 , 12 , 28           ' 1.3
Deflcdchar 3 , 16 , 31 , 31 , 17 , 32 , 7 , 11 , 15         ' 1.4
Deflcdchar 4 , 32 , 1 , 15 , 17 , 32 , 10 , 32 , 32         ' 2.1
Deflcdchar 5 , 16 , 16 , 24 , 28 , 31 , 31 , 32 , 32        ' 2.2
Deflcdchar 6 , 31 , 7 , 18 , 15 , 16 , 31 , 32 , 32         ' 2.3
Deflcdchar 7 , 14 , 32 , 8 , 16 , 3 , 31 , 32 , 32          ' 2.4
Waitms 100
Locate 1 , 1
Lcd "h"
Waitms 100
Locate 1 , 2
Lcd "t"
Waitms 100
Locate 1 , 3
Lcd "t"
Waitms 100
Locate 1 , 4
Lcd "p"
Waitms 100
Locate 1 , 5
Lcd ":"
Waitms 100
Locate 1 , 6
Lcd "/"
Waitms 100
Locate 1 , 7
Lcd "/"
Waitms 100
Locate 1 , 8
Lcd "w"
Waitms 100
Locate 1 , 9
Lcd "w"
Waitms 100
Locate 1 , 10
Lcd "w"
Waitms 100
Locate 1 , 11
Lcd "."
Waitms 100

Locate 2 , 1
Lcd "r"
Waitms 100
Locate 2 , 2
Lcd "a"
Waitms 100
Locate 2 , 3
Lcd "d"
Waitms 100
Locate 2 , 4
Lcd "i"
Waitms 100
Locate 2 , 5
Lcd "o"
Waitms 100
Locate 2 , 6
Lcd "k"
Waitms 100
Locate 2 , 7
Lcd "o"
Waitms 100
Locate 2 , 8
Lcd "t"
Waitms 100
Locate 2 , 9
Lcd "."
Waitms 100
Locate 2 , 10
Lcd "r"
Waitms 100
Locate 2 , 11
Lcd "u"
Waitms 300

Locate 1 , 16
Lcd Chr(0)
Locate 2 , 16
Lcd Chr(4)
Waitms 250
Locate 1 , 15
Lcd Chr(0) ; Chr(1)
Locate 2 , 15
Lcd Chr(4) ; Chr(5)
Waitms 250
Locate 1 , 14
Lcd Chr(0) ; Chr(1) ; Chr(2)
Locate 2 , 14
Lcd Chr(4) ; Chr(5) ; Chr(6)
Waitms 250
Locate 1 , 13
Lcd Chr(0) ; Chr(1) ; Chr(2) ; Chr(3)
Locate 2 , 13
Lcd Chr(4) ; Chr(5) ; Chr(6) ; Chr(7)
Waitms 300
'устанавливаем символы пользователя для графического отображения яркости каналов
Deflcdchar 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 31
Deflcdchar 2 , 0 , 0 , 0 , 0 , 0 , 0 , 31 , 31
Deflcdchar 3 , 0 , 0 , 0 , 0 , 0 , 31 , 31 , 31
Deflcdchar 4 , 0 , 0 , 0 , 0 , 31 , 31 , 31 , 31
Deflcdchar 5 , 0 , 0 , 0 , 31 , 31 , 31 , 31 , 31
Deflcdchar 6 , 0 , 0 , 31 , 31 , 31 , 31 , 31 , 31
Deflcdchar 7 , 0 , 31 , 31 , 31 , 31 , 31 , 31 , 31
'*******************************************************************************

Cls                                                         'Очистить экран
 S = 8                                                      'скорость повтора при старте (МОЖНО ИЗМЕНЯТЬ ОТ 1 ДО 15)
 Temp = Lookup(s , Speders)                                 'Задержка в миллисекундах для выбранной скорости повтора
 Effect = 1                                                 'выбор эффекта при старте  (МОЖНО ИЗМЕНЯТЬ)
 N = Effect * 16                                            'вычисление начальной ячейки таблицы эффектов
 N = N - 16
'###############################################################################
'###############################################################################
Do                                                          'основной цикл
 For Takt = 0 To 15                                         'перебор шагов эффекта
 Shag = N + Takt
  'опрос кнопок
  Debounce Pinc.3 , 0 , Plus_speed , Sub
  Debounce Pinc.1 , 0 , Minus_speed , Sub
  Debounce Pinc.5 , 0 , Plus_effect , Sub
  Debounce Pinc.4 , 0 , Minus_effect , Sub

    'построение эффектов согласно таблицы эффектов
     For Channel = 1 To 8
      Lamda = Shag * 8
      Lamda = Lamda + Channel
      Decr Lamda
      X(channel) = Lookup(lamda , Pwm_led)                  'чтение значения яркости для всех 8 каналов
            Lamda = X(channel)
      Decr Lamda
      Y(channel) = Lookup(lamda , Pwm_data)                 'чтение значений констант для ШИМ
     Next

  Gosub Lcd_disp                                            'переход на вывод информации на экран
  Waitms Temp                                               'задержка для регулировки скорости

 Next
Loop                                                        'конец основного цикла
'###############################################################################
'###############################################################################
Plus_speed:                                                 'увеличить скорость
Incr S
If S > 15 Then S = 15
Temp = Lookup(s , Speders)
Return
'
Minus_speed:                                                'уменьшить скорость
Decr S
If S < 1 Then S = 1
Temp = Lookup(s , Speders)
Return
'
Plus_effect:                                                'следующий эффект
Incr Effect
'НУЖНО ИЗМЕНИТЬ В ЗАВИСИМОСТИ ОТ КОЛИЧЕСТВА ЭФФЕКТОВ В ТАБЛИЦЕ!
If Effect > 10 Then Effect = 10
N = Effect * 16
N = N - 16
Return
'
Minus_effect:                                               'предыдущий эффект
Decr Effect
If Effect < 1 Then Effect = 1
N = Effect * 16
N = N - 16
Return

'*******************************************************************************
'работа по таймеру - Организация ШИМ
Pwms:
Incr Tik
 If Tik = 255 Then
  Tik = 0
  Portd = 0
 End If
   If Tik > Y(1) Then Portd.7 = 1
   If Tik > Y(2) Then Portd.6 = 1
   If Tik > Y(3) Then Portd.5 = 1
   If Tik > Y(4) Then Portd.4 = 1
   If Tik > Y(5) Then Portd.3 = 1
   If Tik > Y(6) Then Portd.2 = 1
   If Tik > Y(7) Then Portd.1 = 1
   If Tik > Y(8) Then Portd.0 = 1
Return
'*******************************************************************************
'Вывод информации на экран
Lcd_disp:
'псевдографика
For Kl = 1 To 8
   Line1d(kl) = Lookup(x(kl) , L1)
   Line2d(kl) = Lookup(x(kl) , L2)
Next
Locate 1 , 1
Lcd Line1;
Locate 2 , 1
Lcd Line2;
'текст
Locate 1 , 9
If Effect < 10 Then Lcd " Eff: " ; Effect
If Effect >= 10 Then Lcd " Eff:" ; Effect
Locate 2 , 9
If S < 10 Then Lcd " Tmp: " ; S
If S >= 10 Then Lcd " Tmp:" ; S
Return
'*******************************************************************************
'таблица построения ступенек - уровней яркости каналов для двух строк экрана
'из символов пользователя и пустого и заполненного знакомест (32 и 255)
L1:
Data 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 255
L2:
Data 32 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255
'*******************************************************************************
'16 градаций яркости: 255 - минимальная яркость, 0 - максимальная.Логарифмическая шкала
Pwm_data:
Data 255 , 253 , 252 , 251 , 249 , 246 , 243 , 238 , 231 , 221 , 208 , 189 , 162 , 125 , 73 , 0
'*******************************************************************************
'Задержки в миллисекундах для регулировки скорости эффектов - логарифмическая шкала
Speders:
Data 140 , 100 , 70 , 50 , 39 , 31 , 24 , 18 , 13 , 9 , 6 , 4 , 3 , 2 , 1 , 0
'*******************************************************************************
'Таблица эффектов
Pwm_led:
'Эффект 1 -
Data 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8
Data 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9
Data 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10
Data 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11
Data 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12
Data 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13
Data 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14
Data 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15
Data 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
Data 10 , 11 , 12 , 13 , 14 , 15 , 16 , 1
Data 11 , 12 , 13 , 14 , 15 , 16 , 1 , 2
Data 12 , 13 , 14 , 15 , 16 , 1 , 2 , 3
Data 13 , 14 , 15 , 16 , 1 , 2 , 3 , 4
Data 14 , 15 , 16 , 1 , 2 , 3 , 4 , 5
Data 15 , 16 , 1 , 2 , 3 , 4 , 5 , 6
Data 16 , 1 , 2 , 3 , 4 , 5 , 6 , 7
'Эффект 2 -
Data 16 , 15 , 14 , 13 , 12 , 11 , 10 , 9
Data 15 , 14 , 13 , 12 , 11 , 10 , 9 , 8
Data 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7
Data 13 , 12 , 11 , 10 , 9 , 8 , 7 , 6
Data 12 , 11 , 10 , 9 , 8 , 7 , 6 , 5
Data 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4
Data 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3
Data 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2
Data 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1
Data 7 , 6 , 5 , 4 , 3 , 2 , 1 , 16
Data 6 , 5 , 4 , 3 , 2 , 1 , 16 , 15
Data 5 , 4 , 3 , 2 , 1 , 16 , 15 , 14
Data 4 , 3 , 2 , 1 , 16 , 15 , 14 , 13
Data 3 , 2 , 1 , 16 , 15 , 14 , 13 , 12
Data 2 , 1 , 16 , 15 , 14 , 13 , 12 , 11
Data 1 , 16 , 15 , 14 , 13 , 12 , 11 , 10
'Эффект 3 -
Data 16 , 1 , 2 , 3 , 4 , 5 , 6 , 7
Data 15 , 16 , 1 , 2 , 3 , 4 , 5 , 6
Data 14 , 15 , 16 , 1 , 2 , 3 , 4 , 5
Data 13 , 14 , 15 , 16 , 1 , 2 , 3 , 4
Data 12 , 13 , 14 , 15 , 16 , 1 , 2 , 3
Data 11 , 12 , 13 , 14 , 15 , 16 , 1 , 2
Data 10 , 11 , 12 , 13 , 14 , 15 , 16 , 1
Data 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
Data 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15
Data 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14
Data 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13
Data 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12
Data 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11
Data 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10
Data 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9
Data 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8
'Эффект 4 -
Data 1 , 16 , 15 , 14 , 13 , 12 , 11 , 10
Data 2 , 1 , 16 , 15 , 14 , 13 , 12 , 11
Data 3 , 2 , 1 , 16 , 15 , 14 , 13 , 12
Data 4 , 3 , 2 , 1 , 16 , 15 , 14 , 13
Data 5 , 4 , 3 , 2 , 1 , 16 , 15 , 14
Data 6 , 5 , 4 , 3 , 2 , 1 , 16 , 15
Data 7 , 6 , 5 , 4 , 3 , 2 , 1 , 16
Data 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1
Data 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2
Data 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3
Data 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4
Data 12 , 11 , 10 , 9 , 8 , 7 , 6 , 5
Data 13 , 12 , 11 , 10 , 9 , 8 , 7 , 6
Data 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7
Data 15 , 14 , 13 , 12 , 11 , 10 , 9 , 8
Data 16 , 15 , 14 , 13 , 12 , 11 , 10 , 9
'Эффект 5 -
Data 1 , 16 , 1 , 16 , 1 , 16 , 1 , 16
Data 2 , 15 , 2 , 15 , 2 , 15 , 2 , 15
Data 3 , 14 , 3 , 14 , 3 , 14 , 3 , 14
Data 4 , 13 , 4 , 13 , 4 , 13 , 4 , 13
Data 5 , 12 , 5 , 12 , 5 , 12 , 5 , 12
Data 6 , 11 , 6 , 11 , 6 , 11 , 6 , 11
Data 7 , 10 , 7 , 10 , 7 , 10 , 7 , 10
Data 8 , 9 , 8 , 9 , 8 , 9 , 8 , 9
Data 9 , 8 , 9 , 8 , 9 , 8 , 9 , 8
Data 10 , 7 , 10 , 7 , 10 , 7 , 10 , 7
Data 11 , 6 , 11 , 6 , 11 , 6 , 11 , 6
Data 12 , 5 , 12 , 5 , 12 , 5 , 12 , 5
Data 13 , 4 , 13 , 4 , 13 , 4 , 13 , 4
Data 14 , 3 , 14 , 3 , 14 , 3 , 14 , 3
Data 15 , 2 , 15 , 2 , 15 , 2 , 15 , 2
Data 16 , 1 , 16 , 1 , 16 , 1 , 16 , 1
'Эффект 6 -
Data 16 , 1 , 16 , 1 , 16 , 1 , 16 , 1
Data 15 , 2 , 15 , 2 , 15 , 2 , 15 , 2
Data 14 , 3 , 14 , 3 , 14 , 3 , 14 , 3
Data 13 , 4 , 13 , 4 , 13 , 4 , 13 , 4
Data 12 , 5 , 12 , 5 , 12 , 5 , 12 , 5
Data 11 , 6 , 11 , 6 , 11 , 6 , 11 , 6
Data 10 , 7 , 10 , 7 , 10 , 7 , 10 , 7
Data 9 , 8 , 9 , 8 , 9 , 8 , 9 , 8
Data 8 , 9 , 8 , 9 , 8 , 9 , 8 , 9
Data 7 , 10 , 7 , 10 , 7 , 10 , 7 , 10
Data 6 , 11 , 6 , 11 , 6 , 11 , 6 , 11
Data 5 , 12 , 5 , 12 , 5 , 12 , 5 , 12
Data 4 , 13 , 4 , 13 , 4 , 13 , 4 , 13
Data 3 , 14 , 3 , 14 , 3 , 14 , 3 , 14
Data 2 , 15 , 2 , 15 , 2 , 15 , 2 , 15
Data 1 , 16 , 1 , 16 , 1 , 16 , 1 , 16
'Эффект 7 -
Data 1 , 3 , 5 , 7 , 7 , 5 , 3 , 1
Data 3 , 5 , 7 , 9 , 9 , 7 , 5 , 3
Data 5 , 7 , 9 , 11 , 11 , 9 , 7 , 5
Data 7 , 9 , 11 , 13 , 13 , 11 , 9 , 7
Data 9 , 11 , 13 , 15 , 15 , 13 , 11 , 9
Data 11 , 13 , 15 , 15 , 15 , 15 , 13 , 11
Data 13 , 15 , 15 , 15 , 15 , 15 , 15 , 13
Data 15 , 15 , 15 , 15 , 15 , 15 , 15 , 15
Data 15 , 15 , 15 , 13 , 13 , 15 , 15 , 15
Data 15 , 15 , 13 , 11 , 11 , 13 , 15 , 15
Data 15 , 13 , 11 , 9 , 9 , 11 , 13 , 15
Data 13 , 11 , 9 , 7 , 7 , 9 , 11 , 13
Data 11 , 9 , 7 , 5 , 5 , 7 , 9 , 11
Data 9 , 7 , 5 , 3 , 3 , 5 , 7 , 9
Data 7 , 5 , 3 , 1 , 1 , 3 , 5 , 7
Data 5 , 3 , 1 , 1 , 1 , 1 , 3 , 5
'Эффект 8 -
Data 1 , 5 , 9 , 13 , 1 , 5 , 9 , 13
Data 2 , 6 , 10 , 14 , 2 , 6 , 10 , 14
Data 3 , 7 , 11 , 15 , 3 , 7 , 11 , 15
Data 4 , 8 , 12 , 16 , 4 , 8 , 12 , 16
Data 5 , 9 , 13 , 16 , 5 , 9 , 13 , 16
Data 6 , 10 , 14 , 15 , 6 , 10 , 14 , 15
Data 7 , 11 , 15 , 14 , 7 , 11 , 15 , 14
Data 8 , 12 , 16 , 13 , 8 , 12 , 16 , 13
Data 9 , 13 , 16 , 12 , 9 , 13 , 16 , 12
Data 10 , 14 , 15 , 11 , 10 , 14 , 15 , 11
Data 11 , 15 , 14 , 10 , 11 , 15 , 14 , 10
Data 12 , 16 , 13 , 9 , 12 , 16 , 13 , 9
Data 13 , 16 , 12 , 8 , 13 , 16 , 12 , 8
Data 14 , 15 , 11 , 7 , 14 , 15 , 11 , 7
Data 15 , 14 , 10 , 6 , 15 , 14 , 10 , 6
Data 16 , 13 , 9 , 5 , 16 , 13 , 9 , 5
'Эффект 9 -
Data 16 , 14 , 12 , 10 , 8 , 6 , 4 , 2
Data 14 , 12 , 10 , 8 , 6 , 4 , 2 , 16
Data 12 , 10 , 8 , 6 , 4 , 2 , 16 , 14
Data 10 , 8 , 6 , 4 , 2 , 16 , 14 , 12
Data 8 , 6 , 4 , 2 , 16 , 14 , 12 , 10
Data 6 , 4 , 2 , 16 , 14 , 12 , 10 , 8
Data 4 , 2 , 16 , 14 , 12 , 10 , 8 , 6
Data 2 , 16 , 14 , 12 , 10 , 8 , 6 , 4
Data 16 , 14 , 12 , 10 , 8 , 6 , 4 , 2
Data 14 , 12 , 10 , 8 , 6 , 4 , 2 , 16
Data 12 , 10 , 8 , 6 , 4 , 2 , 16 , 14
Data 10 , 8 , 6 , 4 , 2 , 16 , 14 , 12
Data 8 , 6 , 4 , 2 , 16 , 14 , 12 , 10
Data 6 , 4 , 2 , 16 , 14 , 12 , 10 , 8
Data 4 , 2 , 16 , 14 , 12 , 10 , 8 , 6
Data 2 , 16 , 14 , 12 , 10 , 8 , 6 , 4
'Эффект 10 -
Data 16 , 16 , 16 , 16 , 16 , 16 , 16 , 16
Data 14 , 14 , 14 , 14 , 14 , 14 , 14 , 14
Data 12 , 12 , 12 , 12 , 12 , 12 , 12 , 12
Data 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10
Data 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8
Data 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6
Data 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4
Data 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2
Data 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1
Data 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2
Data 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4
Data 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6
Data 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8
Data 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10
Data 12 , 12 , 12 , 12 , 12 , 12 , 12 , 12
Data 14 , 14 , 14 , 14 , 14 , 14 , 14 , 14