$Regfile="attiny45.dat"
$Crystal=8000000
$hwstack=40
$swstack=16
$framesize=32
Config PINb.2 = Input ': Set Portb.2 'íàñòðàèâàåì ïîðò êíîïêè íà âõîä è âêëþ÷àåì ïîäòÿæêó
Config PINB.5 = Input ': Set Portb.5 'íàñòðàèâàåì Reset íà âõîä è âêëþ÷àåì ïîäòÿæêó
On Int0 Button : Config Int0 = falling : Enable Interrupts : Enable Int0 'íàñòðàèâàåì ïðåðûâàíèå ïî íèçêîìó óðîâíþ äëÿ ðàáîòû êíîïêè
Config RAINBOW=1, RB0_LEN=8, RB0_PORT=PORTB, rb0_pin=3 'íàñòðîéêà Rainbow
Dim Color(3) as Byte
R alias Color(_base) : G alias Color(_base + 1) : B alias Color(_base + 2)
Dim A as Byte , X as Byte , C as Byte , P as Byte , T as Byte , N as Byte , D as Byte , Y as Byte , Led(2) as Byte
RB_SelectChannel 0
P = 1
Do
Select Case P
Case 1
Gosub Main
Case 2
Gosub Rainbow
Case 3
Gosub Migalka
End Select
Loop
End
'************************************************
Migalka:
if P <> 3 then goto 3
R = 0 : G = 0 : B = 0
RB_SetColor Led(1), Color(1)
RB_SetColor Led(2), Color(1)
RB_Send
For Y = 1 to 2
Incr T
If T> 50 Then T = 1
Incr A
If A> 50 Then A = 1
Incr X
If X>50 Then X = 1
C = lookup (X , TAB_COLOR)
Select Case C
Case 1
R = lookup (A , TAB_VOLUME) : G = 0 : B = 0
Case 2
G = lookup (A , TAB_VOLUME) : R = 0 : B = 0
Case 3
B = lookup (A , TAB_VOLUME) : R = 0 : G = 0
End Select
Led(Y)= lookup (T , TAB_LED)
RB_SetColor Led(Y), Color(1)
RB_Send
waitms 100
Next
waitms 200
'Wend
3:
Return
'**********************************************************
Rainbow:
For A = 1 to 127 'êðàñíûé ââåðõ
For N = 0 to 7
If P <> 2 Then Goto 2
R = lookup (A , TAB_PWM) : G = 0 : B = 0
RB_SetColor N, Color(1)
RB_Send
Next
waitms 30
Next
Do
A = 127
For X = 1 to 127 'óâåëè÷èâàåì çåëåíûé óìåíüøàåì êðàñíûé
Decr A
For N = 0 to 7
If P <> 2 Then Goto 2
R = lookup (A , TAB_PWM) : B = 0
G =lookup (X , TAB_PWM)
RB_SetColor N, Color(1)
RB_Send
Next
waitms 40
Next
waitms 100
X = 127
For C = 1 to 127
Decr X
For N = 0 to 7
If P <> 2 Then Goto 2 'óâåëè÷âàåì ñèíèé óìåíüøàåì çåëåíûé
R = 0 : G = lookup(X , TAB_PWM)
B =lookup (C , TAB_PWM)
RB_SetColor N, Color(1)
RB_Send
Next
waitms 40
Next
waitms 100
C = 127
For A =1 to 127 'óâåëè÷èâàåì êðàñíûé óìåíüøàåì ñèíèé
Decr C
For N = 0 to 7
If P <> 2 Then Goto 2
G = 0 : B = lookup (C , TAB_PWM)
R =lookup (A , TAB_PWM)
RB_SetColor N, Color(1)
RB_Send
Next
waitms 40
Next
waitms 100
Loop
2:
Return
'*******************************************************
Main:
For N = 0 to 7
R = 0 : G = 0 : B = 0
RB_SetColor N, Color(1)
RB_Send
Next
Do
For A = 1 to 127 'íèæíèé ðÿä ñèíèé
If P <> 1 Then Goto 1
B = lookup (A , TAB_PWM) : G = 0 : R = 0
RB_SetColor 1, Color(1)
RB_SetColor 0, Color(1)
RB_SetColor 7, Color(1)
RB_Send
waitms 40
Next
waitms 500
'---------------------------------------------
For A = 1 to 127 'ñðåäíèé ðÿä çåëåíûé
If P <> 1 Then Goto 1
G = lookup (A , TAB_PWM) : B = 0 : R = 0
RB_SetColor 2, Color(1)
RB_SetColor 6, Color(1)
RB_Send
waitms 40
Next
waitms 500
'-------------------------------------------
For A = 1 to 127 'âåðõíèé ðÿä îðàíæåâûé
If P <> 1 Then Goto 1
R = lookup (A , TAB_PWM) : B = 0
G = lookup (A , TAB_PWM) : B = 0
If G>50 Then G = 50
RB_SetColor 3, Color(1)
RB_SetColor 5, Color(1)
RB_Send
waitms 40
Next
waitms 1000
'---------------------------------------------
R = 255 : B = 0 : G = 0 'çâåçäà êðàñíûé
RB_SetColor 4, Color(1)
RB_Send
wait 3
'--------------------------------------------
For A = 127 to 1 step -1 'îáùåå óáûâàíèå
For N = 0 to 7
If P <> 1 Then Goto 1
R = lookup (A , TAB_PWM) : B = 0
G = lookup (A , TAB_PWM) : B = 0
If G>50 Then G = 50
RB_SetColor 3, Color(1)
RB_SetColor 5, Color(1)
G = lookup (A , TAB_PWM) : B = 0 : R = 0
RB_SetColor 2, Color(1)
RB_SetColor 6, Color(1)
B = lookup (A , TAB_PWM) : G = 0 : R = 0
RB_SetColor 1, Color(1)
RB_SetColor 0, Color(1)
RB_SetColor 7, Color(1)
RB_Send
waitms 10
Next
Next
waitms 500
For A = 127 to 1 step -1
If P <> 1 Then Goto 1
R = lookup (A , TAB_PWM) : B = 0 : G = 0 'çâåçäà óáûâàíèå
RB_SetColor 4, Color(1)
RB_Send
waitms 40
next
Loop
1:
Return
'****************************Ãëàâíûé öèêë***************************************
'*******************************************************************************
Button: 'ïîäïðîãðàììà êíîïêè
Disable INT0
Waitms 100
'Incr P
If PINB.2 = 0 Then Incr P
If P>3 Then P = 1
Gifr = 64
Enable INT0
Return
'*************************************************************************************************
TAB_PWM: 'òàáëèöà çíà÷åíèé äëÿ ñâåòîäèîäîâ
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 2 , 2 , 3 , 3 , 3
Data 4 , 5 , 5 , 6 , 6 , 7 , 8 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 14 , 15
Data 16 , 17 , 19 , 20 , 21 , 22 , 23 , 24 , 26 , 27 , 28 , 30 , 31 , 32 , 34 , 35
Data 37 , 38 , 40 , 42 , 43 , 45 , 47 , 48 , 50 , 52 , 54 , 56 , 57 , 59 , 61 , 63
Data 65 , 67 , 69 , 71 , 74 , 76 , 78 , 80 , 82 , 85 , 87 , 89 , 92 , 94 , 97 , 99
Data 102 , 104 , 107 , 109 , 112 , 115 , 117 , 120 , 123 , 126 , 128 , 131 , 134 , 137 , 140 , 143
Data 146 , 149 , 152 , 155 , 158 , 161 , 165 , 168 , 171 , 174 , 178 , 181 , 184 , 188 , 191 , 195
Data 198 , 202 , 205 , 209 , 213 , 216 , 220 , 224 , 227 , 231 , 235 , 239 , 243 , 247 , 251 , 255
TAB_VOLUME:
Data 126 , 249 , 180 , 173 , 108 , 199 , 164 , 150 , 143 , 219 , 125 , 99 , 253 , 179 , 174 , 149
Data 235 , 115 , 178 , 130 , 229 , 236 , 94 , 104 , 103
Data 135 , 220 , 151 , 130 , 116 , 197 , 132 , 85 , 187 , 154 , 167 , 133 , 146 , 191 , 132 , 211
Data 251 , 134 , 181 , 123 , 153 , 148 , 105 , 130 , 147
TAB_LED:
Data 3 , 5 , 2 , 7 , 5 , 1 , 3 , 6 , 0 , 1 , 5 , 2 , 6 , 3 , 6 , 6
Data 1 , 0 , 1 , 6 , 5 , 0 , 6 , 4 , 2
Data 3 ,5 , 2 , 0 , 5 , 6 , 6 , 7 , 0 , 0 , 7 , 7 , 4 , 4 , 5 , 3
Data 3 , 0 , 5 , 2 , 1 , 6 , 3 , 3 , 4
TAB_COLOR:
Data 2 ,1 , 2 , 2 , 1 , 3 , 2 , 3 , 2 , 3 , 1 , 3 , 3 , 2 , 3 , 1 , 2 , 3 , 3 , 1 , 2 , 3 , 1 , 3 , 1
Data 3 , 1 , 1 , 3 , 1 , 1 , 1 , 3 , 3 , 1 , 1 , 3 , 3 ,1 , 3 , 3 , 1 , 1 , 2 , 1 , 2 , 1 , 1 , 3 , 3