Hallo
hier mal der Code.
Code:
.include "m8def.inc"
; Motor dreht abwechselnt vorwärts und rückwärts
; Anschlüße Port B
; PB0 Takt
; PB1 Drehrichtung
; PB2 Enable
; PB3 H/F
; Alle Anderen nicht belegt.
.def temp0 = r16
.def temp1 = r17
.def temp2 = r18
.def temp3 = r19
.def temp4 = r20
.def temp5 = r21
.org 0x0000
rjmp start ; Reset Handler
start:
ldi temp0, 0xFF
ldi temp1, 0x00
ldi temp2, 0x00
ldi temp3, 0x00
ldi temp4, 0x00
ldi temp5, 0x00
out DDRB, temp0
ldi temp0, 0xFE
out PORTB, temp0
; cbi PortB, 3 ; Halb oder Voll Schritt
output:
sbic PortB, 0 ; Überspringe den nächsten Befehl, wenn das Bit 0 im Port gelöscht ist
rjmp ClrBitNow ; Springe zu ClrBitNow
sbi PortB, 0 ; Setze Bit 0 in PortB
rjmp Delay ; Springe BitReady
ClrBitNow:
cbi PortB, 0
Delay:
inc temp1
cpi temp1, 250 ; Drehgeschwindigkeit; größerer wert gleich langsamer
brne Delay
clr temp1
inc temp2
cpi temp2, 6 ; Drehgeschwindigkeit; größerer wert gleich langsamer
brne Delay
clr temp2
inc temp5
cpi temp5, 1 ; Drehgeschwindigkeit; größerer wert gleich langsamer
brne Delay
clr temp5
inc temp3
cpi temp3, 200 ; Fahrweg wie lang der motor Drehen soll.
brne output
clr temp3
inc temp4
cpi temp4, 1 ; Fahrweg wie lang der motor Drehen soll.
brne output
clr temp4
sbic PORTB, 1
rjmp ClrBitNow2 ; Springe zu ClrBitNow
sbi PortB, 1 ; Setze Bit 0 in PortB
rjmp output ; Springe BitReady
ClrBitNow2:
cbi PortB, 1
rjmp output
Schöne Grüße
Thomas
Lesezeichen