Делаю меню на Siemens 65. Четыре кнопки PB0 - 1- 2- 3. Опрос нажатия по прерыванию таймера TIMER0. Вроде-бы все правильно сделал. (Саму идею я позаимствовал на avrproect.ru) только там каждая кнопка на своем прерывании, для меня это зажирно. Но не в этом дело. Кампилятору не нравится мой синтаксис. В чем проблемма не пойму.
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 19200
$hwstack = 128 'Размер аппаратного стека
$swstack = 128 'Размер программного стека
$framesize = 128 'Размер области импользуемой для преобразования
'и временного храненияя данных
'Byte - 4 bytes, Integer - 7 bytes,
'Longs - 16 bytes, Single - 24 bytes
'String -длинна слияния (монтажа) строк
'Плюс локальные LOCAL переменные,
'плюс временные VALUE (BYVAL)
$lib "LCD-SIEMENS_S65_LS020_256_W1.LBX"
Config Graphlcd = Color , Controlport = Portc , Cs = 4 , Rs = 2 , Scl = 5 , Sda = 6 , Reset = 3
'Объявление переменных
Dim A As Word
Const Blue = &B00000011 ''predefined contants are making programming easier
Const Yellow = &B11111100
Const Red = &B11100000
Const Green = &B00011100
Const Black = &B00000000
Const White = &B11111111
Const Brightgreen = &B00111110
Const Darkgreen = &B00010100
Const Darkred = &B10100000
Const Darkblue = &B00000010
Const Brightblue = &B00011111
Const Orange = &B11111000
Const Violett = 199
Const Brown = 192 '128
Const белый = &HFF
Const чёрный = &H00
'===============================================================================
Config Pinb.3 = Input
Bolche Alias Pinb.3
Config Pinb.2 = Input
Menche Alias Pinb.2
Config Pinb.1 = Input
Esc Alias Pinb.1
Config Pinb.0 = Input
Enter Alias Pinb.0
Config Timer0 = Timer , Prescale = 1024
Reset Portd.7
Reset Portb.0
Set Portb.1
Set Portb.2
Set Portb.3
Set Portd.2
Set Portd.0
Set Portd.3
Set Portb.4
'----------------------------------------------------
On Timer0 Opros_knopok 'Подпрограмма обработки прерывания
Enable Timer0 'Разрешаем работу прерывания Timer0
Enable Interrupts 'Разрешаем глобальные прерывания
'=======================================================================
A = 10 'присваиваем переменной значение 10
Do 'главный цикл програамы. постоянно проверяем значение переменной А
'в зависимости от значения переменной, выполняем подрпограммы
Select Case A 'проверили значение переменной
Case 10 : Gosub 10 'свалили на выполнение подпрограммы
Case 20 : Gosub 20
Case 30 : Gosub 30
Case 40 : Gosub 40
Case 11 : Gosub 11
Case 12 : Gosub 12
Case 13 : Gosub 13
Case 21 : Gosub 21
Case 22 : Gosub 22
Case 23 : Gosub 23
Case 31 : Gosub 31
Case 32 : Gosub 32
Case 33 : Gosub 33
Case 41 : Gosub 41
Case 42 : Gosub 42
Case 43 : Gosub 43
Case 110 : Gosub 110
Case 120 : Gosub 120
Case 130 : Gosub 130
Case 210 : Gosub 210
Case 220 : Gosub 220
Case 230 : Gosub 230
Case 310 : Gosub 310
Case 320 : Gosub 320
Case 330 : Gosub 330
Case 410 : Gosub 410
Case 420 : Gosub 420
Case 430 : Gosub 430
End Select
Waitms 500
Loop
Opros_knopok:
If Enter = 1 Then 'Обработка нажатия кнопки ENTER
If A = 11 Or A = 12 Or A = 13 Then
A = A * 10
End If
If A = 21 Or A = 22 Or A = 23 Then
A = A * 10
End If
If A = 31 Or A = 32 Or A = 33 Then
A = A * 10
End If
If A = 41 Or A = 42 Or A = 43 Then
A = A * 10
End If
If A = 10 Or A = 20 Or A = 30 Or A = 40 Then
Incr A
End If
End If
Return
If Esc = 1 Then 'Обработка нажатия кнопки ESC
If A = 11 Or A = 12 Or A = 13 Then
A = 10
End If
If A = 21 Or A = 22 Or A = 23 Then
A = 20
End If
If A = 31 Or A = 32 Or A = 33 Then
A = 30
End If
If A = 41 Or A = 42 Or A = 43 Then
A = 40
End If
If A > 100 Then
A = A / 10
End If
End If
Return
If Menche = 1 Then 'Обработка нажатия кнопки вниз
If A = 10 Or A = 20 Or A = 30 Then
A = A + 10
End If
If A = 11 Or A = 12 Then
Incr A
End If
If A = 21 Or A = 22 Then
Incr A
End If
If A = 31 Or A = 32 Then
Incr A
End If
If A = 41 Or A = 42 Then
Incr A
End If
End If
Return
If Bolche = 1 Then 'Обработка нажатия кнопки наверх
If A = 20 Or A = 30 Or A = 40 Then
A = A - 10
End If
If A = 12 Or A = 13 Then
Decr A
End If
If A = 22 Or A = 23 Then
Decr A
End If
If A = 32 Or A = 33 Then
Decr A
End If
If A = 42 Or A = 43 Then
Decr A
End If
End If
Return
End
' ниже идут подпрограммы отрисовки на дисплее пунктов меню
10:
Cls
Setfont Color16x16
Lcdat 7 , 0 , "Программа 1 <" , Brown , Yellow
Lcdat 23 , 0 , "Программа 2" , Brown , Yellow
Lcdat 39 , 0 , "Программа 3" , Brown , Yellow
Lcdat 55 , 0 , "Программа 4" , Orange , Yellow
Return
20:
Cls
Setfont Color16x16
Lcdat 7 , 0 , "Программа 1" , Brown , Yellow
Lcdat 23 , 0 , "Программа 2 <" , Brown , Yellow
Lcdat 39 , 0 , "Программа 3" , Brown , Yellow
Lcdat 55 , 0 , "Программа 4" , Brown , Yellow
Return
30:
Cls
Setfont Color16x16
Lcdat 7 , 0 , "Программа 1" , Brown , Yellow
Lcdat 23 , 0 , "Программа 2" , Brown , Yellow
Lcdat 39 , 0 , "Программа 3 <" , Brown , Yellow
Lcdat 55 , 0 , "Программа 4" , Brown , Yellow
Return
40:
Cls
Setfont Color16x16
Lcdat 7 , 0 , "Программа 1" , Brown , Yellow
Lcdat 23 , 0 , "Программа 2" , Brown , Yellow
Lcdat 39 , 0 , "Программа 3" , Brown , Yellow
Lcdat 55 , 0 , "Программа 4 <" , Brown , Yellow
Return
11:
Cls
Setfont Color16x16
Lcdat 7 , 0 , " Программа 1:" , Brown , Yellow
Lcdat 23 , 0 , "Программа 1.1 <" , Brown , Yellow
Lcdat 39 , 0 , "Программа 1.2" , Brown , Yellow
Lcdat 55 , 0 , "Программа 1.3" , Brown , Yellow
Return
12:
Cls
Setfont Color16x16
Lcdat 7 , 0 , " Программа 1:" , Brown , Yellow
Lowerline
Lcdat 23 , 0 , "Программа 1.1" , Brown , Yellow
Thirdline
Lcdat 39 , 0 , "Программа 1.2 <" , Brown , Yellow
Fourthline
Lcdat 55 , 0 , "Программа 1.3" , Brown , Yellow
Return
13:
Cls
Setfont Color16x16
Lcdat 7 , 0 , " Программа 1:" , Brown , Yellow
Lcdat 23 , 0 , "Программа 1.1" , Brown , Yellow
Lcdat 39 , 0 , "Программа 1.2" , Brown , Yellow
Lcdat 55 , 0 , "Программа 1.3 <" , Brown , Yellow
Return
21:
Cls
Setfont Color16x16
Lcdat 7 , 0 , " Программа 2:" , Brown , Yellow
Lcdat 23 , 0 , "Программа 2.1 <" , Brown , Yellow
Lcdat 39 , 0 , "Программа 2.2" , Brown , Yellow
Lcdat 55 , 0 , "Программа 2.3" , Brown , Yellow
Return
22:
Cls
Setfont Color16x16
Lcdat 7 , 0 , " Программа 2:" , Brown , Yellow
Lcdat 23 , 0 , "Программа 2.1" , Brown , Yellow
Lcdat 39 , 0 , "Программа 2.2 <" , Brown , Yellow
Lcdat 55 , 0 , "Программа 2.3" , Brown , Yellow
Return
23:
Cls
Setfont Color16x16
Lcdat 7 , 0 , " Программа 2:" , Brown , Yellow
Lcdat 23 , 0 , "Программа 2.1" , Brown , Yellow
Lcdat 39 , 0 , "Программа 2.2" , Brown , Yellow
Lcdat 55 , 0 , "Программа 2.3 <" , Brown , Yellow
Return
31:
Cls
Setfont Color16x16
Lcdat 7 , 0 , " Программа 3:" , Brown , Yellow
Lcdat 23 , 0 , "Программа 3.1 <" , Brown , Yellow
Lcdat 39 , 0 , "Программа 3.2" , Brown , Yellow
Lcdat 55 , 0 , "Программа 3.3" , Brown , Yellow
Return
32:
Cls
Setfont Color16x16
Lcdat 7 , 0 , " Программа 3:" , Brown , Yellow
Lcdat 23 , 0 , "Программа 3.1" , Brown , Yellow
Lcdat 39 , 0 , "Программа 3.2 <" , Brown , Yellow
Lcdat 55 , 0 , "Программа 3.3" , Brown , Yellow
Return
33:
Cls
Setfont Color16x16
Lcdat 7 , 0 , " Программа 3:" , Brown , Yellow
Lcdat 23 , 0 , "Программа 3.1" , Brown , Yellow
Lcdat 39 , 0 , "Программа 3.2" , Brown , Yellow
Lcdat 55 , 0 , "Программа 3.3 <" , Brown , Yellow
Return
41:
Cls
Setfont Color16x16
Lcdat 7 , 0 , " Программа 4:" , Brown , Yellow
Lcdat 23 , 0 , "Программа 4.1 <" , Brown , Yellow
Lcdat 39 , 0 , "Программа 4.2" , Brown , Yellow
Lcdat 55 , 0 , "Программа 4.3" , Brown , Yellow
Return
42:
Cls
Setfont Color16x16
Lcdat 7 , 0 , " Программа 4:" , Brown , Yellow
Lcdat 23 , 0 , "Программа 4.1" , Brown , Yellow
Lcdat 39 , 0 , "Программа 4.2 <" , Brown , Yellow
Lcdat 55 , 0 , "Программа 4.3" , Brown , Yellow
Return
43:
Cls
Setfont Color16x16
Lcdat 7 , 0 , " Программа 4:" , Brown , Yellow
Lcdat 23 , 0 , "Программа 4.1" , Brown , Yellow
Lcdat 39 , 0 , "Программа 4.2" , Brown , Yellow
Lcdat 55 , 0 , "Программа 4.3 <" , Brown , Yellow
Return
'подпрограммы в которых отображаем выполнение каких-либо действий
110:
Cls
Setfont Color16x16
Lcdat 7 , 0 , "RUN PROGRAM 1.1" , Brown , Yellow
Wait 1
Return
120:
Cls
Setfont Color16x16
Lcdat 7 , 0 , "RUN PROGRAM 1.2" , Brown , Yellow
Return
130:
Cls
Setfont Color16x16
Lcdat 7 , 0 , "RUN PROGRAM 1.3" , Brown , Yellow
Return
210:
Cls
Setfont Color16x16
Lcdat 7 , 0 , "RUN PROGRAM 2.1" , Brown , Yellow
Return
220:
Cls
Setfont Color16x16
Lcdat 7 , 0 , "RUN PROGRAM 2.2" , Brown , Yellow
Return
230:
Cls
Setfont Color16x16
Lcdat 7 , 0 , "RUN PROGRAM 2.3" , Brown , Yellow
Return
310:
Cls
Setfont Color16x16
Lcdat 7 , 0 , "RUN PROGRAM 3.1" , Brown , Yellow
Return
320:
Cls
Setfont Color16x16
Lcdat 7 , 0 , "RUN PROGRAM 3.2" , Brown , Yellow
Return
330:
Cls
Setfont Color16x16
Lcdat 7 , 0 , "RUN PROGRAM 3.3" , Brown , Yellow
Return
410:
Cls
Setfont Color16x16
Lcdat 7 , 0 , "RUN PROGRAM 4.1" , Brown , Yellow
Return
420:
Cls
Setfont Color16x16
Lcdat 7 , 0 , "RUN PROGRAM 4.2" , Brown , Yellow
Return
430:
Cls
Setfont Color16x16
Lcdat 7 , 0 , "RUN PROGRAM 4.3" , Brown , Yellow
Return
$include "color8x8wRus.font"
$include "color16x16wRus.font"