Test_Mega8515.asm


1
;---------------------------alte Version ohne SRAM-----------------------------------------------------------------
2
3
4
;Test_Mega8515
5
6
.nolist
7
8
.include "m8515def.inc"
9
10
11
.equ  XTAL    =   16000000
12
13
.def  NULL    =  r0
14
.def  TEMP1    =  r16
15
.def  TEMP2    =  r17
16
.def  TEMP3    =  r18
17
.def  PWM    =  r19
18
.def  Z1    =  r20
19
.def  Z1    =  r21
20
.def  Z1    =  r22
21
.def  Z1    =  r23
22
.def  Z1    =  r24
23
.def  Z1    =  r25
24
.def  Z1    =  r26
25
.def  Z1    =  r27
26
27
.list
28
29
.org  $000  
30
31
      rjmp      RESET        ;Reset
32
33
.org  $007
34
35
      rjmp      TIMER        ;Timer 0 Überlauf
36
37
38
RESET:
39
         ldi          TEMP1,     LOW(RAMEND)  ; Stackpointer initialisieren
40
          out          SPL,     TEMP1
41
42
          ldi         TEMP1,     HIGH(RAMEND)
43
          out         SPH,     TEMP1
44
45
      ldi      TEMP1,    0xFF
46
      out      DDRA,    TEMP1    ;I/O setup switch PA0...PA7 to output
47
48
      ldi      TEMP1,    0xFF
49
      out      DDRB,    TEMP1    ;I/O setup switch PB0...PB7 to output
50
51
      ldi      TEMP1,    0xFF
52
      out      DDRC,    TEMP1    ;I/O setup switch PC0...PC7 to output
53
54
      ldi      TEMP1,    0x00
55
      out      DDRD,    TEMP1    ;I/O setup switch PD0...PD7 to input
56
57
      ldi      TEMP1,    0b00000101
58
      out      TCCR0,    TEMP1    ;Vorteiler Timer0 1024
59
60
      ldi      TEMP1,    0b00000010
61
      out      TIMSK,    TEMP1    ;Interrupt wenn Timer0 Überlauf
62
63
      ldi      Z1,    1      ;Farbwert LED1
64
      ldi      Z2,    33      ;Farbwert LED2
65
      ldi      Z3,    65      ;Farbwert LED3
66
      ldi      Z4,    97      ;Farbwert LED4
67
      ldi      Z5,    129      ;Farbwert LED5
68
      ldi      Z6,    161      ;Farbwert LED6
69
      ldi      Z7,    193      ;Farbwert LED7
70
      ldi      Z8,    225      ;Farbwert LED8
71
72
      clr      NULL          ;Register auf 0 setzen
73
      clr      PWM
74
75
      sei                ;Interrupts einschalten
76
77
LOOP:
78
      cpi      PWM,    86
79
      brne      LOOP1
80
      clr      PWM
81
82
      out      PORTA,    NULL
83
      out      PORTB,    NULL
84
      out      PORTC,    NULL
85
86
LOOP1:
87
      mov      TEMP2,    Z1
88
      mov      TEMP3,    Z1
89
      subi      TEMP2,    86
90
      subi      TEMP3,    171
91
92
LED1_R:
93
      cpi      Z1,    86
94
      brsh      LED1_G
95
      sbis      PORTA,    0      ;Skip wenn Rot an
96
      sbi      PORTB,    0      ;Grün an
97
98
LED1_RG:
99
      cp      PWM,    Z1
100
      brne      LOOP2
101
      cbi      PORTB,    0      ;Grün aus
102
      sbi      PORTA,    0      ;Rot an
103
      rjmp      LOOP2
104
105
LED1_G:
106
      cpi      Z1,    171
107
      brsh      LED1_B
108
      sbis      PORTB,    0      ;Skip wenn Grün an
109
      sbi      PORTC,    0      ;Blau an
110
111
LED1_GB:
112
      cp      PWM,    TEMP2
113
      brne      LOOP2
114
      cbi      PORTC,    0      ;Blau aus
115
      sbi      PORTB,    0      ;Grün an
116
      rjmp      LOOP2
117
118
LED1_B:
119
      sbis      PORTC,    0      ;Skip wenn Blau an
120
      sbi      PORTA,    0      ;Rot an
121
122
LED1_BR:
123
      cp      PWM,    TEMP3
124
      brne      LOOP2
125
      cbi      PORTA,    0      ;Rot aus
126
      sbi      PORTC,    0      ;Blau an
127
128
LOOP2:
129
      mov      TEMP2,    Z2
130
      mov      TEMP3,    Z2
131
      subi      TEMP2,    86
132
      subi      TEMP3,    171
133
.
134
.
135
.
136
.
137
.
138
.
139
.
140
.
141
142
143
LOOP9:
144
      inc      PWM
145
146
      rjmp      LOOP
147
148
TIMER:
149
150
      inc      Z1,
151
      inc      Z2,
152
      inc      Z3,
153
      inc      Z4,
154
      inc      Z5,    
155
      inc      Z6,  
156
      inc      Z7,  
157
      inc      Z8,
158
159
      reti
160
161
162
163
;---------------------------------neue Version mit SRAM---------------------------------------------------------------
164
165
166
167
;Test_Mega8515
168
169
.nolist
170
171
.include "m8515def.inc"
172
173
174
.equ  XTAL    =   16000000
175
176
.def  NULL    =  r0
177
.def  TEMP1    =  r16
178
.def  TEMP2    =  r17
179
.def  TEMP3    =  r18
180
.def  PWM    =  r19
181
182
.list
183
184
.org  $000  
185
186
      rjmp      RESET        ;Reset
187
188
.org  $007
189
190
      rjmp      TIMER        ;Timer 0 Überlauf
191
192
193
RESET:
194
         ldi          TEMP1,     LOW(RAMEND)  ; Stackpointer initialisieren
195
          out          SPL,     TEMP1
196
197
          ldi         TEMP1,     HIGH(RAMEND)
198
          out         SPH,     TEMP1
199
200
      ldi      TEMP1,    0xFF
201
      out      DDRA,    TEMP1    ;I/O setup switch PA0...PA7 to output
202
203
      ldi      TEMP1,    0xFF
204
      out      DDRB,    TEMP1    ;I/O setup switch PB0...PB7 to output
205
206
      ldi      TEMP1,    0xFF
207
      out      DDRC,    TEMP1    ;I/O setup switch PC0...PC7 to output
208
209
      ldi      TEMP1,    0x00
210
      out      DDRD,    TEMP1    ;I/O setup switch PD0...PD7 to input
211
212
      ldi      TEMP1,    0b00000101
213
      out      TCCR0,    TEMP1    ;Vorteiler Timer0 1024
214
215
      ldi      TEMP1,    0b00000010
216
      out      TIMSK,    TEMP1    ;Interrupt wenn Timer0 Überlauf
217
218
      ldi      TEMP1,    1      ;Farbwert LED1
219
      sts      Z1,    TEMP1
220
      ldi      TEMP1,    33      ;Farbwert LED2
221
      sts      Z2,    TEMP1
222
      ldi      TEMP1,    65      ;Farbwert LED3
223
      sts      Z3,    TEMP1
224
      ldi      TEMP1,    97      ;Farbwert LED4
225
      sts      Z4,    TEMP1
226
      ldi      TEMP1,    129      ;Farbwert LED5
227
      sts      Z5,    TEMP1
228
      ldi      TEMP1,    161      ;Farbwert LED6
229
      sts      Z6,    TEMP1
230
      ldi      TEMP1,    193      ;Farbwert LED7
231
      sts      Z7,    TEMP1
232
      ldi      TEMP1,    225      ;Farbwert LED8
233
      sts      Z8,    TEMP1
234
235
      clr      NULL          ;Register auf 0 setzen
236
      clr      PWM
237
238
      sei                ;Interrupts einschalten
239
240
LOOP:
241
      cpi      PWM,    86
242
      brne      LOOP1
243
      clr      PWM
244
245
      out      PORTA,    NULL
246
      out      PORTB,    NULL
247
      out      PORTC,    NULL
248
249
LOOP1:
250
      lds      TEMP1,    Z1
251
      lds      TEMP2,    Z1
252
      lds      TEMP3,    Z1
253
      subi      TEMP2,    86
254
      subi      TEMP3,    171
255
256
LED1_R:
257
      cpi      TEMP1,    86
258
      brsh      LED1_G
259
      sbis      PORTA,    0      ;Skip wenn Rot an
260
      sbi      PORTB,    0      ;Grün an
261
262
LED1_RG:
263
      cp      PWM,    TEMP1
264
      brne      LOOP2
265
      cbi      PORTB,    0      ;Grün aus
266
      sbi      PORTA,    0      ;Rot an
267
      rjmp      LOOP2
268
269
LED1_G:
270
      cpi      TEMP1,    171
271
      brsh      LED1_B
272
      sbis      PORTB,    0      ;Skip wenn Grün an
273
      sbi      PORTC,    0      ;Blau an
274
275
LED1_GB:
276
      cp      PWM,    TEMP2
277
      brne      LOOP2
278
      cbi      PORTC,    0      ;Blau aus
279
      sbi      PORTB,    0      ;Grün an
280
      rjmp      LOOP2
281
282
LED1_B:
283
      sbis      PORTC,    0      ;Skip wenn Blau an
284
      sbi      PORTA,    0      ;Rot an
285
286
LED1_BR:
287
      cp      PWM,    TEMP3
288
      brne      LOOP2
289
      cbi      PORTA,    0      ;Rot aus
290
      sbi      PORTC,    0      ;Blau an
291
292
LOOP2:
293
      lds      TEMP1,    Z2
294
      lds      TEMP2,    Z2
295
      lds      TEMP3,    Z2
296
      subi      TEMP2,    86
297
      subi      TEMP3,    171
298
.
299
.
300
.
301
.
302
.
303
.
304
.
305
.
306
307
308
LOOP9:
309
      inc      PWM
310
311
      rjmp      LOOP
312
313
TIMER:
314
      lds      TEMP1,    Z1
315
      inc      TEMP1
316
      sts      Z1,      TEMP1
317
      lds      TEMP1,    Z2
318
      inc      TEMP1
319
      sts      Z2,      TEMP1
320
      lds      TEMP1,    Z3
321
      inc      TEMP1
322
      sts      Z3,      TEMP1
323
      lds      TEMP1,    Z4
324
      inc      TEMP1
325
      sts      Z4,      TEMP1
326
      lds      TEMP1,    Z5
327
      inc      TEMP1
328
      sts      Z5,      TEMP1
329
      lds      TEMP1,    Z6
330
      inc      TEMP1
331
      sts      Z6,      TEMP1
332
      lds      TEMP1,    Z7
333
      inc      TEMP1
334
      sts      Z7,      TEMP1
335
      lds      TEMP1,    Z8
336
      inc      TEMP1
337
      sts      Z8,      TEMP1
338
339
      reti
340
341
.DSEG                      ; Umschalten auf das SRAM Datensegment
342
343
Z1:      .BYTE    1            ; 1 Byte unter dem Namen "Z1" reservieren
344
Z2:      .BYTE    1            ; 1 Byte unter dem Namen "Z2" reservieren
345
Z3:      .BYTE    1            ; 1 Byte unter dem Namen "Z3" reservieren
346
Z4:      .BYTE    1            ; 1 Byte unter dem Namen "Z4" reservieren
347
Z5:      .BYTE    1            ; 1 Byte unter dem Namen "Z5" reservieren
348
Z6:      .BYTE    1            ; 1 Byte unter dem Namen "Z6" reservieren
349
Z7:      .BYTE    1            ; 1 Byte unter dem Namen "Z7" reservieren
350
Z8:      .BYTE    1            ; 1 Byte unter dem Namen "Z8" reservieren