All pastes #904414 Raw Edit

Vermischtes

public text v1 · immutable
·published 2008-02-14 22:37 UTC
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