Вообщем друг попросил собрать световое оформление вывески, решил проблему Attiny2313 и 3х ватными RGB светодиодами, сделал 8 линий с полевыми транзисторами N типа, которые выдрал с материнской платы, на них даже маркировку не посмотреть, но работают! Для P перехода использовал IRF4905 управлял ими оптопарой (с оптотранзистором), они переключали общие цвета, оптопару выдрал из интерфейса COM и USB бесперебойника i-pon.
вот схемка, сам допёр как сделать (для понятности новичкам транзюки нарисовал как наглядно):
Спойлер

Вот небольшое видео работы:
http://www.youtube.com/watch?feature=pl ... nTdsv1ga78
Вот код программы в bascom, не ругайте меня, я всего 1-2 месяца изучал его:
Спойлер
$regfile = "attiny2313a.dat"
$crystal = 1000000
$hwstack = 40
$swstack = 16
$framesize = 32
Config Portb = Output
Config Portd = Output
Dim P As Byte 'цикл-1
Dim O As Byte 'цикл-2
Dim Sp1 As Byte 'скорость циклов
Dim Sp2 As Byte 'скорость циклов эталон
Dim Tr1 As Byte 'тригер 1
Dim Tr2 As Byte
Dim Tr3 As Byte
Dim Cveta As Byte
Dim Paus1 As Byte
'P1 Alias Portb.0
'P2 Alias Portb.1
'P3 Alias Portb.2
'P4 Alias Portb.3
'P5 Alias Portb.4
'P6 Alias Portb.5
'P7 Alias Portb.6
'P8 Alias Portb.7
Cv1 Alias Portd.4
Cv2 Alias Portd.5
Cv3 Alias Portd.6
Sp1 = 190
Goto F:
Vrash1:
Portb = 160
Waitms Paus1
Portb = 10
Waitms Paus1
Portb = 80
Waitms Paus1
Portb = 5
Waitms Paus1
Return
Porti1:
Portd = Rnd(255)
Portb = Rnd(255)
Waitms Paus1
Return
Cvet2:
Portd = 0
If Cveta = 1 Then Portd = 16
If Cveta = 2 Then Portd = 32
If Cveta = 3 Then Portd = 64
If Cveta = 4 Then Portd = 48
If Cveta = 5 Then Portd = 96
If Cveta = 6 Then Portd = 112
Return
F:
P = P + 1
If O = 1 And P = 1 Then
Tr1 = Tr1 + 1
If Tr1 => 18 Then Tr1 = 1
End If
If P => Sp1 Then P = 0 : O = O + 1
If O => Sp1 Then O = 1
If Tr1 < 10 And Sp2 = 0 Then Sp1 = 190
If Tr1 < 10 And Sp2 = 1 Then Sp1 = 130
If Tr1 < 10 And Sp2 = 2 Then Sp1 = 70
If Tr1 < 10 And Sp2 >= 3 Then Sp1 = 30
'--------------------------------------------------------
If Tr1 = 1 Then
Cveta = 1 : Gosub Cvet2:
If P > O Then
Portb = 15
Else
Portb = 0
End If
End If
'--------------------------------------------------------
If Tr1 = 2 Then
Cveta = 1 : Gosub Cvet2:
If P > O Then
Portb = 255
Else
Portb = 15
End If
End If
'--------------------------------------------------------
If Tr1 = 3 Then
Cveta = 1 : Gosub Cvet2:
If P < O Then
Portb = 255
Else
Portb = 0
End If
End If
'--------------------------------------------------------
If Tr1 = 4 Then
Cveta = 1 : Gosub Cvet2
If P > O Then
Portb = 255
Else
Portb = 0
End If
End If
'--------------------------------------------------------
If Tr1 = 5 Then
Cveta = 1 : Gosub Cvet2
If P < O Then
Portb = 255
Else
Portb = 0
End If
End If
'--------------------------------------------------------
If Tr1 = 6 Then
Cveta = 4 : Gosub Cvet2
If P > O Then
Portb = 255
Else
Portb = 0
End If
End If
'--------------------------------------------------------
If Tr1 = 7 Then
Cveta = 4 : Gosub Cvet2
If P < O Then
Portb = 255
Else
Portb = 0
End If
End If
'--------------------------------------------------------
If Tr1 = 8 Then
Cveta = 1 : Gosub Cvet2 :
If P > O Then
Portb = 255
Else
Portb = 0
End If
End If
'--------------------------------------------------------
If Tr1 = 9 Then
Cveta = 3 : Gosub Cvet2
Portb = 255
O = 254 : Tr1 = 10
End If
'--------------------------------------------------------
If Tr1 = 10 Then
For Paus1 = 1 To Sp1 Step 5
Gosub Vrash1:
Next Paus1
Cveta = 1 : Gosub Cvet2
For Paus1 = Sp1 To 1 Step -5
Gosub Vrash1:
Next Paus1
Cveta = 4 : Gosub Cvet2
For Paus1 = 1 To Sp1 Step 5
Gosub Vrash1:
Next Paus1
Cveta = 5 : Gosub Cvet2
For Paus1 = 1 To Sp1 Step 5
Gosub Vrash1:
Next Paus1
Cveta = 1 : Gosub Cvet2
For Paus1 = 1 To Sp1 Step 5
Gosub Vrash1:
Next Paus1
Cveta = 4 : Gosub Cvet2
For Paus1 = 1 To Sp1 Step 5
Gosub Vrash1:
Next Paus1
Cveta = 3 : Gosub Cvet2
For Paus1 = 1 To Sp1 Step 5
Gosub Vrash1:
Next Paus1
O = 254 : Tr1 = 11
Cveta = 6
Gosub Cvet2 : Portb = 255
Wait 15
End If
'--------------------------------------------------------
If Tr1 = 11 Then
Sp1 = 230
Cveta = 1 : Gosub Cvet2
If P > O Then
Portb = 240
Else
Portb = 0
End If
End If
'--------------------------------------------------------
If Tr1 = 12 Then
Sp1 = 230
Cveta = 2 : Gosub Cvet2
If P > O Then
Portb = 255
Else
Portb = 240
End If
End If
'--------------------------------------------------------
If Tr1 = 13 Then
Sp1 = 230
If P < O Then
Portb = 255
Cveta = 1 : Gosub Cvet2
Else
Cveta = 3 : Gosub Cvet2
Portb = 255
End If
End If
'--------------------------------------------------------
If Tr1 = 14 Then
Sp1 = 230
If P < O Then
Portb = 255
Cveta = 4 : Gosub Cvet2
Else
Cveta = 1 : Gosub Cvet2
Portb = 255
End If
End If
'--------------------------------------------------------
If Tr1 = 15 Then
Sp1 = 230
If P < O Then
Portb = 255
Cveta = 4 : Gosub Cvet2
Else
Cveta = 0 : Gosub Cvet2
Portb = 0
End If
End If
'--------------------------------------------------------
If Tr1 = 16 Then
For Paus1 = 230 To 23 Step -3
Gosub Porti1
Next Paus1
For Paus1 = 3 To 230 Step 3
Gosub Porti1
Waitms Paus1
Next Paus1
Tr1 = 17
Cveta = Sp2 + 1 : Gosub Cvet2 : Portb = 255
Sp2 = Sp2 + 1
If Sp2 = 6 Then Sp2 = 0
Wait 26
End If
'--------------------------------------------------------
If Tr1 = 17 Then
Sp1 = 90
Cveta = Sp2 + 1 : Gosub Cvet2
If P < O Then
Portb = 255
Else
Portb = 0
End If
End If
'--------------------------------END--------------------
Goto F:
В понипрог защитные биты:

Прошивочку прикрепляю, просто ставите биты, прошиваете контроллер и он начинает генерировать световые эффекты.
Светодиоды расположены так:
---6----
--1-2---
-5---7--
--4-3---
---8----
Вдруг для аптек будет актуально, может кто сколымит. От 7,2 до 12 вольт работает отлично.
В исходном коде пытался работать с алиасами, но они глючат, правда, глючат, позже просчитал десятичный код и через Port выводил всё. А так 17 команд моргания, меняющих цвет, очень
красиво глючная программная ШИМ модуляция (на видео не видно, в телефоне не заснялось) и скорость в зависимости от повторения, вообщем цикличность долгая, да и паузы для просто света тоже есть. Память выжрало всю у Attiny2313, как-то во вкус вошёл и попёрло, пол дня оптимизировал, хотя проще было переделать иначе, но зато все операторы и функции в коде понятны новичку, так как премудростей в нём нет, только основные операторы.
Уместил всё в маленькой монтажке, для удобства к контроллеру прикрепил ручку
Спойлер

Нарушение п.2.6 Правил Форума.
На первый раз прощаю. Gudd-Head