'TEST WYWIETLACZA PLAZMOWEGO IN-33
'crazy_phisic@o2.pl

$regfile = "attiny26.dat"
$crystal = 8000000

Config Porta.7 = Output
Config Porta.6 = Output
Config Porta.5 = Output
Config Porta.4 = Output
Config Porta.3 = Output
Config Porta.2 = Output

Config Portb.6 = Output
Test Alias Portb.6


F1 Alias Porta.7
F2 Alias Porta.6
F3 Alias Porta.5
K_r Alias Porta.4
A2 Alias Porta.3
A1 Alias Porta.2

Config Porta.0 = Input
Config Porta.1 = Input

Declare Sub Set_anode()
Declare Sub Set_active_cathode()


Dim Ramp As Byte
Ramp = 0
Dim New_scan As Bit
New_scan = 1
Dim Act_phase As Byte
Act_phase = 1

Dim L As Byte
Dim R As Byte

Dim Temp_l As Byte
Dim Temp_r As Byte

Dim Flaga As Bit


Adcsr = &B11100011
Tccr0 = &B00000011

Enable Interrupts
Enable Timer0
On Timer0 Timer_0
Timer0 = 252


Do
If New_scan = 1 Then
   New_scan = 0
   Call Set_anode()
   Call Set_active_cathode()

End If
Loop

'-----------------

Sub Set_anode()

   Temp_l = Ramp
   Temp_r = Temp_l
   If L >= Temp_l Then                                      '
      Reset A1
   Else
      Set A1
   End If

   If R >= Temp_r Then
      Reset A2
   Else
      Set A2
   End If


End Sub

'-----------------

Sub Set_active_cathode()
   Set Flaga

   If Ramp = 0 Then
      Disable Timer0
      Act_phase = 1
      Set K_r
      Reset F1
      Reset F2
      Reset F3
      Reset A1
      Reset A2

         Admux = &B10100000
         Waitus 60
         R = Adch
         Waitus 5
         Admux = &B10100001
         Waitus 60
         L = Adch

         If L > 13 Then
         L = L - 13
         L = Lookup(l , Log_tab)
         End If
         If R > 13 Then
         R = R - 13
         R = Lookup(r , Log_tab)
         End If

    Reset K_r
    Timer0 = 252
    Enable Timer0
    Reset Flaga
   End If

   If Act_phase > 3 Then
      Act_phase = 1
   End If



   If Flaga = 1 Then
      Select Case Act_phase

         Case 3 : Set F3
                           Reset F1
                           Reset F2
                           Incr Act_phase
                           Reset Flaga

         Case 2 : Set F2
                           Reset F1
                           Reset F3
                           Incr Act_phase
                           Reset Flaga

         Case 1 : Set F1
                           Reset F2
                           Reset F3
                           Incr Act_phase
                           Reset Flaga

       End Select
     End If


End Sub

'-----------------

Timer_0:
Timer0 = Timer0 + 248

If Ramp <= 106 Then
   Incr Ramp
Else
   Ramp = 0
End If

New_scan = 1
Toggle Test
Return
Return


Log_tab:
Data 0 , 13 , 21 , 26 , 31 , 34 , 37 , 40 , 42 , 44 , 46 , 47 , 49 , 50 , 51 , 53 , 54 , 55,
Data 56 , 57 , 58 , 59 , 60 , 60 , 61 , 62 , 63 , 63 , 64 , 65 , 65 , 66 , 66 , 67 , 68 , 68 , 69 , 69 , 70 , 70,
Data 71 , 71 , 72 , 72 , 72 , 73 , 73 , 74 , 74 , 74 , 75 , 75 , 75 , 76,
Data 76 , 77 , 77 , 77 , 78 , 78 , 78 , 78 , 79 , 79 , 79 , 80 , 80 , 80 , 81 , 81 , 81 , 81 , 82,
Data 82 , 82 , 82 , 83 , 83 , 83 , 83 , 84 , 84 , 84 , 84 , 84 ,
Data 85 , 85 , 85 , 85 , 86 , 86 , 86 , 86 , 86 , 87 ,
Data 87 , 87 , 87 , 87 , 88 , 88 , 88 , 88 , 88 , 88 , 89 , 89 , 89 , 89,
Data 89 , 90 , 90 , 90 , 90 , 90 , 90 , 91 , 91 , 91 , 91 , 91 , 91 , 91 , 92 , 92 , 92 , 92 , 92 , 92 , 93,
Data 93 , 93 , 93 , 93 , 93 , 93 , 94 , 94 , 94 , 94 , 94 , 94 , 94 , 94 , 95 , 95 , 95 , 95,
Data 95 , 95 , 95 , 96 , 96 , 96 , 96 , 96 , 96 , 96 , 96 , 97 , 97 , 97 , 97 , 97,
Data 97 , 97 , 97 , 97 , 98 , 98 , 98 , 98 , 98 , 98 , 98 , 98 , 98 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99,
Data 99 , 99 , 100 , 100 , 100 , 100 , 100 , 100 , 100 , 100 , 100 , 100 , 101 , 101 , 101,
Data 101 , 101 , 101 , 101 , 101 , 101 , 101 , 101 , 102 , 102 , 102 , 102 , 102 , 102,
Data 102 , 102 , 102 , 102 , 102 , 103 , 103 , 103 , 103 , 103 , 103 , 103,
Data 103 , 103 , 103 , 103 , 103 , 104 , 104 , 104 , 104 , 104 , 104 , 104 , 104,
Data 104 , 104 , 104 , 104 , 105 , 105 , 105 , 105 , 105 , 105 , 105 , 105 , 105 , 105 , 106 , 106 , 106