Code:
.include "m8def.inc"
.def tmp = r16
.def lowe = r17
.def lowz = r18
.def highe = r19
.def merker = r20
.def konst = r21
.def pin = r22
.def xlow = r26
.def xhigh = r27
.def ylow = r28
.def yhigh = r29
.def zlow = r30
.def zhigh = r31
ldi xlow,108
ldi lowe,20 ;PIN0 => WENN 1 => BYTEWERT = 1
st x+,lowe
ldi lowe,30 ;PIN1 => WENN 1 => BYTEWERT = 2
st x+,lowe
ldi lowe,30 ;PIN2 => WENN 1 => BYTEWERT = 4
st x+,lowe
ldi lowe,10 ;PIN3 => WENN 1 => BYTEWERT = 8
st x,lowe
ldi konst,4
ldi xlow,100
ldi ylow,108 ;von 108 bis 111 (112)
add ylow,konst ;von 112 bis 116
ldi tmp,1
st y+,tmp
ldi tmp,2
st y+,tmp
ldi tmp,4
st y+,tmp
ldi tmp,8
st y+,tmp
subi ylow,8
ldi zlow,108
ldi lowe,255
schleife2:
schleife1:
ld lowz,y
cp lowe,lowz
brlo istkleiner
mov lowe,lowz
mov zlow,ylow
istkleiner:
inc ylow
cpi r28,112
brlo schleife1
add r30,konst ;0b10000000 => Bereich 136 bis 139
ld merker,Z ;dort ist der PIN Wert gespeichert
subi r30,4
st x+,lowe
st x+,merker
ldi lowe,255
st z,lowe
ldi ylow,108
ldi zlow,108
cpi xlow,108
brlo schleife2
ldi r26,100
ld r0,x+;100 zyclus
ld r1,x+;101 pin
ld r2,x+;102
ld r3,x+;103
ld r4,x+;104
ld r5,x+;105
ld r6,x+;106
ld r7,x+;107
ldi r26,100
ldi r30,108
ldi tmp,0
sorten:
ld lowe,x+
st z+,lowe
ld pin,x+
add pin,tmp
mov tmp,pin
st z+,pin
ld lowz,x
cp lowz,lowe
brne diff
dec r30
dec r30
rjmp gleich
diff:
ldi tmp,0
gleich:
cpi r26,108
brne sorten
ldi r26,108
ld r8,x+;100 zyclus
ld r9,x+;101 pin
ld r10,x+;102
ld r11,x+;103
ld r12,x+;104
ld r13,x+;105
ld r14,x+;106
ld r15,x+;107
nop
nop
nop
Lesezeichen