Hallo Leute, ich Versuche mich gerade in Assembler reinzufuchsen. Wenn ich das Folgende Programm simulieren möchte, kommt immer zweimal die oben genannte Fehlermeldung. Zwischen den beiden Fehlern erscheint die Warnung "AVR Simulator: Invalid opcode 0xffff at address 0x000035 ". Im weiteren Verlauf lässt sich der Code jedoch simulieren.
1 | .include "m8def.inc" |
2 | |
3 | .def tmp = r16 |
4 | .def spannung = r17 |
5 | .def timer0 = r18 |
6 | |
7 | .org 0x000 |
8 | rjmp main ; springe zum Hauptprogramm |
9 | .org OVF0addr |
10 | rjmp timer0_overflow ; Timer Interrupt |
11 | |
12 | |
13 | |
14 | main: |
15 | ldi tmp,LOW(RAMEND) ; Stackpointer setzen |
16 | out SPL,tmp |
17 | ldi tmp,HIGH(RAMEND) |
18 | out SPH,tmp |
19 | |
20 | ldi tmp,0xff |
21 | out DDRB,tmp ; PORTB ist Ausgang, nur PB0 wird benutzt |
22 | |
23 | ldi tmp,0b011000000 |
24 | out admux,tmp ; 1. Steuerungregister für ADC |
25 | |
26 | ldi tmp,0b11111110 |
27 | out adcsra,tmp ; 2. Steuerungsregister für ADC |
28 | |
29 | ldi tmp,0b00000001 |
30 | out TCCR0,tmp |
31 | |
32 | ldi tmp,0b00000001 |
33 | out TIMSK,tmp |
34 | |
35 | sei |
36 | |
37 | loop: |
38 | in spannung,adch ; High Byte in Register Spannung einlesen |
39 | cpi spannung,50 ; Spannung vergleichen |
40 | |
41 | brsh anschalten ; je nach dem anschalten oder ausschalten |
42 | brlo ausschalten |
43 | |
44 | setzen: |
45 | out PORTB,tmp ; PB0 setzen |
46 | |
47 | rjmp loop |
48 | |
49 | |
50 | anschalten: |
51 | ldi tmp,0x01 |
52 | rjmp setzen |
53 | |
54 | ausschalten: |
55 | ldi tmp,0x00 |
56 | rjmp setzen |
57 | |
58 | timer0_overflow: |
59 | push tmp |
60 | inc timer0 |
61 | pop tmp |
62 | reti |