;-----------------------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