1 | ' KONFIGURATION
|
2 | '
|
3 | $regfile = "m8def.dat"
|
4 | $crystal = 3686400
|
5 |
|
6 | ' Displaytyp
|
7 | Const Lcdrows = 2
|
8 | Const Lcdcols = 16
|
9 |
|
10 | Const Keyup = 8
|
11 | Const Keydown = 2
|
12 | Const Keyright = 6
|
13 | Const Keyleft = 4
|
14 |
|
15 | 'Speicherbereich für Menüeinträge
|
16 | Const Mnumaxlines = 10
|
17 |
|
18 | ' LCD Einstellungen
|
19 | Config PortD = Output
|
20 | Config Lcdmode = Port
|
21 | Config Lcdbus = 4
|
22 | Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 ,
|
23 | Config Lcdpin = Pin , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
|
24 | Config Lcd = 16 * 2
|
25 | Cursor Off
|
26 |
|
27 | ' VARIABLEN
|
28 | '
|
29 | Dim Mnuselect As Integer
|
30 | Dim Mnuselectscount As Integer
|
31 | Dim Mnuselectback As Integer
|
32 | Dim Mnuselectpointer As Integer
|
33 | Dim Mnutext(mnumaxlines) As String * Lcdcols
|
34 | Dim Mnuselects(mnumaxlines) As Integer
|
35 | Dim I As Integer
|
36 | Dim N As Integer
|
37 | Dim M As Integer
|
38 | Dim Mnuselectold As Integer
|
39 | Dim Keypressed As Integer
|
40 |
|
41 | 'PROGRAMM
|
42 | '
|
43 | Waitms 300
|
44 |
|
45 | Mnuselect = 0
|
46 |
|
47 | Do
|
48 | Select Case Mnuselect
|
49 | Case 0:
|
50 | Mnuselectback = 0
|
51 | Mnutext(1) = "1541 Floppy ID"
|
52 | Mnuselects(1) = 1
|
53 | Mnutext(2) = "Selbsttest"
|
54 | Mnuselects(2) = 2
|
55 | Mnuselectscount = 2
|
56 | Gosub Mnushow
|
57 | Case 1:
|
58 | Mnuselectback = 0
|
59 | Mnutext(1) = "IP-Adresse"
|
60 | Mnuselects(1) = 11
|
61 | Mnutext(2) = "DHCP"
|
62 | Mnuselects(2) = 12
|
63 | Mnutext(3) = "Mac-Adresse"
|
64 | Mnuselects(3) = 13
|
65 | Mnuselectscount = 3
|
66 | Gosub Mnushow
|
67 | Case 11:
|
68 | '
|
69 | ' Programmteil
|
70 | '
|
71 | Waitms 500
|
72 | Mnuselect = 1
|
73 | Case 12:
|
74 | '
|
75 | ' Programmteil
|
76 | '
|
77 | Waitms 500
|
78 | Mnuselect = 1
|
79 | Case 13:
|
80 | '
|
81 | ' Programmteil
|
82 | '
|
83 | Waitms 500
|
84 | Mnuselect = 1
|
85 | Case 2:
|
86 | Mnuselectback = 0
|
87 | Mnutext(1) = "Vollstaendig"
|
88 | Mnuselects(1) = 21
|
89 | Mnutext(2) = "Teilweise"
|
90 | Mnuselects(2) = 22
|
91 | Mnuselectscount = 2
|
92 | Gosub Mnushow
|
93 | Case 21:
|
94 | '
|
95 | ' Programmteil
|
96 | '
|
97 | Waitms 500
|
98 | Mnuselect = 2
|
99 | Case 22:
|
100 | Mnuselectback = 2
|
101 | Mnutext(1) = "Display"
|
102 | Mnuselects(1) = 221
|
103 | Mnutext(2) = "Schnittstellen"
|
104 | Mnuselects(2) = 222
|
105 | Mnuselectscount = 2
|
106 | Gosub Mnushow
|
107 | Case 221:
|
108 | '
|
109 | ' Programmteil
|
110 | '
|
111 | Waitms 500
|
112 | Mnuselect = 22
|
113 | Case 222:
|
114 | '
|
115 | ' Programmteil
|
116 | '
|
117 | Waitms 500
|
118 | Mnuselect = 22
|
119 | Case Else:
|
120 | Mnuselect = 0
|
121 | End Select
|
122 | Loop
|
123 |
|
124 | Mnushow:
|
125 | Mnuselectold = Mnuselect
|
126 | Mnuselectpointer = 1
|
127 |
|
128 | While Mnuselectold = Mnuselect
|
129 | M = 1
|
130 | Cls
|
131 | N = Mnuselectpointer + Lcdrows
|
132 | Decr N
|
133 |
|
134 | If N > Mnuselectscount Then
|
135 | N = Mnuselectscount
|
136 | End If
|
137 |
|
138 | For I = Mnuselectpointer To N
|
139 | Locate M , 1
|
140 | If I = Mnuselectpointer Then
|
141 | Lcd "["
|
142 | Else
|
143 | Lcd " "
|
144 | End If
|
145 | Lcd Mnutext(i)
|
146 | Incr M
|
147 | Next
|
148 |
|
149 | Do
|
150 | Gosub Tstq
|
151 | Loop Until Keypressed > 0
|
152 |
|
153 | If Keypressed = Keyup Then
|
154 | If Mnuselectpointer > 1 Then
|
155 | Decr Mnuselectpointer
|
156 | End If
|
157 | End If
|
158 |
|
159 | If Keypressed = Keydown Then
|
160 | If Mnuselectpointer < Mnuselectscount Then
|
161 | Incr Mnuselectpointer
|
162 | End If
|
163 | End If
|
164 |
|
165 | If Keypressed = Keyright Then
|
166 | Mnuselect = Mnuselects(mnuselectpointer)
|
167 | End If
|
168 |
|
169 | If Keypressed = Keyleft Then
|
170 | Mnuselect = Mnuselectback
|
171 | End If
|
172 |
|
173 | Wend
|
174 | Cls
|
175 | Return
|
176 |
|
177 | Tstq:
|
178 | Ddrb = &B11111111
|
179 | Portb = &B00000000
|
180 | Ddrc = &B00000000
|
181 | Portc = &B11111111
|
182 |
|
183 | Keypressed = 0
|
184 |
|
185 | If Pinc.3 = 0 Then
|
186 | Keypressed = Keypressed + 10
|
187 | End If
|
188 |
|
189 | If Pinc.4 = 0 Then
|
190 | Keypressed = Keypressed + 20
|
191 | End If
|
192 |
|
193 | If Pinc.5 = 0 Then
|
194 | Keypressed = Keypressed + 30
|
195 | End If
|
196 |
|
197 | If Pinc.6 = 0 Then
|
198 | Keypressed = Keypressed + 40
|
199 | End If
|
200 |
|
201 | If Keypressed > 0 Then
|
202 | Ddrb = &B00000000
|
203 | Portb = &B11111111
|
204 | Ddrc = &B11111111
|
205 | Portc = &B00000000
|
206 |
|
207 | If Pinb.0 = 0 Then
|
208 | Keypressed = Keypressed + 1
|
209 | End If
|
210 |
|
211 | If Pinb.1 = 0 Then
|
212 | Keypressed = Keypressed + 2
|
213 | End If
|
214 |
|
215 | If Pinb.2 = 0 Then
|
216 | Keypressed = Keypressed + 3
|
217 | End If
|
218 |
|
219 | If Pinb.3 = 0 Then
|
220 | Keypressed = Keypressed + 4
|
221 | End If
|
222 |
|
223 | If Pinb.4 = 0 Then
|
224 | Keypressed = Keypressed + 5
|
225 | End If
|
226 |
|
227 | If Pinb.5 = 0 Then
|
228 | Keypressed = Keypressed + 6
|
229 | End If
|
230 |
|
231 | If Pinb.6 = 0 Then
|
232 | Keypressed = Keypressed + 7
|
233 | End If
|
234 |
|
235 | If Pinb.7 = 0 Then
|
236 | Keypressed = Keypressed + 8
|
237 | End If
|
238 |
|
239 | Waitms 250
|
240 | End If
|
241 |
|
242 | Return
|
243 | End
|