rendered paste body;-----------------------START-------------------------
.include "m169def.inc"
;-----------------------------------------------------
.MACRO LESEEINGANG
in register, PINB
com register
andi register, 0xD0 ;Maske für Bit4, 6 und 7
mov zregister, register
in register, PINE
com register
andi register, 0x0C ;Maske für Bit2 und 3
or register, zregister
mov zregister, register
.ENDMACRO
;-----------------------------------------------------
.org 0x0000
.DEF register = R16 ;Standardregister
.DEF gregister = R17 ;Geschwindigkeitsregister
.DEF sregister = R18 ;Geschwindigkeitsstufenregister
.DEF zregister = R19 ;Zwischenspeicherregister
.DEF loop1register = R20 ;Schleifenregister1
.DEF loop2register = R21 ;Schleifenregister2
.DEF loop3register = R22 ;Schleifenregister3
;Stack inititalisieren
ldi register, LOW(RAMEND)
out SPL, register
ldi register, HIGH(RAMEND)
out SPH, register
;LCD inititalisieren
ldi register, 0xB7
sts LCDCRB, register
ldi register, 0x10
sts LCDFRR, register
ldi register, 0x0F
sts LCDCCR, register
ldi register, 0x80
sts LCDCRA, register
;Ein und Ausgänge inititalisieren
ser register
out DDRD, register ;PORTD als Ausgang setzen
ser register
out DDRB, register ;PORTB als Ausgang setzen
out DDRE, register ;PORTB als Ausgang setzen
ser register
out PORTE, register ;Pullups setzen
out PORTB, register ;Pullups setzen
clr register
out DDRB, register ;PORTB als Eingang setzen
out DDRE, register ;PORTB als Eingang setzen
clr register
sts DIDR0, register
sts DIDR1, register
rcall STUFE0
rjmp START ;zu Start springen
;-----------------------------------------------------
START:
ldi loop1register, 0xDA
ldi loop2register, 0x0F
ldi loop3register, 0x01
STARTSCHLEIFE:
inc loop3register
cpi loop3register, 0x00
brne STARTSCHLEIFE
ldi loop3register, 0x01
cp gregister, loop2register
brsh AN
rjmp AUS
AN:
ldi register, 0xC0
out PORTD, register
rjmp WEITERSCHLEIFE
AUS:
clr register
out PORTD, register
rjmp WEITERSCHLEIFE
WEITERSCHLEIFE:
dec loop2register
cpi loop2register, 0x00
brne STARTSCHLEIFE
ldi loop2register, 0x0F
inc loop1register
cpi loop1register, 0x00
brne STARTSCHLEIFE
LESEEINGANG
andi register, 0x04
breq PRUEFERECHTS
rjmp LANGSAMER
PRUEFERECHTS:
mov register, zregister
andi register, 0x08
breq PRUEFEOBEN
rjmp SCHNELLER
PRUEFEOBEN:
rjmp START
SCHNELLER:
ldi loop1register, 0x01
ldi loop2register, 0x01
ldi loop3register, 0xF0
rcall ENTPRELLSCHLEIFE
cpi sregister, 0x08
brne SCHNELLER7
rcall STUFE9
SCHNELLER7:
cpi sregister, 0x07
brne SCHNELLER6
rcall STUFE8
SCHNELLER6:
cpi sregister, 0x06
brne SCHNELLER5
rcall STUFE7
SCHNELLER5:
cpi sregister, 0x05
brne SCHNELLER4
rcall STUFE6
SCHNELLER4:
cpi sregister, 0x04
brne SCHNELLER3
rcall STUFE5
SCHNELLER3:
cpi sregister, 0x03
brne SCHNELLER2
rcall STUFE4
SCHNELLER2:
cpi sregister, 0x02
brne SCHNELLER1
rcall STUFE3
SCHNELLER1:
cpi sregister, 0x01
brne SCHNELLER0
rcall STUFE2
SCHNELLER0:
cpi sregister, 0x00
brne ENDESCHNELLER
call STUFE1
ENDESCHNELLER:
rjmp START
LANGSAMER:
ldi loop1register, 0x01
ldi loop2register, 0x01
ldi loop3register, 0xF0
rcall ENTPRELLSCHLEIFE
cpi sregister, 0x01
brne LANGSAMER1
rcall STUFE0
LANGSAMER1:
cpi sregister, 0x02
brne LANGSAMER2
rcall STUFE1
LANGSAMER2:
cpi sregister, 0x03
brne LANGSAMER3
rcall STUFE2
LANGSAMER3:
cpi sregister, 0x04
brne LANGSAMER4
rcall STUFE3
LANGSAMER4:
cpi sregister, 0x05
brne LANGSAMER5
rcall STUFE4
LANGSAMER5:
cpi sregister, 0x06
brne LANGSAMER6
rcall STUFE5
LANGSAMER6:
cpi sregister, 0x07
brne LANGSAMER7
rcall STUFE6
LANGSAMER7:
cpi sregister, 0x08
brne LANGSAMER8
rcall STUFE7
LANGSAMER8:
cpi sregister, 0x09
brne ENDELANGSAMER
call STUFE8
ENDELANGSAMER:
rjmp START
STUFE0:
ldi sregister, 0x00
ldi gregister, 0x00
;Geschwindigkeit auf LCD schreiben
ldi register,0x01
sts LCDDR0,register
ldi register,0x05
sts LCDDR5,register
ldi register,0x05
sts LCDDR10,register
ldi register, 0x01
sts LCDDR15,register
ret
STUFE1:
ldi sregister, 0x01
ldi gregister, 0x01
;Geschwindigkeit auf LCD schreiben
ldi register,0x00
sts LCDDR0,register
ldi register,0x01
sts LCDDR5,register
ldi register,0x01
sts LCDDR10,register
ldi register, 0x00
sts LCDDR15,register
ret
STUFE2:
ldi sregister, 0x02
ldi gregister, 0x02
;Geschwindigkeit auf LCD schreiben
ldi register,0x01
sts LCDDR0,register
ldi register,0x01
sts LCDDR5,register
ldi register,0x0E
sts LCDDR10,register
ldi register, 0x01
sts LCDDR15,register
ret
STUFE3:
ldi sregister, 0x03
ldi gregister, 0x03
;Geschwindigkeit auf LCD schreiben
ldi register,0x01
sts LCDDR0,register
ldi register,0x01
sts LCDDR5,register
ldi register,0x0B
sts LCDDR10,register
ldi register, 0x01
sts LCDDR15,register
ret
STUFE4:
ldi sregister, 0x04
ldi gregister, 0x05
;Geschwindigkeit auf LCD schreiben
ldi register,0x00
sts LCDDR0,register
ldi register,0x05
sts LCDDR5,register
ldi register,0x0B
sts LCDDR10,register
ldi register, 0x00
sts LCDDR15,register
ret
STUFE5:
ldi sregister, 0x05
ldi gregister, 0x07
;Geschwindigkeit auf LCD schreiben
ldi register,0x01
sts LCDDR0,register
ldi register,0x04
sts LCDDR5,register
ldi register,0x0B
sts LCDDR10,register
ldi register, 0x01
sts LCDDR15,register
ret
STUFE6:
ldi sregister, 0x06
ldi gregister, 0x09
;Geschwindigkeit auf LCD schreiben
ldi register,0x01
sts LCDDR0,register
ldi register,0x04
sts LCDDR5,register
ldi register,0x0F
sts LCDDR10,register
ldi register, 0x01
sts LCDDR15,register
ret
STUFE7:
ldi sregister, 0x07
ldi gregister, 0x0B
;Geschwindigkeit auf LCD schreiben
ldi register,0x01
sts LCDDR0,register
ldi register,0x05
sts LCDDR5,register
ldi register,0x01
sts LCDDR10,register
ldi register, 0x00
sts LCDDR15,register
ret
STUFE8:
ldi sregister, 0x08
ldi gregister, 0x0D
;Geschwindigkeit auf LCD schreiben
ldi register,0x01
sts LCDDR0,register
ldi register,0x05
sts LCDDR5,register
ldi register,0x0F
sts LCDDR10,register
ldi register, 0x01
sts LCDDR15,register
ret
STUFE9:
ldi sregister, 0x09
ldi gregister, 0x0F
;Geschwindigkeit auf LCD schreiben
ldi register,0x01
sts LCDDR0,register
ldi register,0x05
sts LCDDR5,register
ldi register,0x0B
sts LCDDR10,register
ldi register, 0x01
sts LCDDR15,register
ret
BESCHLEUNIGEN:
BREMSEN:
ENTPRELLSCHLEIFE:
inc loop2register
cpi loop2register, 0x00
brne ENTPRELLSCHLEIFE
ldi loop2register, 0x00
inc loop1register
cpi loop1register, 0x00
brne ENTPRELLSCHLEIFE
ret