1 | .include "tn26def.inc"
|
2 |
|
3 | .org 0x000 ; Programm kommt an Anfang von PROM
|
4 |
|
5 | .def temp = r16
|
6 | .def temp1 = r17 ; temporäre Register definieren
|
7 | .def ergebnis = r18
|
8 |
|
9 | .set Frequenzbyte = 0xc0 ; Stellt 8Mhz ein
|
10 |
|
11 | rjmp reset ; Reset handler
|
12 | reti ; IRQ0 handler
|
13 | reti ; Pin change handler
|
14 | reti ; Timer1 compare match 1A
|
15 | reti ; Timer1 compare match 1B
|
16 | reti ; Timer1 overflow handler
|
17 | reti ; Timer0 overflow handler
|
18 | reti ; USI Start handler
|
19 | reti ; USI Overflow handler
|
20 | reti ; EEPROM Ready handler
|
21 | reti ; Analog Comparator handler
|
22 | reti ; ADC Conversion Handler
|
23 |
|
24 |
|
25 | reset: ldi temp1, RAMEND ; Init aus Datenblatt
|
26 | out SP, temp1
|
27 |
|
28 | ldi temp1, Frequenzbyte ; 8Mhz einstellen
|
29 | out OSCCAL, temp1
|
30 |
|
31 |
|
32 | MAIN:
|
33 | LDI Temp, $10
|
34 | PUSH Temp
|
35 | LDI Temp, $20
|
36 | PUSH Temp
|
37 | RCALL Addiere ;ursprüglich nur call
|
38 | POP Ergebnis
|
39 | POP Temp
|
40 |
|
41 |
|
42 | ;original Subrout:
|
43 |
|
44 | ;Addiere:
|
45 | ; MOV ZLow, SPL ;!!!
|
46 | ; ADD ZLow, 4 ;!!!
|
47 | ; PUSH R20
|
48 | ; PUSH R21
|
49 | ; LD R20, Z
|
50 | ; LD R21, -Z
|
51 | ; ADD R20, R21
|
52 | ; ST Z, R20
|
53 | ; POP R21
|
54 | ; POP R20
|
55 | ;RET
|
56 |
|
57 | ; mit veränderungen, da einige fehler gemeldet wurden:
|
58 |
|
59 | Addiere:
|
60 | push temp
|
61 | push temp1
|
62 | ldi temp1, 6
|
63 | in temp, SP
|
64 | add temp, temp1
|
65 | st z, temp ;?Z-register verändert sich aber nicht
|
66 | pop temp1
|
67 | pop temp
|
68 | PUSH R20
|
69 | PUSH R21
|
70 | LD R20, Z ; nichts kommt in r20
|
71 | LD R21, -Z ; ebenso nix in r21 nur Z-register -1
|
72 | ADD R20, R21
|
73 | ST Z, R20
|
74 | POP R21
|
75 | POP R20
|
76 | RET
|