On a 16f628a
Code:
@ DEVICE MCLR_OFF
@ DEVICE hs_osc
@ DEVICE wdt_off
@ DEVICE lvp_off
@ DEVICE protect_off
Define OSC 20
INTCON = 0
CMCON = 7
TRISA = 0
TRISB = 0
StepsRotating CON 93
RotatingMin CON 267
RotatingMax CON 1218
Position VAR WORD
PositionBefore VAR WORD
Counter VAR WORD
PositionBefore = 0
LR VAR BYTE
RotatingPos VAR WORD
Movement VAR WORD
ServoMotor VAR PORTB.1
GOSUB RoutineStartingPos
ES:
LR = 1
RotatingPos = RotatingMin
ES_HS:
ES_HS_Drehung:
WHILE 1 = 1
IF LR = 1 THEN
WHILE RotatingPos < RotatingMax
GOSUB RoutineRotate
RotatingPos = RotatingPos + StepsRotating
WEND
LR = 0
ENDIF
IF LR = 0 THEN
WHILE RotatingPos > RotatingMin
GOSUB RoutineRotate
RotatingPos = RotatingPos - StepsRotating
WEND
LR = 1
ENDIF
WEND
END
RoutineRotate:
FOR Movement = 0 TO 1000 / 20
Low ServoMotor
Pulsout ServoMotor,RotatingPos
Pause 20
NEXT Movement
RETURN
RoutineStartingPos:
FOR Counter = 0 TO 1000 / 20
Low ServoMotor
Pulsout ServoMotor,(RotatingMax+RotatingMin)/2
Pause 20
NEXT Counter
RETURN
Bookmarks